diff --git a/README.md b/README.md index d448c1b..7a9b6ff 100755 --- a/README.md +++ b/README.md @@ -87,7 +87,8 @@ The following environment variables are supported: * `USE_QEMU` (Default: `"0"`) - This enable the Qemu mode and set filesystem and image suffix if set to 1. + Setting to '1' enables the QEMU mode - creating an image that can be mounted via QEMU for an emulated + environment. These images include "-qemu" in the image file name. A simple example for building Raspbian: @@ -115,7 +116,7 @@ The following process is followed to build images: There are a number of different files and directories which can be used to control different parts of the build process: - - **00-run.sh** - A unix shell script. Needs to be made executable for it to run + - **00-run.sh** - A unix shell script. Needs to be made executable for it to run. - **00-run-chroot.sh** - A unix shell script which will be run in the chroot of the image build directory. Needs to be made executable for it to run. @@ -127,9 +128,11 @@ The following process is followed to build images: separated, per line. - **00-packages-nr** - As 00-packages, except these will be installed using - the ```--no-install-recommends -y``` parameters to apt-get - - **00-patches** - A directory containing patch files to be applied + - **00-patches** - A directory containing patch files to be applied, using quilt. + If a file named 'EDIT' is present in the directory, the build process will + be interrupted with a bash session, allowing an opportunity to create/revise + the patches. * If the stage directory contains files called "EXPORT_NOOBS" or "EXPORT_IMAGE" then add this stage to a list of images to generate @@ -156,6 +159,12 @@ continue: CONTINUE=1 ./build-docker.sh ``` +After successful build, the build container is by default removed. This may be undesired when making incremental changes to a customized build. To prevent the build script from remove the container add + +```bash +PRESERVE_CONTAINER=1 ./build-docker.sh +``` + There is a possibility that even when running from a docker container, the installation of `qemu-user-static` will silently fail when building the image because `binfmt-support` _must be enabled on the underlying kernel_. An easy @@ -224,14 +233,14 @@ If you wish to build up to a specified stage (such as building up to stage 2 for a lite system), place an empty file named `SKIP` in each of the `./stage` directories you wish not to include. -Then remove the `EXPORT*` files from `./stage4` (if building up to stage 2) or -from `./stage2` (if building a minimal system). +Then add an empty file named `SKIP_IMAGES` to `./stage4` (if building up to stage 2) or +to `./stage2` (if building a minimal system). ```bash # Example for building a lite system echo "IMG_NAME='Raspbian'" > config touch ./stage3/SKIP ./stage4/SKIP ./stage5/SKIP -rm stage4/EXPORT* stage5/EXPORT* +touch ./stage4/SKIP_IMAGES ./stage5/SKIP_IMAGES sudo ./build.sh # or ./build-docker.sh ``` diff --git a/build-docker.sh b/build-docker.sh index e0a9b90..16d20f5 100755 --- a/build-docker.sh +++ b/build-docker.sh @@ -21,6 +21,7 @@ fi CONTAINER_NAME=${CONTAINER_NAME:-pigen_work} CONTINUE=${CONTINUE:-0} +PRESERVE_CONTAINER=${PRESERVE_CONTAINER:-0} if [ "$*" != "" ] || [ -z "${IMG_NAME}" ]; then if [ -z "${IMG_NAME}" ]; then @@ -33,6 +34,7 @@ Usage: Optional environment arguments: ( = ) CONTAINER_NAME=pigen_work set a name for the build container CONTINUE=1 continue from a previously started container + PRESERVE_CONTAINER=1 keep build container even on successful build EOF exit 1 fi @@ -55,7 +57,7 @@ if [ "$CONTAINER_EXISTS" != "" ]; then trap "echo 'got CTRL+C... please wait 5s'; $DOCKER stop -t 5 ${CONTAINER_NAME}_cont" SIGINT SIGTERM time $DOCKER run --rm --privileged \ --volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \ - -e IMG_NAME=${IMG_NAME}\ + -e IMG_NAME="${IMG_NAME}"\ pi-gen \ bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && cd /pi-gen; ./build.sh; @@ -64,7 +66,7 @@ if [ "$CONTAINER_EXISTS" != "" ]; then else trap "echo 'got CTRL+C... please wait 5s'; $DOCKER stop -t 5 ${CONTAINER_NAME}" SIGINT SIGTERM time $DOCKER run --name "${CONTAINER_NAME}" --privileged \ - -e IMG_NAME=${IMG_NAME}\ + -e IMG_NAME="${IMG_NAME}"\ "${config_file[@]}" \ pi-gen \ bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && @@ -75,6 +77,10 @@ fi echo "copying results from deploy/" $DOCKER cp "${CONTAINER_NAME}":/pi-gen/deploy . ls -lah deploy -$DOCKER rm -v $CONTAINER_NAME + +# cleanup +if [ "$PRESERVE_CONTAINER" != "1" ]; then + $DOCKER rm -v $CONTAINER_NAME +fi echo "Done! Your image(s) should be in deploy/" diff --git a/build.sh b/build.sh index d72d4f5..ebeb46a 100755 --- a/build.sh +++ b/build.sh @@ -1,22 +1,23 @@ #!/bin/bash -e - +# shellcheck disable=SC2119,SC1091 run_sub_stage() { log "Begin ${SUB_STAGE_DIR}" - pushd ${SUB_STAGE_DIR} > /dev/null + pushd "${SUB_STAGE_DIR}" > /dev/null for i in {00..99}; do - if [ -f ${i}-debconf ]; then + if [ -f "${i}-debconf" ]; then log "Begin ${SUB_STAGE_DIR}/${i}-debconf" on_chroot << EOF debconf-set-selections < /dev/null + pushd "${STAGE_WORK_DIR}" > /dev/null if [ "${CLEAN}" = "1" ]; then rm -rf .pc - rm -rf *-pc + rm -rf ./*-pc fi - QUILT_PATCHES=${SUB_STAGE_DIR}/${i}-patches - SUB_STAGE_QUILT_PATCH_DIR="$(basename $SUB_STAGE_DIR)-pc" - mkdir -p $SUB_STAGE_QUILT_PATCH_DIR - ln -snf $SUB_STAGE_QUILT_PATCH_DIR .pc - if [ -e ${SUB_STAGE_DIR}/${i}-patches/EDIT ]; then + QUILT_PATCHES="${SUB_STAGE_DIR}/${i}-patches" + SUB_STAGE_QUILT_PATCH_DIR="$(basename "$SUB_STAGE_DIR")-pc" + mkdir -p "$SUB_STAGE_QUILT_PATCH_DIR" + ln -snf "$SUB_STAGE_QUILT_PATCH_DIR" .pc + if [ -e "${SUB_STAGE_DIR}/${i}-patches/EDIT" ]; then echo "Dropping into bash to edit patches..." bash fi @@ -80,20 +81,20 @@ EOF run_stage(){ log "Begin ${STAGE_DIR}" - STAGE=$(basename ${STAGE_DIR}) - pushd ${STAGE_DIR} > /dev/null - unmount ${WORK_DIR}/${STAGE} - STAGE_WORK_DIR=${WORK_DIR}/${STAGE} - ROOTFS_DIR=${STAGE_WORK_DIR}/rootfs + STAGE="$(basename "${STAGE_DIR}")" + pushd "${STAGE_DIR}" > /dev/null + unmount "${WORK_DIR}/${STAGE}" + STAGE_WORK_DIR="${WORK_DIR}/${STAGE}" + ROOTFS_DIR="${STAGE_WORK_DIR}"/rootfs if [ ! -f SKIP_IMAGES ]; then - if [ -f ${STAGE_DIR}/EXPORT_IMAGE ]; then + if [ -f "${STAGE_DIR}/EXPORT_IMAGE" ]; then EXPORT_DIRS="${EXPORT_DIRS} ${STAGE_DIR}" fi fi if [ ! -f SKIP ]; then if [ "${CLEAN}" = "1" ]; then - if [ -d ${ROOTFS_DIR} ]; then - rm -rf ${ROOTFS_DIR} + if [ -d "${ROOTFS_DIR}" ]; then + rm -rf "${ROOTFS_DIR}" fi fi if [ -x prerun.sh ]; then @@ -102,16 +103,16 @@ run_stage(){ log "End ${STAGE_DIR}/prerun.sh" fi for SUB_STAGE_DIR in ${STAGE_DIR}/*; do - if [ -d ${SUB_STAGE_DIR} ] && - [ ! -f ${SUB_STAGE_DIR}/SKIP ]; then + if [ -d "${SUB_STAGE_DIR}" ] && + [ ! -f "${SUB_STAGE_DIR}/SKIP" ]; then run_sub_stage fi done fi - unmount ${WORK_DIR}/${STAGE} - PREV_STAGE=${STAGE} - PREV_STAGE_DIR=${STAGE_DIR} - PREV_ROOTFS_DIR=${ROOTFS_DIR} + unmount "${WORK_DIR}/${STAGE}" + PREV_STAGE="${STAGE}" + PREV_STAGE_DIR="${STAGE_DIR}" + PREV_ROOTFS_DIR="${ROOTFS_DIR}" popd > /dev/null log "End ${STAGE_DIR}" } @@ -131,15 +132,17 @@ if [ -z "${IMG_NAME}" ]; then exit 1 fi -export USE_QEMU=${USE_QEMU:-0} -export IMG_DATE=${IMG_DATE:-"$(date +%Y-%m-%d)"} +export USE_QEMU="${USE_QEMU:-0}" +export IMG_DATE="${IMG_DATE:-"$(date +%Y-%m-%d)"}" -export BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" export SCRIPT_DIR="${BASE_DIR}/scripts" -export WORK_DIR=${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"} +export WORK_DIR="${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}" export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"} export LOG_FILE="${WORK_DIR}/build.log" +export BASE_DIR + export CLEAN export IMG_NAME export APT_PROXY @@ -162,29 +165,33 @@ export QUILT_NO_DIFF_INDEX=1 export QUILT_NO_DIFF_TIMESTAMPS=1 export QUILT_REFRESH_ARGS="-p ab" -source ${SCRIPT_DIR}/common -source ${SCRIPT_DIR}/dependencies_check +# shellcheck source=scripts/common +source "${SCRIPT_DIR}/common" +# shellcheck source=scripts/dependencies_check +source "${SCRIPT_DIR}/dependencies_check" -dependencies_check ${BASE_DIR}/depends +dependencies_check "${BASE_DIR}/depends" -mkdir -p ${WORK_DIR} +mkdir -p "${WORK_DIR}" log "Begin ${BASE_DIR}" -for STAGE_DIR in ${BASE_DIR}/stage*; do +for STAGE_DIR in "${BASE_DIR}/stage"*; do run_stage done CLEAN=1 for EXPORT_DIR in ${EXPORT_DIRS}; do STAGE_DIR=${BASE_DIR}/export-image + # shellcheck source=/dev/null source "${EXPORT_DIR}/EXPORT_IMAGE" - EXPORT_ROOTFS_DIR=${WORK_DIR}/$(basename ${EXPORT_DIR})/rootfs + EXPORT_ROOTFS_DIR=${WORK_DIR}/$(basename "${EXPORT_DIR}")/rootfs run_stage if [ "${USE_QEMU}" != "1" ]; then - if [ -e ${EXPORT_DIR}/EXPORT_NOOBS ]; then - source ${EXPORT_DIR}/EXPORT_NOOBS - STAGE_DIR=${BASE_DIR}/export-noobs + if [ -e "${EXPORT_DIR}/EXPORT_NOOBS" ]; then + # shellcheck source=/dev/null + source "${EXPORT_DIR}/EXPORT_NOOBS" + STAGE_DIR="${BASE_DIR}/export-noobs" run_stage fi fi diff --git a/export-image/00-allow-rerun/00-run.sh b/export-image/00-allow-rerun/00-run.sh index 1355b2e..f7c5b4e 100755 --- a/export-image/00-allow-rerun/00-run.sh +++ b/export-image/00-allow-rerun/00-run.sh @@ -1,13 +1,5 @@ #!/bin/bash -e -if [ -e ${ROOTFS_DIR}/etc/ld.so.preload ]; then - mv ${ROOTFS_DIR}/etc/ld.so.preload ${ROOTFS_DIR}/etc/ld.so.preload.disabled -fi - -if [ ! -e ${ROOTFS_DIR}/usr/sbin/policy-rc.d ]; then - install -m 744 files/policy-rc.d ${ROOTFS_DIR}/usr/sbin/ -fi - -if [ ! -x ${ROOTFS_DIR}/usr/bin/qemu-arm-static ]; then - cp /usr/bin/qemu-arm-static ${ROOTFS_DIR}/usr/bin/ +if [ ! -x "${ROOTFS_DIR}/usr/bin/qemu-arm-static" ]; then + cp /usr/bin/qemu-arm-static "${ROOTFS_DIR}/usr/bin/" fi diff --git a/export-image/00-allow-rerun/files/policy-rc.d b/export-image/00-allow-rerun/files/policy-rc.d deleted file mode 100644 index 1924710..0000000 --- a/export-image/00-allow-rerun/files/policy-rc.d +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exit 101 diff --git a/export-image/02-network/01-run.sh b/export-image/02-network/01-run.sh index e21b791..4150732 100755 --- a/export-image/02-network/01-run.sh +++ b/export-image/02-network/01-run.sh @@ -1,3 +1,3 @@ #!/bin/bash -e -install -m 644 files/resolv.conf ${ROOTFS_DIR}/etc/ +install -m 644 files/resolv.conf "${ROOTFS_DIR}/etc/" diff --git a/export-image/03-set-partuuid/00-run.sh b/export-image/03-set-partuuid/00-run.sh index 4b18405..29edc67 100755 --- a/export-image/03-set-partuuid/00-run.sh +++ b/export-image/03-set-partuuid/00-run.sh @@ -2,12 +2,12 @@ IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img" -IMGID="$(dd if=${IMG_FILE} skip=440 bs=1 count=4 2>/dev/null | xxd -e | cut -f 2 -d' ')" +IMGID="$(dd if="${IMG_FILE}" skip=440 bs=1 count=4 2>/dev/null | xxd -e | cut -f 2 -d' ')" BOOT_PARTUUID="${IMGID}-01" ROOT_PARTUUID="${IMGID}-02" -sed -i "s/BOOTDEV/PARTUUID=${BOOT_PARTUUID}/" ${ROOTFS_DIR}/etc/fstab -sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" ${ROOTFS_DIR}/etc/fstab +sed -i "s/BOOTDEV/PARTUUID=${BOOT_PARTUUID}/" "${ROOTFS_DIR}/etc/fstab" +sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" "${ROOTFS_DIR}/etc/fstab" -sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" ${ROOTFS_DIR}/boot/cmdline.txt +sed -i "s/ROOTDEV/PARTUUID=${ROOT_PARTUUID}/" "${ROOTFS_DIR}/boot/cmdline.txt" diff --git a/export-image/04-finalise/01-run.sh b/export-image/04-finalise/01-run.sh index f04c7ee..e8662a0 100755 --- a/export-image/04-finalise/01-run.sh +++ b/export-image/04-finalise/01-run.sh @@ -8,80 +8,75 @@ on_chroot << EOF hardlink -t /usr/share/doc EOF -if [ -d ${ROOTFS_DIR}/home/pi/.config ]; then - chmod 700 ${ROOTFS_DIR}/home/pi/.config +if [ -d "${ROOTFS_DIR}/home/pi/.config" ]; then + chmod 700 "${ROOTFS_DIR}/home/pi/.config" fi -rm -f ${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache -rm -f ${ROOTFS_DIR}/usr/sbin/policy-rc.d -rm -f ${ROOTFS_DIR}/usr/bin/qemu-arm-static -if [ "${USE_QEMU}" != "1" ]; then - if [ -e ${ROOTFS_DIR}/etc/ld.so.preload.disabled ]; then - mv ${ROOTFS_DIR}/etc/ld.so.preload.disabled ${ROOTFS_DIR}/etc/ld.so.preload - fi -fi +rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" +rm -f "${ROOTFS_DIR}/usr/bin/qemu-arm-static" -rm -f ${ROOTFS_DIR}/etc/apt/sources.list~ -rm -f ${ROOTFS_DIR}/etc/apt/trusted.gpg~ +rm -f "${ROOTFS_DIR}/etc/apt/sources.list~" +rm -f "${ROOTFS_DIR}/etc/apt/trusted.gpg~" -rm -f ${ROOTFS_DIR}/etc/passwd- -rm -f ${ROOTFS_DIR}/etc/group- -rm -f ${ROOTFS_DIR}/etc/shadow- -rm -f ${ROOTFS_DIR}/etc/gshadow- +rm -f "${ROOTFS_DIR}/etc/passwd-" +rm -f "${ROOTFS_DIR}/etc/group-" +rm -f "${ROOTFS_DIR}/etc/shadow-" +rm -f "${ROOTFS_DIR}/etc/gshadow-" -rm -f ${ROOTFS_DIR}/var/cache/debconf/*-old -rm -f ${ROOTFS_DIR}/var/lib/dpkg/*-old +rm -f "${ROOTFS_DIR}"/var/cache/debconf/*-old +rm -f "${ROOTFS_DIR}"/var/lib/dpkg/*-old -rm -f ${ROOTFS_DIR}/usr/share/icons/*/icon-theme.cache +rm -f "${ROOTFS_DIR}"/usr/share/icons/*/icon-theme.cache -rm -f ${ROOTFS_DIR}/var/lib/dbus/machine-id +rm -f "${ROOTFS_DIR}/var/lib/dbus/machine-id" -true > ${ROOTFS_DIR}/etc/machine-id +true > "${ROOTFS_DIR}/etc/machine-id" -ln -nsf /proc/mounts ${ROOTFS_DIR}/etc/mtab +ln -nsf /proc/mounts "${ROOTFS_DIR}/etc/mtab" -for _FILE in $(find ${ROOTFS_DIR}/var/log/ -type f); do - true > ${_FILE} -done +find "${ROOTFS_DIR}/var/log/" -type f -exec cp /dev/null {} \; rm -f "${ROOTFS_DIR}/root/.vnc/private.key" rm -f "${ROOTFS_DIR}/etc/vnc/updateid" -update_issue $(basename ${EXPORT_DIR}) -install -m 644 ${ROOTFS_DIR}/etc/rpi-issue ${ROOTFS_DIR}/boot/issue.txt -install files/LICENSE.oracle ${ROOTFS_DIR}/boot/ +update_issue "$(basename "${EXPORT_DIR}")" +install -m 644 "${ROOTFS_DIR}/etc/rpi-issue" "${ROOTFS_DIR}/boot/issue.txt" +install files/LICENSE.oracle "${ROOTFS_DIR}/boot/" cp "$ROOTFS_DIR/etc/rpi-issue" "$INFO_FILE" -firmware=$(zgrep "firmware as of" "$ROOTFS_DIR/usr/share/doc/raspberrypi-kernel/changelog.Debian.gz" | \ - head -n1 | \ - sed -n 's|.* \([^ ]*\)$|\1|p') -printf "\nFirmware: https://github.com/raspberrypi/firmware/tree/%s\n" "$firmware" >> "$INFO_FILE" +{ + firmware=$(zgrep "firmware as of" \ + "$ROOTFS_DIR/usr/share/doc/raspberrypi-kernel/changelog.Debian.gz" | \ + head -n1 | sed -n 's|.* \([^ ]*\)$|\1|p') + printf "\nFirmware: https://github.com/raspberrypi/firmware/tree/%s\n" "$firmware" -kernel=$(curl -s -L "https://github.com/raspberrypi/firmware/raw/$firmware/extra/git_hash") -printf "Kernel: https://github.com/raspberrypi/linux/tree/%s\n" "$kernel" >> "$INFO_FILE" + kernel="$(curl -s -L "https://github.com/raspberrypi/firmware/raw/$firmware/extra/git_hash")" + printf "Kernel: https://github.com/raspberrypi/linux/tree/%s\n" "$kernel" -uname=$(curl -s -L "https://github.com/raspberrypi/firmware/raw/$firmware/extra/uname_string7") -printf "Uname string: %s\n" "$uname" >> "$INFO_FILE" + uname="$(curl -s -L "https://github.com/raspberrypi/firmware/raw/$firmware/extra/uname_string7")" -printf "\nPackages:\n">> "$INFO_FILE" -dpkg -l --root "$ROOTFS_DIR" >> "$INFO_FILE" + printf "Uname string: %s\n" "$uname" + printf "\nPackages:\n" + dpkg -l --root "$ROOTFS_DIR" +} >> "$INFO_FILE" -ROOT_DEV=$(mount | grep "${ROOTFS_DIR} " | cut -f1 -d' ') +ROOT_DEV="$(mount | grep "${ROOTFS_DIR} " | cut -f1 -d' ')" -unmount ${ROOTFS_DIR} -zerofree -v ${ROOT_DEV} +unmount "${ROOTFS_DIR}" +zerofree -v "${ROOT_DEV}" -unmount_image ${IMG_FILE} +unmount_image "${IMG_FILE}" -mkdir -p ${DEPLOY_DIR} +mkdir -p "${DEPLOY_DIR}" -rm -f ${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip +rm -f "${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip" -pushd ${STAGE_WORK_DIR} > /dev/null -zip ${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip $(basename ${IMG_FILE}) +pushd "${STAGE_WORK_DIR}" > /dev/null +zip "${DEPLOY_DIR}/image_${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.zip" \ + "$(basename "${IMG_FILE}")" popd > /dev/null cp "$INFO_FILE" "$DEPLOY_DIR" diff --git a/export-image/prerun.sh b/export-image/prerun.sh index cec133c..0ac7181 100755 --- a/export-image/prerun.sh +++ b/export-image/prerun.sh @@ -2,21 +2,22 @@ IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img" -unmount_image ${IMG_FILE} +unmount_image "${IMG_FILE}" -rm -f ${IMG_FILE} +rm -f "${IMG_FILE}" -rm -rf ${ROOTFS_DIR} -mkdir -p ${ROOTFS_DIR} +rm -rf "${ROOTFS_DIR}" +mkdir -p "${ROOTFS_DIR}" -BOOT_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR}/boot --block-size=1 | cut -f 1) -TOTAL_SIZE=$(du --apparent-size -s ${EXPORT_ROOTFS_DIR} --exclude var/cache/apt/archives --block-size=1 | cut -f 1) +BOOT_SIZE=$(du --apparent-size -s "${EXPORT_ROOTFS_DIR}/boot" --block-size=1 | cut -f 1) +TOTAL_SIZE=$(du --apparent-size -s "${EXPORT_ROOTFS_DIR}" --exclude var/cache/apt/archives --block-size=1 | cut -f 1) ROUND_SIZE="$((4 * 1024 * 1024))" -IMG_SIZE=$(((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024) + ROUND_SIZE) / ROUND_SIZE * ROUND_SIZE)) +ROUNDED_ROOT_SECTOR=$(((2 * BOOT_SIZE + ROUND_SIZE) / ROUND_SIZE * ROUND_SIZE / 512 + 8192)) +IMG_SIZE=$(((BOOT_SIZE + TOTAL_SIZE + (800 * 1024 * 1024) + ROUND_SIZE - 1) / ROUND_SIZE * ROUND_SIZE)) -truncate -s ${IMG_SIZE} ${IMG_FILE} -fdisk -H 255 -S 63 ${IMG_FILE} < /dev/null -mkfs.ext4 -L rootfs -O $ROOT_FEATURES $ROOT_DEV > /dev/null +mkdosfs -n boot -F 32 -v "$BOOT_DEV" > /dev/null +mkfs.ext4 -L rootfs -O "$ROOT_FEATURES" "$ROOT_DEV" > /dev/null -mount -v $ROOT_DEV ${ROOTFS_DIR} -t ext4 -mkdir -p ${ROOTFS_DIR}/boot -mount -v $BOOT_DEV ${ROOTFS_DIR}/boot -t vfat +mount -v "$ROOT_DEV" "${ROOTFS_DIR}" -t ext4 +mkdir -p "${ROOTFS_DIR}/boot" +mount -v "$BOOT_DEV" "${ROOTFS_DIR}/boot" -t vfat -rsync -aHAXx --exclude var/cache/apt/archives ${EXPORT_ROOTFS_DIR}/ ${ROOTFS_DIR}/ +rsync -aHAXx --exclude var/cache/apt/archives "${EXPORT_ROOTFS_DIR}/" "${ROOTFS_DIR}/" diff --git a/export-noobs/00-release/00-run.sh b/export-noobs/00-release/00-run.sh index 25f62fd..5874944 100755 --- a/export-noobs/00-release/00-run.sh +++ b/export-noobs/00-release/00-run.sh @@ -2,35 +2,35 @@ NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}" -install -v -m 744 files/partition_setup.sh ${NOOBS_DIR}/ -install -v files/partitions.json ${NOOBS_DIR}/ -install -v files/os.json ${NOOBS_DIR}/ -install -v files/OS.png ${NOOBS_DIR}/ -install -v files/release_notes.txt ${NOOBS_DIR}/ +install -v -m 744 files/partition_setup.sh "${NOOBS_DIR}/" +install -v files/partitions.json "${NOOBS_DIR}/" +install -v files/os.json "${NOOBS_DIR}/" +install -v files/OS.png "${NOOBS_DIR}/" +install -v files/release_notes.txt "${NOOBS_DIR}/" -tar -v -c -C files/marketing -f ${NOOBS_DIR}/marketing.tar . +tar -v -c -C files/marketing -f "${NOOBS_DIR}/marketing.tar" . -BOOT_SIZE=$(xz --robot -l ${NOOBS_DIR}/boot.tar.xz | grep totals | cut -f 5) -ROOT_SIZE=$(xz --robot -l ${NOOBS_DIR}/root.tar.xz | grep totals | cut -f 5) +BOOT_SIZE="$(xz --robot -l "${NOOBS_DIR}/boot.tar.xz" | grep totals | cut -f 5)" +ROOT_SIZE="$(xz --robot -l "${NOOBS_DIR}/root.tar.xz" | grep totals | cut -f 5)" -BOOT_SIZE=$(expr ${BOOT_SIZE} / 1000000 \+ 1) -ROOT_SIZE=$(expr ${ROOT_SIZE} / 1000000 \+ 1) +BOOT_SIZE="$(( BOOT_SIZE / 1000000 + 1))" +ROOT_SIZE="$(( ROOT_SIZE / 1000000 + 1))" -BOOT_NOM=$(expr ${BOOT_SIZE} \* 3) -ROOT_NOM=$(expr ${ROOT_SIZE} \+ 400) +BOOT_NOM="$(( BOOT_SIZE * 3 ))" +ROOT_NOM="$(( ROOT_SIZE + 400 ))" -mv "${NOOBS_DIR}/OS.png" "${NOOBS_DIR}/$(echo ${NOOBS_NAME} | sed 's/ /_/g').png" +mv "${NOOBS_DIR}/OS.png" "${NOOBS_DIR}/${NOOBS_NAME// /_}.png" -sed ${NOOBS_DIR}/partitions.json -i -e "s|BOOT_SIZE|${BOOT_SIZE}|" -sed ${NOOBS_DIR}/partitions.json -i -e "s|ROOT_SIZE|${ROOT_SIZE}|" +sed "${NOOBS_DIR}/partitions.json" -i -e "s|BOOT_SIZE|${BOOT_SIZE}|" +sed "${NOOBS_DIR}/partitions.json" -i -e "s|ROOT_SIZE|${ROOT_SIZE}|" -sed ${NOOBS_DIR}/partitions.json -i -e "s|BOOT_NOM|${BOOT_NOM}|" -sed ${NOOBS_DIR}/partitions.json -i -e "s|ROOT_NOM|${ROOT_NOM}|" +sed "${NOOBS_DIR}/partitions.json" -i -e "s|BOOT_NOM|${BOOT_NOM}|" +sed "${NOOBS_DIR}/partitions.json" -i -e "s|ROOT_NOM|${ROOT_NOM}|" -sed ${NOOBS_DIR}/os.json -i -e "s|UNRELEASED|${IMG_DATE}|" -sed ${NOOBS_DIR}/os.json -i -e "s|NOOBS_NAME|${NOOBS_NAME}|" -sed ${NOOBS_DIR}/os.json -i -e "s|NOOBS_DESCRIPTION|${NOOBS_DESCRIPTION}|" +sed "${NOOBS_DIR}/os.json" -i -e "s|UNRELEASED|${IMG_DATE}|" +sed "${NOOBS_DIR}/os.json" -i -e "s|NOOBS_NAME|${NOOBS_NAME}|" +sed "${NOOBS_DIR}/os.json" -i -e "s|NOOBS_DESCRIPTION|${NOOBS_DESCRIPTION}|" -sed ${NOOBS_DIR}/release_notes.txt -i -e "s|UNRELEASED|${IMG_DATE}|" +sed "${NOOBS_DIR}/release_notes.txt" -i -e "s|UNRELEASED|${IMG_DATE}|" -cp -a ${NOOBS_DIR} ${DEPLOY_DIR}/ +cp -a "${NOOBS_DIR}" "${DEPLOY_DIR}/" diff --git a/export-noobs/00-release/files/os.json b/export-noobs/00-release/files/os.json index e48dcb8..a37e266 100644 --- a/export-noobs/00-release/files/os.json +++ b/export-noobs/00-release/files/os.json @@ -1,7 +1,7 @@ { "description": "NOOBS_DESCRIPTION", "feature_level": 35120124, - "kernel": "4.9", + "kernel": "4.14", "name": "NOOBS_NAME", "password": "raspberry", "release_date": "UNRELEASED", diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 2177cfe..1fee949 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,4 +1,41 @@ UNRELEASED: + * Fixed race between wifi-country.service and raspberrypi-net-mods.service + * Linux kernel 4.14.34+ + * Raspberry Pi firmware 5db8e4e1c63178e200d6fbea23ed4a9bf4656658 +2018-03-13: + * Raspberry Pi 3 B+ support + * WiFi is disabled until wireless regulatory domain is set (Pi 3 B+ only) + - The domain can be done through 'Raspberry Pi Configuration' (rc_gui), + 'raspi-config' or by setting 'country=' to an appropriate ISO 3166 + alpha2 country code in /etc/wpa_supplicant/wpa_supplicant.conf. + * Default wireless regulatory domain is now unset + * Added support to desktop for different screen sizes and resolutions, + including multiple preset options in Appearance Settings and pixel doubling + option in Raspberry Pi Configuration + * Version 2.1.16 of Thonny included + * Version 29.0.0.113 of Adobe PepperFlash player included + * Version 1.2.post1 of Pygame Zero included + * Bluetooth plugin now supports connection to Bluetooth LE HID devices + * Network plugin now indicates 5G-compatible APs + * Latest changes to Bluez ALSA service merged + - service now started on CLI boot as well as GUI boot + * Latest changes to dhcpcd networking plugin merged + * Improved support for running on pi-top devices + * Small design changes to PiX theme and icons + * Bug fix - hide spurious window resize handles + * Bug fix - Scratch 2 remote GPIO state block now works correctly + * Updated WiFi Firmware + - brcmfmac43455-sdio 7.45.154 + - brcmfmac43430-sdio 7.45.98.38 + * New packages: + - policykit-1 + - obconf + - python-buttonshim python3-buttonshim + - python-unicornhathd python3-unicornhathd + - python-pantilthat python3-pantilthat + * Linux kernel 4.9.80+ + * Raspberry Pi firmware 3347884c7df574bbabeff6dca63caf686e629699 +2017-11-29: * Added battery monitor plugin for taskbar - works on x86 images or first-generation Pi-Top * Added cutdown mode to PCManFM file manager to reduce complexity * Added ability to rename files in PCManFM by clicking name when selected diff --git a/export-noobs/prerun.sh b/export-noobs/prerun.sh index dafe654..1889567 100755 --- a/export-noobs/prerun.sh +++ b/export-noobs/prerun.sh @@ -2,14 +2,14 @@ IMG_FILE="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img" NOOBS_DIR="${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}" -unmount_image ${IMG_FILE} +unmount_image "${IMG_FILE}" -mkdir -p ${STAGE_WORK_DIR} -cp ${WORK_DIR}/export-image/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img ${STAGE_WORK_DIR}/ +mkdir -p "${STAGE_WORK_DIR}" +cp "${WORK_DIR}/export-image/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}.img" "${STAGE_WORK_DIR}/" -rm -rf ${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX} +rm -rf "${STAGE_WORK_DIR}/${IMG_DATE}-${IMG_NAME}${IMG_SUFFIX}" -PARTED_OUT=$(parted -s ${IMG_FILE} unit b print) +PARTED_OUT=$(parted -s "${IMG_FILE}" unit b print) BOOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \ | cut -d" " -f 2 | tr -d B) BOOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 1'| xargs echo -n \ @@ -20,21 +20,21 @@ ROOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \ ROOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^ 2'| xargs echo -n \ | cut -d" " -f 4 | tr -d B) -BOOT_DEV=$(losetup --show -f -o ${BOOT_OFFSET} --sizelimit ${BOOT_LENGTH} ${IMG_FILE}) -ROOT_DEV=$(losetup --show -f -o ${ROOT_OFFSET} --sizelimit ${ROOT_LENGTH} ${IMG_FILE}) +BOOT_DEV=$(losetup --show -f -o "${BOOT_OFFSET}" --sizelimit "${BOOT_LENGTH}" "${IMG_FILE}") +ROOT_DEV=$(losetup --show -f -o "${ROOT_OFFSET}" --sizelimit "${ROOT_LENGTH}" "${IMG_FILE}") echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH" echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH" -mkdir -p ${STAGE_WORK_DIR}/rootfs -mkdir -p ${NOOBS_DIR} +mkdir -p "${STAGE_WORK_DIR}/rootfs" +mkdir -p "${NOOBS_DIR}" -mount $ROOT_DEV ${STAGE_WORK_DIR}/rootfs -mount $BOOT_DEV ${STAGE_WORK_DIR}/rootfs/boot +mount "$ROOT_DEV" "${STAGE_WORK_DIR}/rootfs" +mount "$BOOT_DEV" "${STAGE_WORK_DIR}/rootfs/boot" ln -sv "/lib/systemd/system/apply_noobs_os_config.service" "$ROOTFS_DIR/etc/systemd/system/multi-user.target.wants/apply_noobs_os_config.service" -bsdtar --numeric-owner --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs/boot -cpf ${NOOBS_DIR}/boot.tar.xz . -umount ${STAGE_WORK_DIR}/rootfs/boot -bsdtar --numeric-owner --format gnutar --use-compress-program pxz -C ${STAGE_WORK_DIR}/rootfs --one-file-system -cpf ${NOOBS_DIR}/root.tar.xz . +bsdtar --numeric-owner --format gnutar --use-compress-program pxz -C "${STAGE_WORK_DIR}/rootfs/boot" -cpf "${NOOBS_DIR}/boot.tar.xz" . +umount "${STAGE_WORK_DIR}/rootfs/boot" +bsdtar --numeric-owner --format gnutar --use-compress-program pxz -C "${STAGE_WORK_DIR}/rootfs" --one-file-system -cpf "${NOOBS_DIR}/root.tar.xz" . -unmount_image ${IMG_FILE} +unmount_image "${IMG_FILE}" diff --git a/scripts/check_deps.sh b/scripts/check_deps.sh deleted file mode 100755 index e69de29..0000000 diff --git a/scripts/common b/scripts/common index f18fd89..efd867e 100644 --- a/scripts/common +++ b/scripts/common @@ -1,5 +1,5 @@ log (){ - date +"[%T] $@" | tee -a "${LOG_FILE}" + date +"[%T] $*" | tee -a "${LOG_FILE}" } export -f log @@ -15,10 +15,10 @@ bootstrap(){ local BOOTSTRAP_CMD=debootstrap fi - capsh --drop=cap_setfcap -- -c "${BOOTSTRAP_CMD} --components=main,contrib,non-free \ + capsh --drop=cap_setfcap -- "${BOOTSTRAP_CMD}" --components=main,contrib,non-free \ --arch armhf \ --keyring "${STAGE_DIR}/files/raspberrypi.gpg" \ - $1 $2 $3" || rmdir "$2/debootstrap" + "$1" "$2" "$3" || rmdir "$2/debootstrap" } export -f bootstrap diff --git a/scripts/dependencies_check b/scripts/dependencies_check index d649f0c..1b92a9c 100644 --- a/scripts/dependencies_check +++ b/scripts/dependencies_check @@ -10,11 +10,11 @@ dependencies_check() for depfile in "$@"; do if [[ -e "$depfile" ]]; then - deps="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < ${BASE_DIR}/depends)" + deps="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${BASE_DIR}/depends")" fi for dep in $deps; do - if ! hash ${dep%:*} 2>/dev/null; then + if ! hash "${dep%:*}" 2>/dev/null; then missing="${missing:+$missing }${dep#*:}" fi done diff --git a/scripts/release.sh b/scripts/release.sh deleted file mode 100755 index e69de29..0000000 diff --git a/stage0/00-configure-apt/00-run.sh b/stage0/00-configure-apt/00-run.sh index 7966ef1..9d21ffb 100755 --- a/stage0/00-configure-apt/00-run.sh +++ b/stage0/00-configure-apt/00-run.sh @@ -1,13 +1,13 @@ #!/bin/bash -e -install -m 644 files/sources.list ${ROOTFS_DIR}/etc/apt/ -install -m 644 files/raspi.list ${ROOTFS_DIR}/etc/apt/sources.list.d/ +install -m 644 files/sources.list "${ROOTFS_DIR}/etc/apt/" +install -m 644 files/raspi.list "${ROOTFS_DIR}/etc/apt/sources.list.d/" if [ -n "$APT_PROXY" ]; then - install -m 644 files/51cache ${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache - sed ${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache -i -e "s|APT_PROXY|${APT_PROXY}|" + install -m 644 files/51cache "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" + sed "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" -i -e "s|APT_PROXY|${APT_PROXY}|" else - rm -f ${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache + rm -f "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" fi on_chroot apt-key add - < files/raspberrypi.gpg.key diff --git a/stage0/00-configure-apt/files/sources.list b/stage0/00-configure-apt/files/sources.list index f13c50c..45e5210 100644 --- a/stage0/00-configure-apt/files/sources.list +++ b/stage0/00-configure-apt/files/sources.list @@ -1,3 +1,3 @@ -deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi +deb http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi # Uncomment line below then 'apt-get update' to enable 'apt-get source' -#deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi +#deb-src http://raspbian.raspberrypi.org/raspbian/ stretch main contrib non-free rpi diff --git a/stage0/prerun.sh b/stage0/prerun.sh index 14c09c3..7c09b02 100755 --- a/stage0/prerun.sh +++ b/stage0/prerun.sh @@ -1,5 +1,5 @@ #!/bin/bash -e -if [ ! -d ${ROOTFS_DIR} ]; then - bootstrap stretch ${ROOTFS_DIR} http://mirrordirector.raspbian.org/raspbian/ +if [ ! -d "${ROOTFS_DIR}" ]; then + bootstrap stretch "${ROOTFS_DIR}" http://raspbian.raspberrypi.org/raspbian/ fi diff --git a/stage1/00-boot-files/00-run.sh b/stage1/00-boot-files/00-run.sh index 2c976a8..bc61397 100755 --- a/stage1/00-boot-files/00-run.sh +++ b/stage1/00-boot-files/00-run.sh @@ -1,4 +1,4 @@ #!/bin/bash -e -install -m 644 files/cmdline.txt ${ROOTFS_DIR}/boot/ -install -m 644 files/config.txt ${ROOTFS_DIR}/boot/ +install -m 644 files/cmdline.txt "${ROOTFS_DIR}/boot/" +install -m 644 files/config.txt "${ROOTFS_DIR}/boot/" diff --git a/stage1/01-sys-tweaks/00-run.sh b/stage1/01-sys-tweaks/00-run.sh index 8758288..c94045a 100755 --- a/stage1/01-sys-tweaks/00-run.sh +++ b/stage1/01-sys-tweaks/00-run.sh @@ -1,9 +1,8 @@ #!/bin/bash -e -install -d ${ROOTFS_DIR}/etc/systemd/system/getty@tty1.service.d -install -m 644 files/noclear.conf ${ROOTFS_DIR}/etc/systemd/system/getty@tty1.service.d/noclear.conf -install -m 744 files/policy-rc.d ${ROOTFS_DIR}/usr/sbin/policy-rc.d #TODO: Necessary in systemd? -install -v -m 644 files/fstab ${ROOTFS_DIR}/etc/fstab +install -d "${ROOTFS_DIR}/etc/systemd/system/getty@tty1.service.d" +install -m 644 files/noclear.conf "${ROOTFS_DIR}/etc/systemd/system/getty@tty1.service.d/noclear.conf" +install -v -m 644 files/fstab "${ROOTFS_DIR}/etc/fstab" on_chroot << EOF echo "root:root" | chpasswd diff --git a/stage1/01-sys-tweaks/files/policy-rc.d b/stage1/01-sys-tweaks/files/policy-rc.d deleted file mode 100755 index 1924710..0000000 --- a/stage1/01-sys-tweaks/files/policy-rc.d +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -exit 101 diff --git a/stage1/02-net-tweaks/00-run.sh b/stage1/02-net-tweaks/00-run.sh index 174b9f8..96a1774 100755 --- a/stage1/02-net-tweaks/00-run.sh +++ b/stage1/02-net-tweaks/00-run.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -install -m 644 files/ipv6.conf ${ROOTFS_DIR}/etc/modprobe.d/ipv6.conf -install -m 644 files/hostname ${ROOTFS_DIR}/etc/hostname +install -m 644 files/ipv6.conf "${ROOTFS_DIR}/etc/modprobe.d/ipv6.conf" +install -m 644 files/hostname "${ROOTFS_DIR}/etc/hostname" -ln -sf /dev/null ${ROOTFS_DIR}/etc/systemd/network/99-default.link +ln -sf /dev/null "${ROOTFS_DIR}/etc/systemd/network/99-default.link" diff --git a/stage1/prerun.sh b/stage1/prerun.sh index ebb5d35..9acd13c 100755 --- a/stage1/prerun.sh +++ b/stage1/prerun.sh @@ -1,5 +1,5 @@ #!/bin/bash -e -if [ ! -d ${ROOTFS_DIR} ]; then +if [ ! -d "${ROOTFS_DIR}" ]; then copy_previous fi diff --git a/stage2/00-copies-and-fills/00-run.sh b/stage2/00-copies-and-fills/00-run.sh deleted file mode 100755 index 4b3a849..0000000 --- a/stage2/00-copies-and-fills/00-run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -e - -touch ${ROOTFS_DIR}/spindle_install diff --git a/stage2/00-copies-and-fills/02-run.sh b/stage2/00-copies-and-fills/02-run.sh deleted file mode 100755 index c579d6a..0000000 --- a/stage2/00-copies-and-fills/02-run.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -e - -rm -f ${ROOTFS_DIR}/spindle_install diff --git a/stage2/01-sys-tweaks/01-run.sh b/stage2/01-sys-tweaks/01-run.sh index 07edf17..ce3615b 100755 --- a/stage2/01-sys-tweaks/01-run.sh +++ b/stage2/01-sys-tweaks/01-run.sh @@ -1,15 +1,15 @@ #!/bin/bash -e -install -m 755 files/resize2fs_once ${ROOTFS_DIR}/etc/init.d/ +install -m 755 files/resize2fs_once "${ROOTFS_DIR}/etc/init.d/" -install -d ${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d -install -m 644 files/ttyoutput.conf ${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d/ +install -d "${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d" +install -m 644 files/ttyoutput.conf "${ROOTFS_DIR}/etc/systemd/system/rc-local.service.d/" -install -m 644 files/50raspi ${ROOTFS_DIR}/etc/apt/apt.conf.d/ +install -m 644 files/50raspi "${ROOTFS_DIR}/etc/apt/apt.conf.d/" -install -m 644 files/console-setup ${ROOTFS_DIR}/etc/default/ +install -m 644 files/console-setup "${ROOTFS_DIR}/etc/default/" -install -m 755 files/rc.local ${ROOTFS_DIR}/etc/ +install -m 755 files/rc.local "${ROOTFS_DIR}/etc/" on_chroot << EOF systemctl disable hwclock.sh @@ -21,15 +21,7 @@ EOF if [ "${USE_QEMU}" = "1" ]; then echo "enter QEMU mode" - install -m 644 files/90-qemu.rules ${ROOTFS_DIR}/etc/udev/rules.d/ - if [ -e ${ROOTFS_DIR}/etc/ld.so.preload.disabled ]; then - rm ${ROOTFS_DIR}/etc/ld.so.preload.disabled - touch ${ROOTFS_DIR}/etc/ld.so.preload.disabled - fi - if [ -e ${ROOTFS_DIR}/etc/ld.so.preload ]; then - rm ${ROOTFS_DIR}/etc/ld.so.preload - touch ${ROOTFS_DIR}/etc/ld.so.preload - fi + install -m 644 files/90-qemu.rules "${ROOTFS_DIR}/etc/udev/rules.d/" on_chroot << EOF systemctl disable resize2fs_once EOF @@ -42,7 +34,7 @@ fi on_chroot << \EOF for GRP in input spi i2c gpio; do - groupadd -f -r $GRP + groupadd -f -r "$GRP" done EOF @@ -54,7 +46,7 @@ on_chroot << EOF usermod --pass='*' root EOF -rm -f ${ROOTFS_DIR}/etc/ssh/ssh_host_*_key* +rm -f "${ROOTFS_DIR}/etc/ssh/"ssh_host_*_key* # Dirty hack, ... otherwise the build script says in the next step that it cant diff --git a/stage2/02-net-tweaks/01-run.sh b/stage2/02-net-tweaks/01-run.sh index a96b556..d21419e 100755 --- a/stage2/02-net-tweaks/01-run.sh +++ b/stage2/02-net-tweaks/01-run.sh @@ -1,8 +1,8 @@ #!/bin/bash -e -install -v -d ${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d -install -v -m 644 files/wait.conf ${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/ +install -v -d "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d" +install -v -m 644 files/wait.conf "${ROOTFS_DIR}/etc/systemd/system/dhcpcd.service.d/" -install -v -d ${ROOTFS_DIR}/etc/wpa_supplicant -install -v -m 600 files/wpa_supplicant.conf ${ROOTFS_DIR}/etc/wpa_supplicant/ +install -v -d "${ROOTFS_DIR}/etc/wpa_supplicant" +install -v -m 600 files/wpa_supplicant.conf "${ROOTFS_DIR}/etc/wpa_supplicant/" diff --git a/stage2/02-net-tweaks/files/wpa_supplicant.conf b/stage2/02-net-tweaks/files/wpa_supplicant.conf index c58b871..0fc335e 100644 --- a/stage2/02-net-tweaks/files/wpa_supplicant.conf +++ b/stage2/02-net-tweaks/files/wpa_supplicant.conf @@ -1,3 +1,2 @@ -country=GB ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 diff --git a/stage2/prerun.sh b/stage2/prerun.sh index ebb5d35..9acd13c 100755 --- a/stage2/prerun.sh +++ b/stage2/prerun.sh @@ -1,5 +1,5 @@ #!/bin/bash -e -if [ ! -d ${ROOTFS_DIR} ]; then +if [ ! -d "${ROOTFS_DIR}" ]; then copy_previous fi diff --git a/stage3/prerun.sh b/stage3/prerun.sh index ebb5d35..9acd13c 100755 --- a/stage3/prerun.sh +++ b/stage3/prerun.sh @@ -1,5 +1,5 @@ #!/bin/bash -e -if [ ! -d ${ROOTFS_DIR} ]; then +if [ ! -d "${ROOTFS_DIR}" ]; then copy_previous fi