summaryrefslogtreecommitdiffstats
path: root/remote
diff options
context:
space:
mode:
Diffstat (limited to 'remote')
-rw-r--r--remote/modules/kernel/kernel.build10
-rw-r--r--remote/rootfs/rootfs-stage31/rootfs-stage31.build3
-rw-r--r--remote/rootfs/rootfs-stage32/rootfs-stage32.build20
-rwxr-xr-xremote/setup_target54
4 files changed, 52 insertions, 35 deletions
diff --git a/remote/modules/kernel/kernel.build b/remote/modules/kernel/kernel.build
index 59bc8e99..a1a1fcd1 100644
--- a/remote/modules/kernel/kernel.build
+++ b/remote/modules/kernel/kernel.build
@@ -3,7 +3,7 @@ fetch_source() {
if [ "x$PACKET_MANAGER" == "xapt" ]; then
pdebug "apt-ing kernel source"
apt-get install -y dpkg-dev || perror "Installing dpkg-dev failed."
- apt-get source linux-image-${KERNEL_VERSION} || perror "Fetching kernel source failed."
+ apt-get source linux-image-${KERNEL_CURRENT_VERSION} || perror "Fetching kernel source failed."
[ -z "$(ls -d linux-*/)" ] && perror "Source directory not found."
[ ! -e ksrc ] && ln -s "$(ls -d linux-*/)" "ksrc"
elif [ "x$PACKET_MANAGER" == "xzypper" ]; then
@@ -29,6 +29,10 @@ fetch_source() {
# fix pc speaker
./patch-speaker
+
+ # remember the current kernel version
+ echo "${KERNEL_CURRENT_VERSION}" > ksrc/KVERSION
+
}
build() {
@@ -116,8 +120,8 @@ patch_aufs() {
git clone "git://aufs.git.sourceforge.net/gitroot/aufs/aufs3-standalone.git" || perror "Cloning aufs3 failed."
fi
# get the needed version
- [ ! -z ${KERNEL_VERSION} ] && local NEEDED_BRANCH=$(echo $KERNEL_VERSION | awk -F "." '{print $1"."$2}') \
- || perror "KERNEL_VERSION not set, this should not happen!"
+ [ ! -z ${KERNEL_CURRENT_VERSION} ] && local NEEDED_BRANCH=$(echo $KERNEL_CURRENT_VERSION | awk -F "." '{print $1"."$2}') \
+ || perror "KERNEL_CURRENT_VERSION not set, this should not happen!"
pinfo "Getting branch origin/$NEEDED_BRANCH"
cd "$MODULE_DIR/aufs3-standalone" || perror "Could not CD to aufs3-standalone"
git checkout "origin/aufs$NEEDED_BRANCH"
diff --git a/remote/rootfs/rootfs-stage31/rootfs-stage31.build b/remote/rootfs/rootfs-stage31/rootfs-stage31.build
index d547d7a4..d9f28636 100644
--- a/remote/rootfs/rootfs-stage31/rootfs-stage31.build
+++ b/remote/rootfs/rootfs-stage31/rootfs-stage31.build
@@ -19,7 +19,10 @@ build() {
}
post_copy() {
+ pinfo "Generating rootfs for Stage 3.1 ..."
generate_rootfs
+
+ # copy kernel, modules and firmware
copy_kernel_modules
copy_firmware
copy_kernel
diff --git a/remote/rootfs/rootfs-stage32/rootfs-stage32.build b/remote/rootfs/rootfs-stage32/rootfs-stage32.build
index 39c96ccc..93094f72 100644
--- a/remote/rootfs/rootfs-stage32/rootfs-stage32.build
+++ b/remote/rootfs/rootfs-stage32/rootfs-stage32.build
@@ -104,21 +104,12 @@ post_copy() {
sed -i -r 's/^blacklist.*pcspkr/#&/g' "$TARGET_BUILD_DIR/etc/modprobe.d/blacklist.conf"
echo "minilinux-$(hostname)" > "${TARGET_BUILD_DIR}/etc/hostname"
- # check for kernel modules, if not present copy from system
- if [ ! -d ${TARGET_BUILD_DIR}/lib/modules ]; then
- pinfo "Copying modules for kernel ${KERNEL_VERSION}..."
- copy_kernel_modules
- else
- pinfo "Not copying kernel modules from system, as '${TARGET_BUILD_DIR}/lib/modules' already exists."
- fi
- # check for firmware, if not present copy from system
- if [ ! -d ${TARGET_BUILD_DIR}/lib/firmware ]; then
- pinfo "Copying firmware for kernel ${KERNEL_VERSION}..."
- copy_firmware
- else
- pinfo "Not copying firmware from system, as '${TARGET_BUILD_DIR}/lib/firmware' already exists."
- fi
+
+ # copy kernel, modules and firmware
+ copy_kernel_modules
+ copy_firmware
+ copy_kernel
# Try to fetch distro logo
if [ ! -s "$TARGET_BUILD_DIR/etc/distro.png" ]; then
@@ -134,6 +125,5 @@ post_copy() {
fi
fi
- copy_kernel
}
diff --git a/remote/setup_target b/remote/setup_target
index 1638f392..f5df66ad 100755
--- a/remote/setup_target
+++ b/remote/setup_target
@@ -227,6 +227,30 @@ generate_target() {
pinfo "Activated modules in '${TARGET}':"
pinfo "\t$(echo ${MODULES})"
+ # we need a bit of special logic for kernel specifically
+ # to check if the built version is corresponding to the
+ # current kernel version. If not we had a kernel update
+ # and need to ask the user what to do
+ if [[ "$MODULES" == *kernel* ]]; then
+ # if so, check what kernels have been built
+ if [ -e "${MODULES_DIR}/kernel/ksrc/KVERSION" ]; then
+ local BUILT_KERNEL_VERSION=$(cat "${MODULES_DIR}/kernel/ksrc/KVERSION")
+ if [[ "${BUILT_KERNEL_VERSION}" != "${KERNEL_CURRENT_VERSION}" ]]; then
+ pinfo "The built kernel (${BUILT_KERNEL_VERSION}) is older than the running one (${KERNEL_CURRENT_VERSION})!"
+ pinfo "Do you want to clean the old kernel and re-build for the new version? (Y/n)"
+ read USER_INPUT
+ if [ "x$USER_INPUT" == "xy" -o "x$USER_INPUT" == "xY" -o "x$USER_INPUT" == "x" ]; then
+ clean_kernel_module --force
+ # cleaning the module is enough as it forces to rebuild.
+ fi
+ fi
+ else
+ # KVERSION is not found.
+ pdebug "KVERSION not found under remote/modules/kernel/ksrc/KVERSION"
+ pdebug "Ignoring. If errors arise, either write your KVERSION manually or clean the kernel."
+ fi
+ fi
+
# copy basic libs
pinfo "Copying libc and ld-linux used by ${SHELL}"
tarcopy "$(list_basic_libs)" "${TARGET_BUILD_DIR}"
@@ -255,11 +279,6 @@ process_module() {
pinfo ">>>>>>>>>>>>>>>>> Processing module [ $MODULE ]"
TOOL_STR="[${MODULE}]"
if [ -d "${MODULE_DIR}" ]; then
-
- #[ "x$DEBUG" != "x1" ] \
- # && echo "Logging to ${TOOL_DIR}/${TOOL}/stage32.log" \
- # && exec 6>&1 > ${TOOL_DIR}/${TOOL}/stage32.log
- # TODO: Make above work with the new logging system (add function to logging.inc to switch logfile)
cd "${MODULE_DIR}" || perror "Module dir '${MODULE_DIR}' seems to exist, but cd to it failed."
pinfo "## Reading config"
read_config
@@ -299,10 +318,8 @@ process_module() {
copy_static_data
pinfo "## Post copy"
post_copy
- # reset pipes
- #[ "x$DEBUG" != "x1" ] && exec 1>&6 6>&-
- # TODO
- calc_size #sets MODULE_BUILD_SIZE
+ # set MODULE_BUILD_SIZE
+ calc_size
pinfo "Module completed. Total size: ${MODULE_BUILD_SIZE}"
else
pwarning "Module directory for '$MODULE' not found."
@@ -310,10 +327,8 @@ process_module() {
}
post_process_target() {
-
local TOOL_STR="$TOOL_STR post_process_target:"
-
- #move systemd files from /lib to /etc/lib
+ # move systemd files from /lib to /etc/lib
pinfo "move systemd files from /lib/systemd to /etc/systemd"
if [ -d "${TARGET_BUILD_DIR}/lib/systemd" ]; then
cd "${TARGET_BUILD_DIR}/lib"
@@ -404,12 +419,17 @@ clean_module() {
}
clean_kernel_module() {
+ local CLEAN=0
+ if [ "x$1" == "x--force" ]; then
+ CLEAN=1
+ else
+ pinfo "It will take a long time to rebuild, are you sure? [y/N]"
+ read USER_INPUT
+ [ "x$USER_INPUT" == "xy" ] && CLEAN=1
+ fi
+
pinfo "Cleaning kernel module (including sources and compiled stuff)."
- pinfo "It will take a long time to rebuild, are you sure? [y/N]"
- read USER_INPUT
- if [ "x$USER_INPUT" == "xy" ]; then
- pinfo "Confirmed, going on..."
- # clean kernel module
+ if [[ $CLEAN == 1 ]]; then
cd "${TARGET_DIR}/kernel" || perror "Could not cd to ${TARGET_DIR}/kernel"
if [ -e build ]; then
rm -rf build || perror "Could not delete ${TARGET_DIR}/kernel/build"