From 18b945ffb2ed771e7b234af30882f048c27c5e65 Mon Sep 17 00:00:00 2001 From: Kevin Stone Date: Sun, 11 Aug 2019 10:44:00 -0500 Subject: [PATCH 01/66] Moved git-hash determination to passed in build variable (#273) --- build-docker.sh | 5 +++++ build.sh | 2 ++ scripts/common | 3 --- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/build-docker.sh b/build-docker.sh index 3d7634df34..583bf6a175 100755 --- a/build-docker.sh +++ b/build-docker.sh @@ -52,6 +52,9 @@ if [ -z "${IMG_NAME}" ]; then exit 1 fi +# Ensure the Git Hash is recorded before entering the docker container +GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"} + CONTAINER_EXISTS=$(${DOCKER} ps -a --filter name="${CONTAINER_NAME}" -q) CONTAINER_RUNNING=$(${DOCKER} ps --filter name="${CONTAINER_NAME}" -q) if [ "${CONTAINER_RUNNING}" != "" ]; then @@ -73,6 +76,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 \ --volume "${CONFIG_FILE}":/config:ro \ + -e "GIT_HASH=${GIT_HASH}" \ --volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \ pi-gen \ bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && @@ -83,6 +87,7 @@ else trap 'echo "got CTRL+C... please wait 5s" && ${DOCKER} stop -t 5 ${CONTAINER_NAME}' SIGINT SIGTERM time ${DOCKER} run --name "${CONTAINER_NAME}" --privileged \ --volume "${CONFIG_FILE}":/config:ro \ + -e "GIT_HASH=${GIT_HASH}" \ pi-gen \ bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && cd /pi-gen; ./build.sh ${BUILD_OPTS} && diff --git a/build.sh b/build.sh index 3e56629d7f..93faf720f9 100755 --- a/build.sh +++ b/build.sh @@ -168,6 +168,8 @@ export WPA_PASSWORD export WPA_COUNTRY export ENABLE_SSH="${ENABLE_SSH:-0}" +export GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"} + export BASE_DIR export CLEAN diff --git a/scripts/common b/scripts/common index f264755b34..68fab54ef1 100644 --- a/scripts/common +++ b/scripts/common @@ -94,9 +94,6 @@ on_chroot() { export -f on_chroot update_issue() { - local GIT_HASH - GIT_HASH=$(git rev-parse HEAD) echo -e "Raspberry Pi reference ${IMG_DATE}\nGenerated using ${PI_GEN}, ${PI_GEN_REPO}, ${GIT_HASH}, ${1}" > "${ROOTFS_DIR}/etc/rpi-issue" } export -f update_issue - From 8110eb48916b1ee39c1e4eed6783a5a142814ffd Mon Sep 17 00:00:00 2001 From: Christophe Hurpeau Date: Sun, 11 Aug 2019 17:50:11 +0200 Subject: [PATCH 02/66] Remove unused interfaces file (#322) --- stage1/02-net-tweaks/files/interfaces | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 stage1/02-net-tweaks/files/interfaces diff --git a/stage1/02-net-tweaks/files/interfaces b/stage1/02-net-tweaks/files/interfaces deleted file mode 100644 index 88a8c6adf5..0000000000 --- a/stage1/02-net-tweaks/files/interfaces +++ /dev/null @@ -1,4 +0,0 @@ -auto lo - -iface lo inet loopback -iface eth0 inet dhcp From d1f7a389055eae207009dd1a19d971d4b873b73e Mon Sep 17 00:00:00 2001 From: Joshua Bussdieker Date: Wed, 14 Aug 2019 03:26:55 -0700 Subject: [PATCH 03/66] Support regional config settings (#323) --- README.md | 16 ++++++++++++++++ build.sh | 7 +++++++ stage0/01-locale/00-debconf | 4 ++-- stage2/01-sys-tweaks/00-debconf | 4 ++-- stage2/03-set-timezone/02-run.sh | 2 +- 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f15f07631a..15affd0e26 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,22 @@ The following environment variables are supported: 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. + * `LOCALE_DEFAULT` (Default: "en_GB.UTF-8" ) + + Default system locale. + + * `KEYBOARD_KEYMAP` (Default: "gb" ) + + Default keyboard keymap. + + * `KEYBOARD_LAYOUT` (Default: "English (UK)" ) + + Default keyboard layout. + + * `TIMEZONE_DEFAULT` (Default: "Europe/London" ) + + Default keyboard layout. + * `FIRST_USER_NAME` (Default: "pi" ) Username for the first user diff --git a/build.sh b/build.sh index 93faf720f9..81ef26f147 100755 --- a/build.sh +++ b/build.sh @@ -168,6 +168,13 @@ export WPA_PASSWORD export WPA_COUNTRY export ENABLE_SSH="${ENABLE_SSH:-0}" +export LOCALE_DEFAULT="${LOCALE_DEFAULT:-en_GB.UTF-8}" + +export KEYBOARD_KEYMAP="${KEYBOARD_KEYMAP:-gb}" +export KEYBOARD_LAYOUT="${KEYBOARD_LAYOUT:-English (UK)}" + +export TIMEZONE_DEFAULT="${TIMEZONE_DEFAULT:-Europe/London}" + export GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"} export BASE_DIR diff --git a/stage0/01-locale/00-debconf b/stage0/01-locale/00-debconf index e9d6348a34..b0ad3e4afb 100644 --- a/stage0/01-locale/00-debconf +++ b/stage0/01-locale/00-debconf @@ -1,6 +1,6 @@ # Locales to be generated: # Choices: All locales, aa_DJ ISO-8859-1, aa_DJ.UTF-8 UTF-8, aa_ER UTF-8, aa_ER@saaho UTF-8, aa_ET UTF-8, af_ZA ISO-8859-1, af_ZA.UTF-8 UTF-8, ak_GH UTF-8, am_ET UTF-8, an_ES ISO-8859-15, an_ES.UTF-8 UTF-8, anp_IN UTF-8, ar_AE ISO-8859-6, ar_AE.UTF-8 UTF-8, ar_BH ISO-8859-6, ar_BH.UTF-8 UTF-8, ar_DZ ISO-8859-6, ar_DZ.UTF-8 UTF-8, ar_EG ISO-8859-6, ar_EG.UTF-8 UTF-8, ar_IN UTF-8, ar_IQ ISO-8859-6, ar_IQ.UTF-8 UTF-8, ar_JO ISO-8859-6, ar_JO.UTF-8 UTF-8, ar_KW ISO-8859-6, ar_KW.UTF-8 UTF-8, ar_LB ISO-8859-6, ar_LB.UTF-8 UTF-8, ar_LY ISO-8859-6, ar_LY.UTF-8 UTF-8, ar_MA ISO-8859-6, ar_MA.UTF-8 UTF-8, ar_OM ISO-8859-6, ar_OM.UTF-8 UTF-8, ar_QA ISO-8859-6, ar_QA.UTF-8 UTF-8, ar_SA ISO-8859-6, ar_SA.UTF-8 UTF-8, ar_SD ISO-8859-6, ar_SD.UTF-8 UTF-8, ar_SS UTF-8, ar_SY ISO-8859-6, ar_SY.UTF-8 UTF-8, ar_TN ISO-8859-6, ar_TN.UTF-8 UTF-8, ar_YE ISO-8859-6, ar_YE.UTF-8 UTF-8, as_IN UTF-8, ast_ES ISO-8859-15, ast_ES.UTF-8 UTF-8, ayc_PE UTF-8, az_AZ UTF-8, be_BY CP1251, be_BY.UTF-8 UTF-8, be_BY@latin UTF-8, bem_ZM UTF-8, ber_DZ UTF-8, ber_MA UTF-8, bg_BG CP1251, bg_BG.UTF-8 UTF-8, bho_IN UTF-8, bn_BD UTF-8, bn_IN UTF-8, bo_CN UTF-8, bo_IN UTF-8, br_FR ISO-8859-1, br_FR.UTF-8 UTF-8, br_FR@euro ISO-8859-15, brx_IN UTF-8, bs_BA ISO-8859-2, bs_BA.UTF-8 UTF-8, byn_ER UTF-8, ca_AD ISO-8859-15, ca_AD.UTF-8 UTF-8, ca_ES ISO-8859-1, ca_ES.UTF-8 UTF-8, ca_ES.UTF-8@valencia UTF-8, ca_ES@euro ISO-8859-15, ca_ES@valencia ISO-8859-15, ca_FR ISO-8859-15, ca_FR.UTF-8 UTF-8, ca_IT ISO-8859-15, ca_IT.UTF-8 UTF-8, cmn_TW UTF-8, crh_UA UTF-8, cs_CZ ISO-8859-2, cs_CZ.UTF-8 UTF-8, csb_PL UTF-8, cv_RU UTF-8, cy_GB ISO-8859-14, cy_GB.UTF-8 UTF-8, da_DK ISO-8859-1, da_DK.UTF-8 UTF-8, de_AT ISO-8859-1, de_AT.UTF-8 UTF-8, de_AT@euro ISO-8859-15, de_BE ISO-8859-1, de_BE.UTF-8 UTF-8, de_BE@euro ISO-8859-15, de_CH ISO-8859-1, de_CH.UTF-8 UTF-8, de_DE ISO-8859-1, de_DE.UTF-8 UTF-8, de_DE@euro ISO-8859-15, de_LI.UTF-8 UTF-8, de_LU ISO-8859-1, de_LU.UTF-8 UTF-8, de_LU@euro ISO-8859-15, doi_IN UTF-8, dv_MV UTF-8, dz_BT UTF-8, el_CY ISO-8859-7, el_CY.UTF-8 UTF-8, el_GR ISO-8859-7, el_GR.UTF-8 UTF-8, en_AG UTF-8, en_AU ISO-8859-1, en_AU.UTF-8 UTF-8, en_BW ISO-8859-1, en_BW.UTF-8 UTF-8, en_CA ISO-8859-1, en_CA.UTF-8 UTF-8, en_DK ISO-8859-1, en_DK.ISO-8859-15 ISO-8859-15, en_DK.UTF-8 UTF-8, en_GB ISO-8859-1, en_GB.ISO-8859-15 ISO-8859-15, en_GB.UTF-8 UTF-8, en_HK ISO-8859-1, en_HK.UTF-8 UTF-8, en_IE ISO-8859-1, en_IE.UTF-8 UTF-8, en_IE@euro ISO-8859-15, en_IN UTF-8, en_NG UTF-8, en_NZ ISO-8859-1, en_NZ.UTF-8 UTF-8, en_PH ISO-8859-1, en_PH.UTF-8 UTF-8, en_SG ISO-8859-1, en_SG.UTF-8 UTF-8, en_US ISO-8859-1, en_US.ISO-8859-15 ISO-8859-15, en_US.UTF-8 UTF-8, en_ZA ISO-8859-1, en_ZA.UTF-8 UTF-8, en_ZM UTF-8, en_ZW ISO-8859-1, en_ZW.UTF-8 UTF-8, eo ISO-8859-3, eo.UTF-8 UTF-8, es_AR ISO-8859-1, es_AR.UTF-8 UTF-8, es_BO ISO-8859-1, es_BO.UTF-8 UTF-8, es_CL ISO-8859-1, es_CL.UTF-8 UTF-8, es_CO ISO-8859-1, es_CO.UTF-8 UTF-8, es_CR ISO-8859-1, es_CR.UTF-8 UTF-8, es_CU UTF-8, es_DO ISO-8859-1, es_DO.UTF-8 UTF-8, es_EC ISO-8859-1, es_EC.UTF-8 UTF-8, es_ES ISO-8859-1, es_ES.UTF-8 UTF-8, es_ES@euro ISO-8859-15, es_GT ISO-8859-1, es_GT.UTF-8 UTF-8, es_HN ISO-8859-1, es_HN.UTF-8 UTF-8, es_MX ISO-8859-1, es_MX.UTF-8 UTF-8, es_NI ISO-8859-1, es_NI.UTF-8 UTF-8, es_PA ISO-8859-1, es_PA.UTF-8 UTF-8, es_PE ISO-8859-1, es_PE.UTF-8 UTF-8, es_PR ISO-8859-1, es_PR.UTF-8 UTF-8, es_PY ISO-8859-1, es_PY.UTF-8 UTF-8, es_SV ISO-8859-1, es_SV.UTF-8 UTF-8, es_US ISO-8859-1, es_US.UTF-8 UTF-8, es_UY ISO-8859-1, es_UY.UTF-8 UTF-8, es_VE ISO-8859-1, es_VE.UTF-8 UTF-8, et_EE ISO-8859-1, et_EE.ISO-8859-15 ISO-8859-15, et_EE.UTF-8 UTF-8, eu_ES ISO-8859-1, eu_ES.UTF-8 UTF-8, eu_ES@euro ISO-8859-15, eu_FR ISO-8859-1, eu_FR.UTF-8 UTF-8, eu_FR@euro ISO-8859-15, fa_IR UTF-8, ff_SN UTF-8, fi_FI ISO-8859-1, fi_FI.UTF-8 UTF-8, fi_FI@euro ISO-8859-15, fil_PH UTF-8, fo_FO ISO-8859-1, fo_FO.UTF-8 UTF-8, fr_BE ISO-8859-1, fr_BE.UTF-8 UTF-8, fr_BE@euro ISO-8859-15, fr_CA ISO-8859-1, fr_CA.UTF-8 UTF-8, fr_CH ISO-8859-1, fr_CH.UTF-8 UTF-8, fr_FR ISO-8859-1, fr_FR.UTF-8 UTF-8, fr_FR@euro ISO-8859-15, fr_LU ISO-8859-1, fr_LU.UTF-8 UTF-8, fr_LU@euro ISO-8859-15, fur_IT UTF-8, fy_DE UTF-8, fy_NL UTF-8, ga_IE ISO-8859-1, ga_IE.UTF-8 UTF-8, ga_IE@euro ISO-8859-15, gd_GB ISO-8859-15, gd_GB.UTF-8 UTF-8, gez_ER UTF-8, gez_ER@abegede UTF-8, gez_ET UTF-8, gez_ET@abegede UTF-8, gl_ES ISO-8859-1, gl_ES.UTF-8 UTF-8, gl_ES@euro ISO-8859-15, gu_IN UTF-8, gv_GB ISO-8859-1, gv_GB.UTF-8 UTF-8, ha_NG UTF-8, hak_TW UTF-8, he_IL ISO-8859-8, he_IL.UTF-8 UTF-8, hi_IN UTF-8, hne_IN UTF-8, hr_HR ISO-8859-2, hr_HR.UTF-8 UTF-8, hsb_DE ISO-8859-2, hsb_DE.UTF-8 UTF-8, ht_HT UTF-8, hu_HU ISO-8859-2, hu_HU.UTF-8 UTF-8, hy_AM UTF-8, hy_AM.ARMSCII-8 ARMSCII-8, ia_FR UTF-8, id_ID ISO-8859-1, id_ID.UTF-8 UTF-8, ig_NG UTF-8, ik_CA UTF-8, is_IS ISO-8859-1, is_IS.UTF-8 UTF-8, it_CH ISO-8859-1, it_CH.UTF-8 UTF-8, it_IT ISO-8859-1, it_IT.UTF-8 UTF-8, it_IT@euro ISO-8859-15, iu_CA UTF-8, iw_IL ISO-8859-8, iw_IL.UTF-8 UTF-8, ja_JP.EUC-JP EUC-JP, ja_JP.UTF-8 UTF-8, ka_GE GEORGIAN-PS, ka_GE.UTF-8 UTF-8, kk_KZ PT154, kk_KZ RK1048, kk_KZ.UTF-8 UTF-8, kl_GL ISO-8859-1, kl_GL.UTF-8 UTF-8, km_KH UTF-8, kn_IN UTF-8, ko_KR.EUC-KR EUC-KR, ko_KR.UTF-8 UTF-8, kok_IN UTF-8, ks_IN UTF-8, ks_IN@devanagari UTF-8, ku_TR ISO-8859-9, ku_TR.UTF-8 UTF-8, kw_GB ISO-8859-1, kw_GB.UTF-8 UTF-8, ky_KG UTF-8, lb_LU UTF-8, lg_UG ISO-8859-10, lg_UG.UTF-8 UTF-8, li_BE UTF-8, li_NL UTF-8, lij_IT UTF-8, lo_LA UTF-8, lt_LT ISO-8859-13, lt_LT.UTF-8 UTF-8, lv_LV ISO-8859-13, lv_LV.UTF-8 UTF-8, lzh_TW UTF-8, mag_IN UTF-8, mai_IN UTF-8, mg_MG ISO-8859-15, mg_MG.UTF-8 UTF-8, mhr_RU UTF-8, mi_NZ ISO-8859-13, mi_NZ.UTF-8 UTF-8, mk_MK ISO-8859-5, mk_MK.UTF-8 UTF-8, ml_IN UTF-8, mn_MN UTF-8, mni_IN UTF-8, mr_IN UTF-8, ms_MY ISO-8859-1, ms_MY.UTF-8 UTF-8, mt_MT ISO-8859-3, mt_MT.UTF-8 UTF-8, my_MM UTF-8, nan_TW UTF-8, nan_TW@latin UTF-8, nb_NO ISO-8859-1, nb_NO.UTF-8 UTF-8, nds_DE UTF-8, nds_NL UTF-8, ne_NP UTF-8, nhn_MX UTF-8, niu_NU UTF-8, niu_NZ UTF-8, nl_AW UTF-8, nl_BE ISO-8859-1, nl_BE.UTF-8 UTF-8, nl_BE@euro ISO-8859-15, nl_NL ISO-8859-1, nl_NL.UTF-8 UTF-8, nl_NL@euro ISO-8859-15, nn_NO ISO-8859-1, nn_NO.UTF-8 UTF-8, nr_ZA UTF-8, nso_ZA UTF-8, oc_FR ISO-8859-1, oc_FR.UTF-8 UTF-8, om_ET UTF-8, om_KE ISO-8859-1, om_KE.UTF-8 UTF-8, or_IN UTF-8, os_RU UTF-8, pa_IN UTF-8, pa_PK UTF-8, pap_AN UTF-8, pap_AW UTF-8, pap_CW UTF-8, pl_PL ISO-8859-2, pl_PL.UTF-8 UTF-8, ps_AF UTF-8, pt_BR ISO-8859-1, pt_BR.UTF-8 UTF-8, pt_PT ISO-8859-1, pt_PT.UTF-8 UTF-8, pt_PT@euro ISO-8859-15, quz_PE UTF-8, ro_RO ISO-8859-2, ro_RO.UTF-8 UTF-8, ru_RU ISO-8859-5, ru_RU.CP1251 CP1251, ru_RU.KOI8-R KOI8-R, ru_RU.UTF-8 UTF-8, ru_UA KOI8-U, ru_UA.UTF-8 UTF-8, rw_RW UTF-8, sa_IN UTF-8, sat_IN UTF-8, sc_IT UTF-8, sd_IN UTF-8, sd_IN@devanagari UTF-8, se_NO UTF-8, shs_CA UTF-8, si_LK UTF-8, sid_ET UTF-8, sk_SK ISO-8859-2, sk_SK.UTF-8 UTF-8, sl_SI ISO-8859-2, sl_SI.UTF-8 UTF-8, so_DJ ISO-8859-1, so_DJ.UTF-8 UTF-8, so_ET UTF-8, so_KE ISO-8859-1, so_KE.UTF-8 UTF-8, so_SO ISO-8859-1, so_SO.UTF-8 UTF-8, sq_AL ISO-8859-1, sq_AL.UTF-8 UTF-8, sq_MK UTF-8, sr_ME UTF-8, sr_RS UTF-8, sr_RS@latin UTF-8, ss_ZA UTF-8, st_ZA ISO-8859-1, st_ZA.UTF-8 UTF-8, sv_FI ISO-8859-1, sv_FI.UTF-8 UTF-8, sv_FI@euro ISO-8859-15, sv_SE ISO-8859-1, sv_SE.ISO-8859-15 ISO-8859-15, sv_SE.UTF-8 UTF-8, sw_KE UTF-8, sw_TZ UTF-8, szl_PL UTF-8, ta_IN UTF-8, ta_LK UTF-8, te_IN UTF-8, tg_TJ KOI8-T, tg_TJ.UTF-8 UTF-8, th_TH TIS-620, th_TH.UTF-8 UTF-8, the_NP UTF-8, ti_ER UTF-8, ti_ET UTF-8, tig_ER UTF-8, tk_TM UTF-8, tl_PH ISO-8859-1, tl_PH.UTF-8 UTF-8, tn_ZA UTF-8, tr_CY ISO-8859-9, tr_CY.UTF-8 UTF-8, tr_TR ISO-8859-9, tr_TR.UTF-8 UTF-8, ts_ZA UTF-8, tt_RU UTF-8, tt_RU@iqtelif UTF-8, ug_CN UTF-8, uk_UA KOI8-U, uk_UA.UTF-8 UTF-8, unm_US UTF-8, ur_IN UTF-8, ur_PK UTF-8, uz_UZ ISO-8859-1, uz_UZ.UTF-8 UTF-8, uz_UZ@cyrillic UTF-8, ve_ZA UTF-8, vi_VN UTF-8, wa_BE ISO-8859-1, wa_BE.UTF-8 UTF-8, wa_BE@euro ISO-8859-15, wae_CH UTF-8, wal_ET UTF-8, wo_SN UTF-8, xh_ZA ISO-8859-1, xh_ZA.UTF-8 UTF-8, yi_US CP1255, yi_US.UTF-8 UTF-8, yo_NG UTF-8, yue_HK UTF-8, zh_CN GB2312, zh_CN.GB18030 GB18030, zh_CN.GBK GBK, zh_CN.UTF-8 UTF-8, zh_HK BIG5-HKSCS, zh_HK.UTF-8 UTF-8, zh_SG GB2312, zh_SG.GBK GBK, zh_SG.UTF-8 UTF-8, zh_TW BIG5, zh_TW.EUC-TW EUC-TW, zh_TW.UTF-8 UTF-8, zu_ZA ISO-8859-1, zu_ZA.UTF-8 UTF-8 -locales locales/locales_to_be_generated multiselect en_GB.UTF-8 UTF-8 +locales locales/locales_to_be_generated multiselect ${LOCALE_DEFAULT} UTF-8 # Default locale for the system environment: # Choices: None, C.UTF-8, en_GB.UTF-8 -locales locales/default_environment_locale select en_GB.UTF-8 +locales locales/default_environment_locale select ${LOCALE_DEFAULT} diff --git a/stage2/01-sys-tweaks/00-debconf b/stage2/01-sys-tweaks/00-debconf index 96aa9b0882..c13e3b1949 100644 --- a/stage2/01-sys-tweaks/00-debconf +++ b/stage2/01-sys-tweaks/00-debconf @@ -15,7 +15,7 @@ keyboard-configuration keyboard-configuration/altgr select The default for the k keyboard-configuration keyboard-configuration/model select Generic 105-key (Intl) PC # Keymap to use: # Choices: American English, Albanian, Arabic, Asturian, Bangladesh, Belarusian, Bengali, Belgian, Bosnian, Brazilian, British English, Bulgarian, Bulgarian (phonetic layout), Burmese, Canadian French, Canadian Multilingual, Catalan, Chinese, Croatian, Czech, Danish, Dutch, Dvorak, Dzongkha, Esperanto, Estonian, Ethiopian, Finnish, French, Georgian, German, Greek, Gujarati, Gurmukhi, Hebrew, Hindi, Hungarian, Icelandic, Irish, Italian, Japanese, Kannada, Kazakh, Khmer, Kirghiz, Korean, Kurdish (F layout), Kurdish (Q layout), Lao, Latin American, Latvian, Lithuanian, Macedonian, Malayalam, Nepali, Northern Sami, Norwegian, Persian, Philippines, Polish, Portuguese, Punjabi, Romanian, Russian, Serbian (Cyrillic), Sindhi, Sinhala, Slovak, Slovenian, Spanish, Swedish, Swiss French, Swiss German, Tajik, Tamil, Telugu, Thai, Tibetan, Turkish (F layout), Turkish (Q layout), Ukrainian, Uyghur, Vietnamese -keyboard-configuration keyboard-configuration/xkb-keymap select gb +keyboard-configuration keyboard-configuration/xkb-keymap select ${KEYBOARD_KEYMAP} # Compose key: # Choices: No compose key, Right Alt (AltGr), Right Control, Right Logo key, Menu key, Left Logo key, Caps Lock keyboard-configuration keyboard-configuration/compose select No compose key @@ -23,4 +23,4 @@ keyboard-configuration keyboard-configuration/compose select No compose key keyboard-configuration keyboard-configuration/ctrl_alt_bksp boolean true # Keyboard layout: # Choices: English (UK), English (UK) - English (UK\, Colemak), English (UK) - English (UK\, Dvorak with UK punctuation), English (UK) - English (UK\, Dvorak), English (UK) - English (UK\, Macintosh international), English (UK) - English (UK\, Macintosh), English (UK) - English (UK\, extended WinKeys), English (UK) - English (UK\, international with dead keys), Other -keyboard-configuration keyboard-configuration/variant select English (UK) +keyboard-configuration keyboard-configuration/variant select ${KEYBOARD_LAYOUT} diff --git a/stage2/03-set-timezone/02-run.sh b/stage2/03-set-timezone/02-run.sh index 67cbfd3afe..96b22c7f4e 100755 --- a/stage2/03-set-timezone/02-run.sh +++ b/stage2/03-set-timezone/02-run.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -echo "Europe/London" > "${ROOTFS_DIR}/etc/timezone" +echo "${TIMEZONE_DEFAULT}" > "${ROOTFS_DIR}/etc/timezone" rm "${ROOTFS_DIR}/etc/localtime" on_chroot << EOF From 28f344144c78a0d9fbe8371c9b6f3bd231fec25f Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 12 Aug 2019 11:14:35 +0100 Subject: [PATCH 04/66] stage5: add scratch3 --- export-noobs/00-release/files/release_notes.txt | 1 + stage5/00-install-extras/00-packages | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 8a7f2c8ac3..92971cdc7b 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,6 +1,7 @@ UNRELEASED: * Epiphany/Web removed * ntfs-3g included + * Scratch 3 added to full image 2019-07-10: * Clearer options for switching of Pi 4 video output in Raspberry Pi Configuration * Option added to Appearance Settings to move taskbar to second monitor diff --git a/stage5/00-install-extras/00-packages b/stage5/00-install-extras/00-packages index 9d6a6682df..0deac8384d 100644 --- a/stage5/00-install-extras/00-packages +++ b/stage5/00-install-extras/00-packages @@ -1,6 +1,6 @@ mu-editor sonic-pi -scratch nuscratch scratch2 +scratch nuscratch scratch2 scratch3 smartsim minecraft-pi python-minecraftpi From c1ff2b1cacf52d6092b92be77a47481d11ead486 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 12 Aug 2019 11:15:58 +0100 Subject: [PATCH 05/66] stage4: rename thonny package --- stage4/00-install-packages/00-packages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stage4/00-install-packages/00-packages b/stage4/00-install-packages/00-packages index aac5493406..7dadd73061 100644 --- a/stage4/00-install-packages/00-packages +++ b/stage4/00-install-packages/00-packages @@ -1,5 +1,5 @@ python python3-pygame python-pygame python-tk -python3 python3-tk python3-thonny +python3 python3-tk thonny python3-pgzero python-serial python3-serial python-picamera python3-picamera From a016561600292047971b65d034f0e6eaeadd1122 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 7 May 2019 17:51:18 +0100 Subject: [PATCH 06/66] export-image: Remove interfaces.dpkg-old --- export-image/04-finalise/01-run.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/export-image/04-finalise/01-run.sh b/export-image/04-finalise/01-run.sh index 9215dec550..c2de08055c 100755 --- a/export-image/04-finalise/01-run.sh +++ b/export-image/04-finalise/01-run.sh @@ -49,6 +49,8 @@ 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" +rm -f "${ROOTFS_DIR}/etc/network/interfaces.dpkg-old" + update_issue "$(basename "${EXPORT_DIR}")" install -m 644 "${ROOTFS_DIR}/etc/rpi-issue" "${ROOTFS_DIR}/boot/issue.txt" From c49261d7567f2548af28aa3f3262c017b2f44f4f Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 3 Jun 2019 11:31:29 +0100 Subject: [PATCH 07/66] stage2: install pciutils --- export-noobs/00-release/files/release_notes.txt | 1 + stage2/01-sys-tweaks/00-packages | 1 + 2 files changed, 2 insertions(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 92971cdc7b..b507576f4a 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -2,6 +2,7 @@ UNRELEASED: * Epiphany/Web removed * ntfs-3g included * Scratch 3 added to full image + * pciutils added 2019-07-10: * Clearer options for switching of Pi 4 video output in Raspberry Pi Configuration * Option added to Appearance Settings to move taskbar to second monitor diff --git a/stage2/01-sys-tweaks/00-packages b/stage2/01-sys-tweaks/00-packages index 6ed90e6518..f370556337 100644 --- a/stage2/01-sys-tweaks/00-packages +++ b/stage2/01-sys-tweaks/00-packages @@ -26,3 +26,4 @@ rng-tools ethtool vl805fw ntfs-3g +pciutils From 77833ba929734536ce257b7dbdd39ee7336903bb Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 3 Jun 2019 11:32:22 +0100 Subject: [PATCH 08/66] cmdline.txt: remove dwc_otg.lpm_enable=0 --- stage1/00-boot-files/files/cmdline.txt | 2 +- stage2/01-sys-tweaks/00-patches/07-resize-init.diff | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/stage1/00-boot-files/files/cmdline.txt b/stage1/00-boot-files/files/cmdline.txt index 2b0634bf04..b815bd89db 100644 --- a/stage1/00-boot-files/files/cmdline.txt +++ b/stage1/00-boot-files/files/cmdline.txt @@ -1 +1 @@ -dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait +console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait diff --git a/stage2/01-sys-tweaks/00-patches/07-resize-init.diff b/stage2/01-sys-tweaks/00-patches/07-resize-init.diff index 07016415e8..8c41357e8f 100644 --- a/stage2/01-sys-tweaks/00-patches/07-resize-init.diff +++ b/stage2/01-sys-tweaks/00-patches/07-resize-init.diff @@ -1,5 +1,5 @@ ---- a/rootfs/boot/cmdline.txt -+++ b/rootfs/boot/cmdline.txt +--- stage2.orig/rootfs/boot/cmdline.txt ++++ stage2/rootfs/boot/cmdline.txt @@ -1 +1 @@ --dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait -+dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh +-console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait ++console=serial0,115200 console=tty1 root=ROOTDEV rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh From e8460beb3b2698b7f4c3bb04e03237ee7f8944e0 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Wed, 14 Aug 2019 15:54:50 +0100 Subject: [PATCH 09/66] Revert "export-image: Remove interfaces.dpkg-old" This reverts commit a016561600292047971b65d034f0e6eaeadd1122. --- export-image/04-finalise/01-run.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/export-image/04-finalise/01-run.sh b/export-image/04-finalise/01-run.sh index c2de08055c..9215dec550 100755 --- a/export-image/04-finalise/01-run.sh +++ b/export-image/04-finalise/01-run.sh @@ -49,8 +49,6 @@ 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" -rm -f "${ROOTFS_DIR}/etc/network/interfaces.dpkg-old" - update_issue "$(basename "${EXPORT_DIR}")" install -m 644 "${ROOTFS_DIR}/etc/rpi-issue" "${ROOTFS_DIR}/boot/issue.txt" From 00c22ab57e4de6a17fd3e9d142426838ec17d36b Mon Sep 17 00:00:00 2001 From: Russ Kubes Date: Tue, 27 Aug 2019 12:16:24 -0500 Subject: [PATCH 10/66] Updated export-image to not depend on fake-hwclock and hardlink. (#326) --- export-image/04-finalise/01-run.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/export-image/04-finalise/01-run.sh b/export-image/04-finalise/01-run.sh index 9215dec550..0864639b23 100755 --- a/export-image/04-finalise/01-run.sh +++ b/export-image/04-finalise/01-run.sh @@ -4,8 +4,12 @@ IMG_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img" INFO_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.info" on_chroot << EOF -/etc/init.d/fake-hwclock stop -hardlink -t /usr/share/doc +if [ -x /etc/init.d/fake-hwclock ]; then + /etc/init.d/fake-hwclock stop +fi +if hash hardlink 2>/dev/null; then + hardlink -t /usr/share/doc +fi EOF if [ -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/.config" ]; then From d1ed4a2982fc37fbd69e71cdc408dfa174f66b84 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Wed, 18 Sep 2019 14:53:35 +0100 Subject: [PATCH 11/66] Include rpi-eeprom --- export-noobs/00-release/files/release_notes.txt | 1 + stage2/01-sys-tweaks/00-packages | 1 + 2 files changed, 2 insertions(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index b507576f4a..b167c77de3 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,4 +1,5 @@ UNRELEASED: + * rpi-eeprom included * Epiphany/Web removed * ntfs-3g included * Scratch 3 added to full image diff --git a/stage2/01-sys-tweaks/00-packages b/stage2/01-sys-tweaks/00-packages index f370556337..16b9350f36 100644 --- a/stage2/01-sys-tweaks/00-packages +++ b/stage2/01-sys-tweaks/00-packages @@ -27,3 +27,4 @@ ethtool vl805fw ntfs-3g pciutils +rpi-eeprom From 652780757be196ac7292a9e1d3a8182a2b6c0de2 Mon Sep 17 00:00:00 2001 From: fpicalausa Date: Mon, 23 Sep 2019 18:11:58 +0900 Subject: [PATCH 12/66] Update config.txt to replace lirc-rpi with gpio-ir (#328) The example for enabling IR transmission in `/boot/config.txt` is still using the deprecated `lirc-rpi` overlay. The documentation in `/boot/overlays/README` indicates that this overlay has been deprecated in favor of `gpio-ir` / `gpio-ir-tx`. This updates the actual config.txt to suggest `gpio-ir` instead of `lirc-rpi`. --- stage1/00-boot-files/files/config.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/stage1/00-boot-files/files/config.txt b/stage1/00-boot-files/files/config.txt index 578d736c9f..548f4accc2 100644 --- a/stage1/00-boot-files/files/config.txt +++ b/stage1/00-boot-files/files/config.txt @@ -47,8 +47,9 @@ #dtparam=i2s=on #dtparam=spi=on -# Uncomment this to enable the lirc-rpi module -#dtoverlay=lirc-rpi +# Uncomment this to enable infrared communication. +#dtoverlay=gpio-ir,gpio_pin=17 +#dtoverlay=gpio-ir-tx,gpio_pin=18 # Additional overlays and parameters are documented /boot/overlays/README From 6538d5babff4e684e986eaee723cce107b5c37c3 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 23 Sep 2019 09:52:35 +0100 Subject: [PATCH 13/66] Update release notes --- .../00-release/files/release_notes.txt | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index b167c77de3..ba260bc307 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,9 +1,44 @@ UNRELEASED: + * New icon theme for file manager icons + * Appearance Settings - option for identical desktop on both monitors + * Appearance Settings - option to show different desktop icons on both monitors + * Taskbar automatically moved to monitor 0 if monitor 1 not found at boot + * Switching of audio output between two HDMI devices added to volume plugin + * Switching of audio input devices added to volume plugin + * .asoundrc (ALSA config file) now uses 'plug' values to support more devices + * Audio Settings tool modified to integrate more closely with volume plugin to reduce duplicated code + * Screen Configuration tool now shows separate menus for resolution and refresh rate + * Primary and active monitor settings removed from Screen Configuration tool + * Overscan support added for FKMS driver + * New keyboard shortcuts added - Ctrl-Alt-End brings up shutdown menu; Ctrl-Alt-M moves taskbar between monitors + * Latest changes to Bluez ALSA interface integrated to improve connection to Bluetooth audio devices + * Version 3.2 of Thonny added + * Version 74 of Chromium added + * Version 3.0.8 of VLC added + * Version 32.0.0.255 of Flash player added + * Version 6.5.0 of RealVNC Server added + * Version 6.19.715 of RealVNC Viewer added (full image only) + * Version 12.0.1 of Mathematica added (full image only) + * Version 0.20.8 of NodeRED added (full image only) + * Version 3.1.0 of Sonic Pi added (full image only) + * Scratch 3 added (full image only) + * Bug fix - URL handling in Terminal + * Bug fix - octal values in SSIDs in network plugin + * Bug fix - remaining value in progress bar when transferring files + * Bug fix - integration of xarchiver tool with file manager + * Bug fix - start menu opening on incorrect monitor + * Bug fix - minimised applications wrongly displayed on taskbar on second monitor + * Bug fix - Bluetooth icon disappearing on x86 platforms when Bluetooth turned off + * Bug fix - Screen Configuration tool not shown on x86 platforms and settings not being saved + * Various translation updates + * Various minor bug fixes * rpi-eeprom included * Epiphany/Web removed * ntfs-3g included * Scratch 3 added to full image * pciutils added + * Linux kernel 4.19.71 + * Raspberry Pi firmware 04ddd4957d470528d7b26ea00a37d8fe2f1e2db7 2019-07-10: * Clearer options for switching of Pi 4 video output in Raspberry Pi Configuration * Option added to Appearance Settings to move taskbar to second monitor From 946f164006148648cc6195f4cae7a7f2d6da6f88 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 24 Sep 2019 15:57:09 +0100 Subject: [PATCH 14/66] stage3: Mousepad used as simple text editor instead of leafpad --- export-noobs/00-release/files/release_notes.txt | 1 + stage3/00-install-packages/00-packages-nr | 1 + 2 files changed, 2 insertions(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index ba260bc307..c0899f73f4 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -12,6 +12,7 @@ UNRELEASED: * Overscan support added for FKMS driver * New keyboard shortcuts added - Ctrl-Alt-End brings up shutdown menu; Ctrl-Alt-M moves taskbar between monitors * Latest changes to Bluez ALSA interface integrated to improve connection to Bluetooth audio devices + * Mousepad used as simple text editor instead of leafpad * Version 3.2 of Thonny added * Version 74 of Chromium added * Version 3.0.8 of VLC added diff --git a/stage3/00-install-packages/00-packages-nr b/stage3/00-install-packages/00-packages-nr index ebbbd16aa1..ffc324bf4a 100644 --- a/stage3/00-install-packages/00-packages-nr +++ b/stage3/00-install-packages/00-packages-nr @@ -1,4 +1,5 @@ xserver-xorg-video-fbdev xserver-xorg xinit xserver-xorg-video-fbturbo +mousepad lxde lxtask menu-xdg zenity xdg-utils gvfs-backends gvfs-fuse From 99f702f0ffc3461bd5ace466ba69de08307799bb Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 25 Sep 2019 14:46:38 +0200 Subject: [PATCH 15/66] Use parted for partitioning (#285) Previously, fdisk was used by sending commands into its stdin, which is not very robust (since it heavily relies on the interactive prompts offered by fdisk as well as the default values it offers, which seem prone to changing in future version). It seems likely that in the past, fdisk was easier than parted since it provides default values that make it easier to create adjacent partitions, without precalculating all positions in the script. However now that partitions are manually being aligned, all data must be calculated anyway. This commit changes the partition generation to use parted rather than fdisk. For this, it rewrites various calculations and renames variables to be easier to read as well. All values are now in number of bytes, rather than mixing bytes and sectors. This commit also makes makes sure that the boot partition and root partition are always adjacent (previously the root partition was aligned without also rounding the boot partition size, leaving some empty space in between). As a side effect of using parted, this also causes the "bootcode" part of the MBR to be filled with some default x86 bootcode. This is totally irrelevant for booting the Raspberry Pi, but it does prevent triggering a bug in parted. When using parted to change the partition table (e.g. when resizing the root partition on first boot by raspi-config's init_resize.sh), the disk identifier would be changed due to this bug, which would change the PARTUUID of all partitions. The init_resize.sh script would work around this by updating the PARTUUID in e.g. fstab, but that's fragile at best. This commit prevents the bug from triggering and keeps the disk identifier the same. See https://debbugs.gnu.org/35714 for details about this parted bug. This commit fixes #284. --- export-image/prerun.sh | 41 ++++++++++++++++++----------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/export-image/prerun.sh b/export-image/prerun.sh index ea1e2d67af..cecde32bed 100755 --- a/export-image/prerun.sh +++ b/export-image/prerun.sh @@ -10,32 +10,27 @@ rm -rf "${ROOTFS_DIR}" mkdir -p "${ROOTFS_DIR}" BOOT_SIZE="$((256 * 1024 * 1024))" -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))" -ROUNDED_ROOT_SECTOR=$(((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)) +ROOT_SIZE=$(du --apparent-size -s "${EXPORT_ROOTFS_DIR}" --exclude var/cache/apt/archives --exclude boot --block-size=1 | cut -f 1) + +# All partition sizes and starts will be aligned to this size +ALIGN="$((4 * 1024 * 1024))" +# Add this much space to the calculated file size. This allows for +# some overhead (since actual space usage is usually rounded up to the +# filesystem block size) and gives some free space on the resulting +# image. +ROOT_MARGIN=$((800*1024*1024)) + +BOOT_PART_START=$((ALIGN)) +BOOT_PART_SIZE=$(((BOOT_SIZE + ALIGN - 1) / ALIGN * ALIGN)) +ROOT_PART_START=$((BOOT_PART_START + BOOT_PART_SIZE)) +ROOT_PART_SIZE=$(((ROOT_SIZE + ROOT_MARGIN + ALIGN - 1) / ALIGN * ALIGN)) +IMG_SIZE=$((BOOT_PART_START + BOOT_PART_SIZE + ROOT_PART_SIZE)) truncate -s "${IMG_SIZE}" "${IMG_FILE}" -fdisk -H 255 -S 63 "${IMG_FILE}" < Date: Wed, 25 Sep 2019 15:06:49 +0100 Subject: [PATCH 16/66] Update release notes --- export-noobs/00-release/files/release_notes.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index c0899f73f4..7441d4adea 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,4 +1,7 @@ UNRELEASED: + * rpi-eeprom included + - This will automatically update the SPI EEPROM on the Raspberry Pi 4 to the latest stable version. + See https://rpf.io/eeprom for more information. * New icon theme for file manager icons * Appearance Settings - option for identical desktop on both monitors * Appearance Settings - option to show different desktop icons on both monitors @@ -33,10 +36,8 @@ UNRELEASED: * Bug fix - Screen Configuration tool not shown on x86 platforms and settings not being saved * Various translation updates * Various minor bug fixes - * rpi-eeprom included * Epiphany/Web removed * ntfs-3g included - * Scratch 3 added to full image * pciutils added * Linux kernel 4.19.71 * Raspberry Pi firmware 04ddd4957d470528d7b26ea00a37d8fe2f1e2db7 From 80d486687ea77d31fc3fc13cf3a2f8b464e129be Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Wed, 25 Sep 2019 19:26:16 +0100 Subject: [PATCH 17/66] Update release notes --- export-noobs/00-release/files/release_notes.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 7441d4adea..fe56c58421 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -39,8 +39,8 @@ UNRELEASED: * Epiphany/Web removed * ntfs-3g included * pciutils added - * Linux kernel 4.19.71 - * Raspberry Pi firmware 04ddd4957d470528d7b26ea00a37d8fe2f1e2db7 + * Linux kernel 4.19.75 + * Raspberry Pi firmware 01508e81ec1e918448227ca864616d56c430b46d 2019-07-10: * Clearer options for switching of Pi 4 video output in Raspberry Pi Configuration * Option added to Appearance Settings to move taskbar to second monitor From 8026d9dc8f1675c9fddfa6e714ee4c4df75de502 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 14 Oct 2019 10:54:20 +0100 Subject: [PATCH 18/66] Update changelog --- export-noobs/00-release/files/release_notes.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index fe56c58421..45e8576fc6 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,4 +1,6 @@ UNRELEASED: + * +2019-09-26: * rpi-eeprom included - This will automatically update the SPI EEPROM on the Raspberry Pi 4 to the latest stable version. See https://rpf.io/eeprom for more information. From 336ff2107e51092ec58639f180a6fce89a01fa61 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Sun, 13 Oct 2019 19:57:50 +0200 Subject: [PATCH 19/66] Document how to get values for the localization values --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 15affd0e26..33f085e01e 100644 --- a/README.md +++ b/README.md @@ -86,14 +86,25 @@ The following environment variables are supported: Default keyboard keymap. + To get the current value from a running system, run `debconf-show + keyboard-configuration` and look at the + `keyboard-configuration/xkb-keymap` value. + * `KEYBOARD_LAYOUT` (Default: "English (UK)" ) Default keyboard layout. + To get the current value from a running system, run `debconf-show + keyboard-configuration` and look at the + `keyboard-configuration/variant` value. + * `TIMEZONE_DEFAULT` (Default: "Europe/London" ) Default keyboard layout. + To get the current value from a running system, look in + `/etc/timezone`. + * `FIRST_USER_NAME` (Default: "pi" ) Username for the first user From 19c0188798f39149e5a82f70a3f96b96cfdaa7d9 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Wed, 30 Oct 2019 13:23:35 +0000 Subject: [PATCH 20/66] Ensure debootstrap runs through 'sh' rather than 'bash' This fixes #338 and fixes #294 --- scripts/common | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/common b/scripts/common index 68fab54ef1..e2048d904f 100644 --- a/scripts/common +++ b/scripts/common @@ -17,8 +17,9 @@ bootstrap(){ BOOTSTRAP_ARGS+=(--components "main,contrib,non-free") BOOTSTRAP_ARGS+=(--keyring "${STAGE_DIR}/files/raspberrypi.gpg") BOOTSTRAP_ARGS+=("$@") + printf -v BOOTSTRAP_STR '%q ' "${BOOTSTRAP_ARGS[@]}" - setarch linux32 capsh --drop=cap_setfcap -- "${BOOTSTRAP_CMD}" "${BOOTSTRAP_ARGS[@]}" || true + setarch linux32 capsh --drop=cap_setfcap -- -c "'${BOOTSTRAP_CMD}' $BOOTSTRAP_STR" || true if [ -d "$2/debootstrap" ]; then rmdir "$2/debootstrap" From d30343f626916a5b6f23cec67df919bd5a5b643a Mon Sep 17 00:00:00 2001 From: Rene Klootwijk Date: Sat, 26 Oct 2019 12:49:30 +0200 Subject: [PATCH 21/66] Added hostname parameter --- README.md | 6 +++++- build.sh | 2 ++ stage1/02-net-tweaks/00-run.sh | 2 +- stage1/02-net-tweaks/files/hostname | 1 - 4 files changed, 8 insertions(+), 3 deletions(-) delete mode 100644 stage1/02-net-tweaks/files/hostname diff --git a/README.md b/README.md index 33f085e01e..e131ca48f9 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ The following environment variables are supported: be built and cached. Note, `WORK_DIR` stores a complete copy of the target system for each build stage, amounting to tens of gigabytes in the case of Raspbian. - + **CAUTION**: If your working directory is on an NTFS partition you probably won't be able to build. Make sure this is a proper Linux filesystem. * `DEPLOY_DIR` (Default: `"$BASE_DIR/deploy"`) @@ -82,6 +82,10 @@ The following environment variables are supported: Default system locale. + * `HOSTNAME` (Default: "raspberrypi" ) + + Setting the hostname to the specified value. + * `KEYBOARD_KEYMAP` (Default: "gb" ) Default keyboard keymap. diff --git a/build.sh b/build.sh index 81ef26f147..a730e44285 100755 --- a/build.sh +++ b/build.sh @@ -161,6 +161,8 @@ export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"} export DEPLOY_ZIP="${DEPLOY_ZIP:-1}" export LOG_FILE="${WORK_DIR}/build.log" +export HOSTNAME=${HOSTNAME:-raspberrypi} + export FIRST_USER_NAME=${FIRST_USER_NAME:-pi} export FIRST_USER_PASS=${FIRST_USER_PASS:-raspberry} export WPA_ESSID diff --git a/stage1/02-net-tweaks/00-run.sh b/stage1/02-net-tweaks/00-run.sh index a49b4b055c..8637edc4cc 100755 --- a/stage1/02-net-tweaks/00-run.sh +++ b/stage1/02-net-tweaks/00-run.sh @@ -1,5 +1,5 @@ #!/bin/bash -e -install -m 644 files/hostname "${ROOTFS_DIR}/etc/hostname" +echo "${HOSTNAME}" > "${ROOTFS_DIR}/etc/hostname" ln -sf /dev/null "${ROOTFS_DIR}/etc/systemd/network/99-default.link" diff --git a/stage1/02-net-tweaks/files/hostname b/stage1/02-net-tweaks/files/hostname deleted file mode 100644 index 41757af4a7..0000000000 --- a/stage1/02-net-tweaks/files/hostname +++ /dev/null @@ -1 +0,0 @@ -raspberrypi From 95ba042c8393682eecab36e6c7056a28c5cafed4 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Wed, 6 Nov 2019 14:33:07 +0000 Subject: [PATCH 22/66] Add hostname to /etc/hosts --- stage1/02-net-tweaks/00-patches/01-hosts.diff | 9 --------- stage1/02-net-tweaks/00-patches/series | 1 - stage1/02-net-tweaks/00-run.sh | 1 + 3 files changed, 1 insertion(+), 10 deletions(-) delete mode 100644 stage1/02-net-tweaks/00-patches/01-hosts.diff delete mode 100644 stage1/02-net-tweaks/00-patches/series diff --git a/stage1/02-net-tweaks/00-patches/01-hosts.diff b/stage1/02-net-tweaks/00-patches/01-hosts.diff deleted file mode 100644 index ad07ae586a..0000000000 --- a/stage1/02-net-tweaks/00-patches/01-hosts.diff +++ /dev/null @@ -1,9 +0,0 @@ -Index: jessie-stage1/rootfs/etc/hosts -=================================================================== ---- jessie-stage1.orig/rootfs/etc/hosts -+++ jessie-stage1/rootfs/etc/hosts -@@ -3,3 +3,4 @@ - ff02::1 ip6-allnodes - ff02::2 ip6-allrouters - -+127.0.1.1 raspberrypi diff --git a/stage1/02-net-tweaks/00-patches/series b/stage1/02-net-tweaks/00-patches/series deleted file mode 100644 index 3dc19a258e..0000000000 --- a/stage1/02-net-tweaks/00-patches/series +++ /dev/null @@ -1 +0,0 @@ -01-hosts.diff diff --git a/stage1/02-net-tweaks/00-run.sh b/stage1/02-net-tweaks/00-run.sh index 8637edc4cc..fc9e7638ee 100755 --- a/stage1/02-net-tweaks/00-run.sh +++ b/stage1/02-net-tweaks/00-run.sh @@ -1,5 +1,6 @@ #!/bin/bash -e echo "${HOSTNAME}" > "${ROOTFS_DIR}/etc/hostname" +echo "127.0.1.1 ${HOSTNAME}" >> "${ROOTFS_DIR}/etc/hosts" ln -sf /dev/null "${ROOTFS_DIR}/etc/systemd/network/99-default.link" From a449c75facc8b373eab7cf4f884f5a3d45028478 Mon Sep 17 00:00:00 2001 From: snoe925 Date: Mon, 11 Nov 2019 12:23:58 -0600 Subject: [PATCH 23/66] OS X does not have realpath (#342) Check that realpath is present. OS X doesn't have realpath. The RPi builds on Docker for Mac if you increase the VM size. I am using 256G for my image. See the Docker for Mac preferences. --- build-docker.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build-docker.sh b/build-docker.sh index 583bf6a175..79b68d45e1 100755 --- a/build-docker.sh +++ b/build-docker.sh @@ -31,7 +31,9 @@ do done # Ensure that the configuration file is an absolute path -CONFIG_FILE=$(realpath -s "$CONFIG_FILE") +if test -x /usr/bin/realpath; then + CONFIG_FILE=$(realpath -s "$CONFIG_FILE") +fi # Ensure that the confguration file is present if test -z "${CONFIG_FILE}"; then From 7f143a185e891055ef2580b68750ade8c7cdaad5 Mon Sep 17 00:00:00 2001 From: Leander Date: Mon, 18 Nov 2019 14:32:16 +0100 Subject: [PATCH 24/66] Export base directory before loading config file (#347) --- build.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index a730e44285..d93d4dc91c 100755 --- a/build.sh +++ b/build.sh @@ -122,6 +122,8 @@ if [ "$(id -u)" != "0" ]; then exit 1 fi +BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"} +export BASE_DIR if [ -f config ]; then # shellcheck disable=SC1091 @@ -154,7 +156,6 @@ export IMG_DATE="${IMG_DATE:-"$(date +%Y-%m-%d)"}" export IMG_FILENAME="${IMG_FILENAME:-"${IMG_DATE}-${IMG_NAME}"}" export ZIP_FILENAME="${ZIP_FILENAME:-"image_${IMG_DATE}-${IMG_NAME}"}" -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 DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"} @@ -179,8 +180,6 @@ export TIMEZONE_DEFAULT="${TIMEZONE_DEFAULT:-Europe/London}" export GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"} -export BASE_DIR - export CLEAN export IMG_NAME export APT_PROXY From 5e190333878c45695990a861092991bb5c2cfd15 Mon Sep 17 00:00:00 2001 From: Leander Date: Mon, 18 Nov 2019 15:38:54 +0100 Subject: [PATCH 25/66] Remove accidental trailing brace (#348) --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index d93d4dc91c..b806562d4d 100755 --- a/build.sh +++ b/build.sh @@ -122,7 +122,7 @@ if [ "$(id -u)" != "0" ]; then exit 1 fi -BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"} +BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" export BASE_DIR if [ -f config ]; then From 5456c3801fc7ef99d1563cd54e581cb9b3d54c4a Mon Sep 17 00:00:00 2001 From: Leander Date: Tue, 26 Nov 2019 16:03:48 +0100 Subject: [PATCH 26/66] Explicitly check if postrun script exists in BASE_DIR (#351) --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index b806562d4d..a396b060f1 100755 --- a/build.sh +++ b/build.sh @@ -247,7 +247,7 @@ for EXPORT_DIR in ${EXPORT_DIRS}; do fi done -if [ -x postrun.sh ]; then +if [ -x ${BASE_DIR}/postrun.sh ]; then log "Begin postrun.sh" cd "${BASE_DIR}" ./postrun.sh From d7c1ae21cafc0fd32a907db7de2b9c13ef12d76f Mon Sep 17 00:00:00 2001 From: RaspberryPiFan <49343974+RaspberryPiFan@users.noreply.github.com> Date: Tue, 26 Nov 2019 16:49:49 +0100 Subject: [PATCH 27/66] New types of images. (#352) --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e131ca48f9..7a272f1860 100644 --- a/README.md +++ b/README.md @@ -277,14 +277,13 @@ maintenance and allows for more easy customization. enhancements, etc. This is a base desktop system, with some development tools installed. - - **Stage 4** - Raspbian system meant to fit on a 4GB card. More development + - **Stage 4** - Normal Raspbian image. System meant to fit on a 4GB card. More development tools, an email client, learning tools like Scratch, specialized packages like sonic-pi, system documentation, office productivity, etc. This is the stage that installs all of the things that make Raspbian friendly to new users. - - **Stage 5** - The official Raspbian Desktop image. Right now only adds - Mathematica. + - **Stage 5** - The Raspbian Full image. ### Stage specification From 8bdbbfb099ecac884a901572d126b0fe47de5d95 Mon Sep 17 00:00:00 2001 From: RaspberryPiFan <49343974+RaspberryPiFan@users.noreply.github.com> Date: Wed, 27 Nov 2019 17:11:20 +0100 Subject: [PATCH 28/66] Added stage 5 to the text (#353) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a272f1860..83dd2ad1d7 100644 --- a/README.md +++ b/README.md @@ -291,7 +291,7 @@ 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 add an empty file named `SKIP_IMAGES` to `./stage4` (if building up to stage 2) or +Then add an empty file named `SKIP_IMAGES` to `./stage4` and `./stage5` (if building up to stage 2) or to `./stage2` (if building a minimal system). ```bash From 18c3cebe94c99daf80dcdeaa8bc0f9202de3a943 Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Thu, 5 Dec 2019 16:08:04 +0100 Subject: [PATCH 29/66] configure unprotected wifi when WPA_PASSWORD is unset (#357) --- README.md | 2 +- stage2/02-net-tweaks/01-run.sh | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 83dd2ad1d7..7ad31db4c2 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ The following environment variables are supported: * `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset) - If these are set, they are use to configure `wpa_supplicant.conf`, so that the raspberry pi can automatically connect to a wifi network on first boot. + If these are set, they are use to configure `wpa_supplicant.conf`, so that the raspberry pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. * `ENABLE_SSH` (Default: `0`) diff --git a/stage2/02-net-tweaks/01-run.sh b/stage2/02-net-tweaks/01-run.sh index 3ba2ef9e01..154e515094 100755 --- a/stage2/02-net-tweaks/01-run.sh +++ b/stage2/02-net-tweaks/01-run.sh @@ -14,6 +14,14 @@ if [ -v WPA_ESSID ] && [ -v WPA_PASSWORD ]; then on_chroot <> "/etc/wpa_supplicant/wpa_supplicant.conf" EOF +elif [ -v WPA_ESSID ]; then +cat >> "${ROOTFS_DIR}/etc/wpa_supplicant/wpa_supplicant.conf" << EOL + +network={ + ssid="${WPA_ESSID}" + key_mgmt=NONE +} +EOL fi # Disable wifi on 5GHz models From 32353a162bfaecc41b6ef218b919ef82a0295e71 Mon Sep 17 00:00:00 2001 From: RaspberryPiFan <49343974+RaspberryPiFan@users.noreply.github.com> Date: Mon, 9 Dec 2019 12:57:26 +0100 Subject: [PATCH 30/66] Updated info about stage4 and stage5 (#359) --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7ad31db4c2..1f8524bdbd 100644 --- a/README.md +++ b/README.md @@ -277,13 +277,13 @@ maintenance and allows for more easy customization. enhancements, etc. This is a base desktop system, with some development tools installed. - - **Stage 4** - Normal Raspbian image. System meant to fit on a 4GB card. More development - tools, an email client, learning tools like Scratch, specialized packages - like sonic-pi, system documentation, office productivity, etc. This is the - stage that installs all of the things that make Raspbian friendly to new - users. + - **Stage 4** - Normal Raspbian image. System meant to fit on a 4GB card. This is the + stage that installs most things that make Raspbian friendly to new + users like system documentation. - - **Stage 5** - The Raspbian Full image. + - **Stage 5** - The Raspbian Full image. More development + tools, an email client, learning tools like Scratch, specialized packages + like sonic-pi, office productivity, etc. ### Stage specification From 9d15c0f7d1d01ba65fac1d5f7ebdbcfdfb02bbed Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Thu, 12 Dec 2019 11:15:17 +0100 Subject: [PATCH 31/66] move picraft to stage where minecraft is installed (#362) --- stage4/00-install-packages/00-packages | 1 - stage5/00-install-extras/00-packages | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/stage4/00-install-packages/00-packages b/stage4/00-install-packages/00-packages index 7dadd73061..f9f5ef4395 100644 --- a/stage4/00-install-packages/00-packages +++ b/stage4/00-install-packages/00-packages @@ -18,7 +18,6 @@ python-spidev python3-spidev python-twython python3-twython python-smbus python3-smbus python-flask python3-flask -python-picraft python3-picraft pprompt piwiz rp-prefapps diff --git a/stage5/00-install-extras/00-packages b/stage5/00-install-extras/00-packages index 0deac8384d..afe5aeef57 100644 --- a/stage5/00-install-extras/00-packages +++ b/stage5/00-install-extras/00-packages @@ -3,7 +3,7 @@ sonic-pi scratch nuscratch scratch2 scratch3 smartsim -minecraft-pi python-minecraftpi +minecraft-pi python-minecraftpi python-picraft python3-picraft python-sense-emu sense-emu-tools python-sense-emu-doc wolfram-engine From 271177a0f781a116ddaeb485ac62d28bc18fe74c Mon Sep 17 00:00:00 2001 From: Sam Tygier Date: Mon, 23 Dec 2019 14:21:08 +0000 Subject: [PATCH 32/66] Use tee with wpa_passphrase so errors are visable wpa_passphrase writes its error messages to stdout, so this needs to tee so that errors are visable to user. Also need to enable pipefail so that the error code still gets caught. --- stage2/02-net-tweaks/01-run.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stage2/02-net-tweaks/01-run.sh b/stage2/02-net-tweaks/01-run.sh index 154e515094..63fbff71cd 100755 --- a/stage2/02-net-tweaks/01-run.sh +++ b/stage2/02-net-tweaks/01-run.sh @@ -12,7 +12,8 @@ fi if [ -v WPA_ESSID ] && [ -v WPA_PASSWORD ]; then on_chroot <> "/etc/wpa_supplicant/wpa_supplicant.conf" +set -o pipefail +wpa_passphrase "${WPA_ESSID}" "${WPA_PASSWORD}" | tee -a "/etc/wpa_supplicant/wpa_supplicant.conf" EOF elif [ -v WPA_ESSID ]; then cat >> "${ROOTFS_DIR}/etc/wpa_supplicant/wpa_supplicant.conf" << EOL From 024840034e2fab7efe170a303ef726fed1314f82 Mon Sep 17 00:00:00 2001 From: Sam Tygier Date: Mon, 23 Dec 2019 14:29:09 +0000 Subject: [PATCH 33/66] Check WPA_PASSWORD length early WPA_PASSWORD needs to be between 8 adn 63 characters. Check early to avoid hitting error in stage2. --- build.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/build.sh b/build.sh index a396b060f1..4ef6296993 100755 --- a/build.sh +++ b/build.sh @@ -220,6 +220,11 @@ if [[ -n "${APT_PROXY}" ]] && ! curl --silent "${APT_PROXY}" >/dev/null ; then exit 1 fi +if [[ ${#WPA_PASSWORD} -lt 8 || ${#WPA_PASSWORD} -gt 63 ]] ; then + echo "WPA_PASSWORD" must be between 8 and 63 characters + exit 1 +fi + mkdir -p "${WORK_DIR}" log "Begin ${BASE_DIR}" From 9d334bee66a75bd334b8f241f1c31ce6cc0f5f17 Mon Sep 17 00:00:00 2001 From: Sam Tygier Date: Tue, 7 Jan 2020 21:48:09 +0000 Subject: [PATCH 34/66] WPA_PASSWORD length check should only occur if set Test if WPA_PASSWORD is set before check that it has a valid length. --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 4ef6296993..9e78728ad4 100755 --- a/build.sh +++ b/build.sh @@ -220,7 +220,7 @@ if [[ -n "${APT_PROXY}" ]] && ! curl --silent "${APT_PROXY}" >/dev/null ; then exit 1 fi -if [[ ${#WPA_PASSWORD} -lt 8 || ${#WPA_PASSWORD} -gt 63 ]] ; then +if [[ -n "${WPA_PASSWORD}" && ${#WPA_PASSWORD} -lt 8 || ${#WPA_PASSWORD} -gt 63 ]] ; then echo "WPA_PASSWORD" must be between 8 and 63 characters exit 1 fi From f9375cdcec9421a0b5290a1c34c899d976f60f31 Mon Sep 17 00:00:00 2001 From: Andrew Pattison <58046090+andrum99@users.noreply.github.com> Date: Wed, 8 Jan 2020 11:54:06 +0000 Subject: [PATCH 35/66] README.md - mention WPA_PASSWORD length requirement --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f8524bdbd..04e1caa1c8 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ The following environment variables are supported: * `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset) - If these are set, they are use to configure `wpa_supplicant.conf`, so that the raspberry pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. + If these are set, they are use to configure `wpa_supplicant.conf`, so that the raspberry pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters. * `ENABLE_SSH` (Default: `0`) From f8f3d6fe93a6709f02f63f3a203a38bcd33a0c0d Mon Sep 17 00:00:00 2001 From: Andrew Pattison <58046090+andrum99@users.noreply.github.com> Date: Wed, 8 Jan 2020 11:55:34 +0000 Subject: [PATCH 36/66] capitalise Raspberry Pi --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 04e1caa1c8..73d49613f6 100644 --- a/README.md +++ b/README.md @@ -119,11 +119,11 @@ The following environment variables are supported: * `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset) - If these are set, they are use to configure `wpa_supplicant.conf`, so that the raspberry pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters. + If these are set, they are use to configure `wpa_supplicant.conf`, so that the Raspberry Pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters. * `ENABLE_SSH` (Default: `0`) - Setting to `1` will enable ssh server for remote log in. Note that if you are using a common password such as the defaults there is a high risk of attackers taking over you RaspberryPi. + Setting to `1` will enable ssh server for remote log in. Note that if you are using a common password such as the defaults there is a high risk of attackers taking over you Raspberry Pi. * `STAGE_LIST` (Default: `stage*`) From 24bb01dec280f568ac59cdd1253a33a6d30ac4c4 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Thu, 5 Dec 2019 16:25:18 +0000 Subject: [PATCH 37/66] Rename HOSTNAME variable to TARGET_HOSTNAME Bash sets the HOSTNAME variable, overriding our default --- README.md | 2 +- build.sh | 2 +- stage1/02-net-tweaks/00-run.sh | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 73d49613f6..bf681fae3d 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ The following environment variables are supported: Default system locale. - * `HOSTNAME` (Default: "raspberrypi" ) + * `TARGET_HOSTNAME` (Default: "raspberrypi" ) Setting the hostname to the specified value. diff --git a/build.sh b/build.sh index 9e78728ad4..a906e102a4 100755 --- a/build.sh +++ b/build.sh @@ -162,7 +162,7 @@ export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"} export DEPLOY_ZIP="${DEPLOY_ZIP:-1}" export LOG_FILE="${WORK_DIR}/build.log" -export HOSTNAME=${HOSTNAME:-raspberrypi} +export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi} export FIRST_USER_NAME=${FIRST_USER_NAME:-pi} export FIRST_USER_PASS=${FIRST_USER_PASS:-raspberry} diff --git a/stage1/02-net-tweaks/00-run.sh b/stage1/02-net-tweaks/00-run.sh index fc9e7638ee..4943cabf0d 100755 --- a/stage1/02-net-tweaks/00-run.sh +++ b/stage1/02-net-tweaks/00-run.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -echo "${HOSTNAME}" > "${ROOTFS_DIR}/etc/hostname" -echo "127.0.1.1 ${HOSTNAME}" >> "${ROOTFS_DIR}/etc/hosts" +echo "${TARGET_HOSTNAME}" > "${ROOTFS_DIR}/etc/hostname" +echo "127.0.1.1 ${TARGET_HOSTNAME}" >> "${ROOTFS_DIR}/etc/hosts" ln -sf /dev/null "${ROOTFS_DIR}/etc/systemd/network/99-default.link" From 0a6624b26dd8006a75725e5379431abf1c5b0f09 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Fri, 24 Jan 2020 12:48:57 +0000 Subject: [PATCH 38/66] Update ROOT_MARGIN --- Dockerfile | 2 +- README.md | 2 +- depends | 1 + export-image/prerun.sh | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 706a5fb5a3..35f483a3e1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ RUN apt-get -y update && \ apt-get -y install \ git vim parted \ quilt coreutils qemu-user-static debootstrap zerofree zip dosfstools \ - bsdtar libcap2-bin rsync grep udev xz-utils curl xxd file kmod\ + bsdtar libcap2-bin rsync grep udev xz-utils curl xxd file kmod bc\ && rm -rf /var/lib/apt/lists/* COPY . /pi-gen/ diff --git a/README.md b/README.md index bf681fae3d..ec4f65cb62 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ To install the required dependencies for pi-gen you should run: ```bash apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \ -dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl +dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl bc ``` The file `depends` contains a list of tools needed. The format of this diff --git a/depends b/depends index 6238eb1eed..a86bc82123 100644 --- a/depends +++ b/depends @@ -16,3 +16,4 @@ xxd file git lsmod:kmod +bc diff --git a/export-image/prerun.sh b/export-image/prerun.sh index cecde32bed..8bbc566e06 100755 --- a/export-image/prerun.sh +++ b/export-image/prerun.sh @@ -18,7 +18,7 @@ ALIGN="$((4 * 1024 * 1024))" # some overhead (since actual space usage is usually rounded up to the # filesystem block size) and gives some free space on the resulting # image. -ROOT_MARGIN=$((800*1024*1024)) +ROOT_MARGIN="$(echo "($ROOT_SIZE * 0.2 + 200 * 1024 * 1024) / 1" | bc)" BOOT_PART_START=$((ALIGN)) BOOT_PART_SIZE=$(((BOOT_SIZE + ALIGN - 1) / ALIGN * ALIGN)) From ca31aef1f74294a767ff8f6fb55e904aa21a4cf8 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Fri, 24 Jan 2020 13:09:04 +0000 Subject: [PATCH 39/66] stage5: install code-the-classics --- stage5/00-install-extras/00-packages | 1 + 1 file changed, 1 insertion(+) diff --git a/stage5/00-install-extras/00-packages b/stage5/00-install-extras/00-packages index afe5aeef57..609e718125 100644 --- a/stage5/00-install-extras/00-packages +++ b/stage5/00-install-extras/00-packages @@ -13,3 +13,4 @@ nodered realvnc-vnc-viewer python-games +code-the-classics From bdbd85892e8a80bd69366ea7f84f8ea1f2a0433f Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 27 Jan 2020 15:20:33 +0000 Subject: [PATCH 40/66] Update MagPi URL scheme --- stage4/03-magpi/00-run.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stage4/03-magpi/00-run.sh b/stage4/03-magpi/00-run.sh index cc5a820817..b27b85f359 100755 --- a/stage4/03-magpi/00-run.sh +++ b/stage4/03-magpi/00-run.sh @@ -1,12 +1,12 @@ #!/bin/sh -e magpi_regex="MagPi[[:digit:]]*.pdf" -magpi_loc="https://www.raspberrypi.org/magpi-issues" -magpi_latest="$(curl "$magpi_loc/?C=M;O=D" -s | grep "$magpi_regex" -m 1 -o | head -n 1)" +magpi_loc="$(curl -s https://magpi.raspberrypi.org/latest-pdf)" +magpi_latest="$(echo "$magpi_loc" | grep "$magpi_regex" -m 1 -o)" if [ ! -f "files/$magpi_latest" ]; then find files/ -regextype grep -regex "files/$magpi_regex" -delete - wget "$magpi_loc/$magpi_latest" -O "files/$magpi_latest" + wget "$magpi_loc" -O "files/$magpi_latest" fi file "files/$magpi_latest" | grep -q "PDF document" From b4ea63c0454e12af659623d0bd34bba71e6c9f25 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Tue, 28 Jan 2020 12:43:53 +0000 Subject: [PATCH 41/66] Update persistent rkfill files --- stage2/02-net-tweaks/01-run.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stage2/02-net-tweaks/01-run.sh b/stage2/02-net-tweaks/01-run.sh index 63fbff71cd..092975531f 100755 --- a/stage2/02-net-tweaks/01-run.sh +++ b/stage2/02-net-tweaks/01-run.sh @@ -27,5 +27,5 @@ fi # Disable wifi on 5GHz models mkdir -p "${ROOTFS_DIR}/var/lib/systemd/rfkill/" -echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmc:wlan" -echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmc:wlan" +echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmcnr:wlan" +echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmcnr:wlan" From 306c7eba3b241c963d3fdbfd47e0bd1cf9c1a323 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 27 Jan 2020 17:48:12 +0000 Subject: [PATCH 42/66] Update release notes --- .../00-release/files/release_notes.txt | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 45e8576fc6..0235ba9fb2 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,5 +1,26 @@ UNRELEASED: - * + * Version 3.2.6 of Thonny included - significant improvements in speed, particularly when debugging + * Version 1.0.4 of Scratch 3 included - adds new "display stage" and "display sprite" blocks to SenseHAT extension, and loading of files from command line + * Version 32.0.0.314 of Flash player included + * Version 1.0.3 of NodeRED included + * Version 6.6.0 of RealVNC Server and version 6.19.923 of RealVNC Viewer included - adds support for audio + * Version 78.0.3904.108 of Chromium included + * Mesa updated to 19.3.2 for OpenGL ES 3.1 conformance + * Orca screen reader added to Recommended Software + * Code The Classics Python games added to Recommended Software + * File manager - new "places" pane added at top of sidebar to show mounted drives in simplified view; "new folder" icon added to taskbar; expanders in directory browser now correctly show state of subfolders + * Multiple monitor support improved - alignment of icons on second desktop corrected, Appearance Settings opens on correct tab when launched from context menu + * Raspberry Pi Touchscreen correctly aligned with display + * System clock synchronised before installing new packages in startup wizard and Recommended Software + * Mixer dialogs added to taskbar volume plugin; separate Audio Preferences application removed + * Raspberry Pi Configuration - separate tab added for display options; screen blanking control added + * Volume taskbar plugin and raspi-config modified to support separate ALSA devices for internal audio outputs (analogue and HDMI 1 and 2) + * Robustness improvements in volume, ejecter and battery taskbar plugins + * Movement of mouse pointer to menu button on startup now controlled by point_at_menu parameter in Global section of lxpanel configuration file + * Ctrl-Alt-Del and Ctrl-Alt-End shortcuts added to open shutdown options box + * Ctrl-Shift-Esc shortcut added to open task manager + * Linux kernel 4.19.93 + * Raspberry Pi firmware 67392a7a32bddad7f571047fccafca9eeb65d29c 2019-09-26: * rpi-eeprom included - This will automatically update the SPI EEPROM on the Raspberry Pi 4 to the latest stable version. From 87f7a59cab051d54a306a680a615170aa33bd5ca Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 3 Feb 2020 13:22:33 +0000 Subject: [PATCH 43/66] Update release notes --- export-noobs/00-release/files/release_notes.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 0235ba9fb2..5be3a960ee 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -19,6 +19,7 @@ UNRELEASED: * Movement of mouse pointer to menu button on startup now controlled by point_at_menu parameter in Global section of lxpanel configuration file * Ctrl-Alt-Del and Ctrl-Alt-End shortcuts added to open shutdown options box * Ctrl-Shift-Esc shortcut added to open task manager + * Enabled NEON routines in OpenSSL * Linux kernel 4.19.93 * Raspberry Pi firmware 67392a7a32bddad7f571047fccafca9eeb65d29c 2019-09-26: From e577677b623b577f2a0ec7cfaffc3c27da005da3 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Wed, 5 Feb 2020 15:37:57 +0000 Subject: [PATCH 44/66] Update release notes --- export-noobs/00-release/files/release_notes.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 5be3a960ee..6f74f5de45 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -6,6 +6,7 @@ UNRELEASED: * Version 6.6.0 of RealVNC Server and version 6.19.923 of RealVNC Viewer included - adds support for audio * Version 78.0.3904.108 of Chromium included * Mesa updated to 19.3.2 for OpenGL ES 3.1 conformance + * Pixel doubling option added in Raspberry Pi Configuration on platforms using FKMS display driver * Orca screen reader added to Recommended Software * Code The Classics Python games added to Recommended Software * File manager - new "places" pane added at top of sidebar to show mounted drives in simplified view; "new folder" icon added to taskbar; expanders in directory browser now correctly show state of subfolders From 6b72a64f020cd3143093aae5ad82accc4976f735 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Fri, 7 Feb 2020 11:19:19 +0000 Subject: [PATCH 45/66] Update release notes --- export-noobs/00-release/files/release_notes.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 6f74f5de45..11963a440b 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,4 +1,6 @@ UNRELEASED: + * +2020-02-05: * Version 3.2.6 of Thonny included - significant improvements in speed, particularly when debugging * Version 1.0.4 of Scratch 3 included - adds new "display stage" and "display sprite" blocks to SenseHAT extension, and loading of files from command line * Version 32.0.0.314 of Flash player included From 6d71ac0bf9f9f2ac4f483bca598cff52cf3b7e8e Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Mon, 10 Feb 2020 16:59:56 +0000 Subject: [PATCH 46/66] Update release notes --- export-noobs/00-release/files/release_notes.txt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 11963a440b..1ca67ec80b 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,5 +1,12 @@ UNRELEASED: - * + * Raspberry Pi Configuration - screen blanking setting disabled if Xscreensaver is installed + * Bug fix - switch to turn off VNC server in Raspberry Pi Configuration has no effect + * Bug fix - fix %20 characters in file names + * Linux kernel 4.19.97 + * Raspberry Pi firmware 2efcd0bb3848640e385c894b22551f0d32761bf8 + - gencmd: Fix measure_clock name for CLOCK_OUTPUT_108 + - mmal isp: Remote alignment requirements for RGB24 formats + - Add missing flags for VC_IMAGE_PROP_YUVUV_4K_CHROMA_ALIGN 2020-02-05: * Version 3.2.6 of Thonny included - significant improvements in speed, particularly when debugging * Version 1.0.4 of Scratch 3 included - adds new "display stage" and "display sprite" blocks to SenseHAT extension, and loading of files from command line @@ -23,8 +30,8 @@ UNRELEASED: * Ctrl-Alt-Del and Ctrl-Alt-End shortcuts added to open shutdown options box * Ctrl-Shift-Esc shortcut added to open task manager * Enabled NEON routines in OpenSSL - * Linux kernel 4.19.93 - * Raspberry Pi firmware 67392a7a32bddad7f571047fccafca9eeb65d29c + * Linux kernel 4.19.97 + * Raspberry Pi firmware 149cd7f0487e08e148efe604f8d4d359541cecf4 2019-09-26: * rpi-eeprom included - This will automatically update the SPI EEPROM on the Raspberry Pi 4 to the latest stable version. From 5f884374b6ac6e155330c58caa1fb7249b8badf1 Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Thu, 13 Feb 2020 15:47:46 +0000 Subject: [PATCH 47/66] Update release notes --- export-noobs/00-release/files/release_notes.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 1ca67ec80b..8d7f014032 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -3,10 +3,11 @@ UNRELEASED: * Bug fix - switch to turn off VNC server in Raspberry Pi Configuration has no effect * Bug fix - fix %20 characters in file names * Linux kernel 4.19.97 - * Raspberry Pi firmware 2efcd0bb3848640e385c894b22551f0d32761bf8 + * Raspberry Pi firmware 9a34efbf2fc6a27231607ce91a7cb6bf3bdbc0c5 - gencmd: Fix measure_clock name for CLOCK_OUTPUT_108 - mmal isp: Remote alignment requirements for RGB24 formats - Add missing flags for VC_IMAGE_PROP_YUVUV_4K_CHROMA_ALIGN + - platform: Compromise on gpu overclock settings 2020-02-05: * Version 3.2.6 of Thonny included - significant improvements in speed, particularly when debugging * Version 1.0.4 of Scratch 3 included - adds new "display stage" and "display sprite" blocks to SenseHAT extension, and loading of files from command line From 38d22e976a2d6ad2ccabc2704c966f586550122c Mon Sep 17 00:00:00 2001 From: "Luigi F. Cruz" Date: Thu, 20 Feb 2020 14:18:50 -0300 Subject: [PATCH 48/66] Retry apt downloads 3 times Fixes #194 --- build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index a906e102a4..e012569cec 100755 --- a/build.sh +++ b/build.sh @@ -20,7 +20,7 @@ EOF PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${i}-packages-nr")" if [ -n "$PACKAGES" ]; then on_chroot << EOF -apt-get install --no-install-recommends -y $PACKAGES +apt-get -o APT::Acquire::Retries=3 install --no-install-recommends -y $PACKAGES EOF fi log "End ${SUB_STAGE_DIR}/${i}-packages-nr" @@ -30,7 +30,7 @@ EOF PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${i}-packages")" if [ -n "$PACKAGES" ]; then on_chroot << EOF -apt-get install -y $PACKAGES +apt-get -o APT::Acquire::Retries=3 install -y $PACKAGES EOF fi log "End ${SUB_STAGE_DIR}/${i}-packages" From 65f91b8349565f5ddb8806ccc80a48871c5b86e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Vis=C3=A9e?= Date: Thu, 20 Feb 2020 18:20:03 +0100 Subject: [PATCH 49/66] BusyBox realpath does not support -s flag, fallback to use no flags (#384) * BusyBox realpath does not support -s flag, fallback to use no flags * Fix config sourcing problem --- build-docker.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build-docker.sh b/build-docker.sh index 79b68d45e1..b6a9ea3d81 100755 --- a/build-docker.sh +++ b/build-docker.sh @@ -32,7 +32,7 @@ done # Ensure that the configuration file is an absolute path if test -x /usr/bin/realpath; then - CONFIG_FILE=$(realpath -s "$CONFIG_FILE") + CONFIG_FILE=$(realpath -s "$CONFIG_FILE" || realpath "$CONFIG_FILE") fi # Ensure that the confguration file is present @@ -41,7 +41,7 @@ if test -z "${CONFIG_FILE}"; then exit 1 else # shellcheck disable=SC1090 - source "${CONFIG_FILE}" + source ${CONFIG_FILE} fi CONTAINER_NAME=${CONTAINER_NAME:-pigen_work} From 8ef3f47d7f0c6fdc722b1c3161d2502c9201bcc1 Mon Sep 17 00:00:00 2001 From: Leandro Lisboa Penz Date: Thu, 20 Feb 2020 17:20:29 +0000 Subject: [PATCH 50/66] Dockerfile: use --no-install-recommends in apt-get install (#383) --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 35f483a3e1..2e53149b52 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,10 +3,11 @@ FROM debian:buster ENV DEBIAN_FRONTEND noninteractive RUN apt-get -y update && \ - apt-get -y install \ + apt-get -y install --no-install-recommends \ git vim parted \ quilt coreutils qemu-user-static debootstrap zerofree zip dosfstools \ bsdtar libcap2-bin rsync grep udev xz-utils curl xxd file kmod bc\ + binfmt-support ca-certificates \ && rm -rf /var/lib/apt/lists/* COPY . /pi-gen/ From 08fc0b9a8237c5a9926a0e9d660156a1e838d33a Mon Sep 17 00:00:00 2001 From: DragonEagle Date: Wed, 26 Feb 2020 05:36:39 -0800 Subject: [PATCH 51/66] Exposed RELEASE as a configurable variable (#391) Exposed RELEASE as a configurable variable and updated README.md. As a bonus, there is only on place to change the release name when the next release is stable now. --- README.md | 5 +++++ build.sh | 1 + export-noobs/00-release/00-run.sh | 1 + export-noobs/00-release/files/os.json | 2 +- stage0/00-configure-apt/00-run.sh | 2 ++ stage0/00-configure-apt/files/raspi.list | 4 ++-- stage0/00-configure-apt/files/sources.list | 4 ++-- stage0/prerun.sh | 2 +- 8 files changed, 15 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index ec4f65cb62..29d81667d4 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,11 @@ The following environment variables are supported: but you should use something else for a customized version. Export files in stages may add suffixes to `IMG_NAME`. + * `RELEASE` (Default: buster) + + The release version to build images against. Valid values are jessie, stretch + buster, bullseye, and testing. + * `APT_PROXY` (Default: unset) If you require the use of an apt proxy, set it here. This proxy setting diff --git a/build.sh b/build.sh index e012569cec..a8247ab040 100755 --- a/build.sh +++ b/build.sh @@ -166,6 +166,7 @@ export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi} export FIRST_USER_NAME=${FIRST_USER_NAME:-pi} export FIRST_USER_PASS=${FIRST_USER_PASS:-raspberry} +export RELEASE=${RELEASE:-buster} export WPA_ESSID export WPA_PASSWORD export WPA_COUNTRY diff --git a/export-noobs/00-release/00-run.sh b/export-noobs/00-release/00-run.sh index 1d0b12f175..18a3a5dcd6 100755 --- a/export-noobs/00-release/00-run.sh +++ b/export-noobs/00-release/00-run.sh @@ -36,6 +36,7 @@ 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|RELEASE|${RELEASE}|" sed "${NOOBS_DIR}/release_notes.txt" -i -e "s|UNRELEASED|${IMG_DATE}|" diff --git a/export-noobs/00-release/files/os.json b/export-noobs/00-release/files/os.json index afa9f9a8fc..e231238be6 100644 --- a/export-noobs/00-release/files/os.json +++ b/export-noobs/00-release/files/os.json @@ -16,5 +16,5 @@ ], "url": "http://www.raspbian.org/", "username": "pi", - "version": "buster" + "version": "RELEASE" } diff --git a/stage0/00-configure-apt/00-run.sh b/stage0/00-configure-apt/00-run.sh index 9d21ffba2b..d10a49f174 100755 --- a/stage0/00-configure-apt/00-run.sh +++ b/stage0/00-configure-apt/00-run.sh @@ -2,6 +2,8 @@ install -m 644 files/sources.list "${ROOTFS_DIR}/etc/apt/" install -m 644 files/raspi.list "${ROOTFS_DIR}/etc/apt/sources.list.d/" +sed -i "s/RELEASE/${RELEASE}/g" "${ROOTFS_DIR}/etc/apt/sources.list" +sed -i "s/RELEASE/${RELEASE}/g" "${ROOTFS_DIR}/etc/apt/sources.list.d/raspi.list" if [ -n "$APT_PROXY" ]; then install -m 644 files/51cache "${ROOTFS_DIR}/etc/apt/apt.conf.d/51cache" diff --git a/stage0/00-configure-apt/files/raspi.list b/stage0/00-configure-apt/files/raspi.list index 122287e1d5..41c5a70755 100644 --- a/stage0/00-configure-apt/files/raspi.list +++ b/stage0/00-configure-apt/files/raspi.list @@ -1,3 +1,3 @@ -deb http://archive.raspberrypi.org/debian/ buster main +deb http://archive.raspberrypi.org/debian/ RELEASE main # Uncomment line below then 'apt-get update' to enable 'apt-get source' -#deb-src http://archive.raspberrypi.org/debian/ buster main +#deb-src http://archive.raspberrypi.org/debian/ RELEASE main diff --git a/stage0/00-configure-apt/files/sources.list b/stage0/00-configure-apt/files/sources.list index 61820ac04e..4a5dd8a9fd 100644 --- a/stage0/00-configure-apt/files/sources.list +++ b/stage0/00-configure-apt/files/sources.list @@ -1,3 +1,3 @@ -deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi +deb http://raspbian.raspberrypi.org/raspbian/ RELEASE main contrib non-free rpi # Uncomment line below then 'apt-get update' to enable 'apt-get source' -#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi +#deb-src http://raspbian.raspberrypi.org/raspbian/ RELEASE main contrib non-free rpi diff --git a/stage0/prerun.sh b/stage0/prerun.sh index 9ce3e0227f..3b257836b8 100755 --- a/stage0/prerun.sh +++ b/stage0/prerun.sh @@ -1,5 +1,5 @@ #!/bin/bash -e if [ ! -d "${ROOTFS_DIR}" ]; then - bootstrap buster "${ROOTFS_DIR}" http://raspbian.raspberrypi.org/raspbian/ + bootstrap ${RELEASE} "${ROOTFS_DIR}" http://raspbian.raspberrypi.org/raspbian/ fi From b9bb59c237b79d65d507feaf36865152c437a67e Mon Sep 17 00:00:00 2001 From: Serge Schneider Date: Wed, 13 May 2020 13:09:03 +0100 Subject: [PATCH 52/66] Bookshelf PDF download --- stage4/03-bookshelf/00-run.sh | 15 +++++++++++++++ .../{03-magpi => 03-bookshelf}/files/.gitignore | 0 stage4/03-magpi/00-run.sh | 15 --------------- 3 files changed, 15 insertions(+), 15 deletions(-) create mode 100755 stage4/03-bookshelf/00-run.sh rename stage4/{03-magpi => 03-bookshelf}/files/.gitignore (100%) delete mode 100755 stage4/03-magpi/00-run.sh diff --git a/stage4/03-bookshelf/00-run.sh b/stage4/03-bookshelf/00-run.sh new file mode 100755 index 0000000000..5bd9885ddd --- /dev/null +++ b/stage4/03-bookshelf/00-run.sh @@ -0,0 +1,15 @@ +#!/bin/sh -e + +BOOKSHELF_URL="https://magpi.raspberrypi.org/bookshelf.xml" +GUIDE_URL="$(curl -s "$BOOKSHELF_URL" | awk -F '[<>]' "/Raspberry Pi Beginner's Guide v3<\/TITLE>/ {f=1; next} f==1 && /PDF/ {print \$3; exit}")" +OUTPUT="$(basename "$GUIDE_URL" | cut -f1 -d'?')" + +if [ ! -f "files/$OUTPUT" ]; then + rm files/*.pdf -f + curl -s "$GUIDE_URL" -o "files/$OUTPUT" +fi + +file "files/$OUTPUT" | grep -q "PDF document" + +install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/Bookshelf" +install -v -o 1000 -g 1000 -m 644 "files/$OUTPUT" "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/Bookshelf/" diff --git a/stage4/03-magpi/files/.gitignore b/stage4/03-bookshelf/files/.gitignore similarity index 100% rename from stage4/03-magpi/files/.gitignore rename to stage4/03-bookshelf/files/.gitignore diff --git a/stage4/03-magpi/00-run.sh b/stage4/03-magpi/00-run.sh deleted file mode 100755 index b27b85f359..0000000000 --- a/stage4/03-magpi/00-run.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -e - -magpi_regex="MagPi[[:digit:]]*.pdf" -magpi_loc="$(curl -s https://magpi.raspberrypi.org/latest-pdf)" -magpi_latest="$(echo "$magpi_loc" | grep "$magpi_regex" -m 1 -o)" - -if [ ! -f "files/$magpi_latest" ]; then - find files/ -regextype grep -regex "files/$magpi_regex" -delete - wget "$magpi_loc" -O "files/$magpi_latest" -fi - -file "files/$magpi_latest" | grep -q "PDF document" - -install -v -o 1000 -g 1000 -d "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/MagPi" -install -v -o 1000 -g 1000 -m 644 "files/$magpi_latest" "${ROOTFS_DIR}/home/${FIRST_USER_NAME}/MagPi/" From 825107f04027269db77426046f5085475b1ea22f Mon Sep 17 00:00:00 2001 From: Serge Schneider <serge@raspberrypi.org> Date: Wed, 13 May 2020 13:51:36 +0100 Subject: [PATCH 53/66] Update release notes --- .../00-release/files/release_notes.txt | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index 8d7f014032..bac8091964 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,4 +1,38 @@ UNRELEASED: + * Added Bookshelf application + * Added Raspberry Pi Diagnostics application + * Added magnifier plugin to taskbar - needs magnifier application installed from Recommended Software to enable + * Added Magnifier application to Recommended Software + * Added marketing questionnaire as initial Chromium tab + * Version 0.25 of Scratch 2 included - uses external application to access IMU on SenseHAT + * Version 1.0.5 of Scratch 3 included - uses external application to access IMU on SenseHAT + * Version 32.0.0.371 of Flash player included + * Version 1.0.6 of Node-RED included + * Version 6.7.1 of VNC Server included + * Version 6.20.113 of VNC Client included + * Internal audio outputs enabled as separate ALSA devices + * MagPi preinstall removed and replaced with Beginner’s Guide + * MagPi weblink removed from main menu + * Chromium made default application for PDF files + * Common icon loading code for lxpanel plugins used + * Italian translations added + * Initial move of mouse pointer to menu button disabled + * Padding at left of menu button removed + * Focus behaviour changed so that focus moves to desktop if no windows are opened - improves reliability of Orca screen reader + * Bug fix - focus bug in volume plugin + * Bug fix - keyboard repeat interval bug in Mouse & Keyboard Settings + * Bug fix - battery detection bug in battery plugin + * Bug fix - spurious active areas on taskbar when plugins are hidden + * Bug fix - occasional crash in file manager on file selection + * Disk ID is now regenerated on first boot + * Updated udev rules + - Remove unused argon rule + - Add vcsm-cma to video group + - Add pwm to gpio group + * i2cprobe: More flexible I2C/SPI alias mapping + * Raspberry Pi firmware 21e1fe3477ffb708a5736ed61a924fd650031136 + * Linux kernel 4.19.118 +2020-02-13: * Raspberry Pi Configuration - screen blanking setting disabled if Xscreensaver is installed * Bug fix - switch to turn off VNC server in Raspberry Pi Configuration has no effect * Bug fix - fix %20 characters in file names From f663d4c6d124258362b955580e4f2b91dce0ddc8 Mon Sep 17 00:00:00 2001 From: Serge Schneider <serge@raspberrypi.com> Date: Mon, 22 Jun 2020 03:54:38 +0100 Subject: [PATCH 54/66] Add new changelog entry --- export-noobs/00-release/files/release_notes.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index bac8091964..bde0861e8a 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,4 +1,6 @@ UNRELEASED: + * +2020-05-27 * Added Bookshelf application * Added Raspberry Pi Diagnostics application * Added magnifier plugin to taskbar - needs magnifier application installed from Recommended Software to enable From 9a3a10bf1019ebb2d59053564dc6b90068bad27d Mon Sep 17 00:00:00 2001 From: Serge Schneider <serge@raspberrypi.com> Date: Mon, 22 Jun 2020 05:33:42 +0100 Subject: [PATCH 55/66] stage2: install raspinfo --- stage2/01-sys-tweaks/00-packages | 1 + 1 file changed, 1 insertion(+) diff --git a/stage2/01-sys-tweaks/00-packages b/stage2/01-sys-tweaks/00-packages index 16b9350f36..83ec74ce53 100644 --- a/stage2/01-sys-tweaks/00-packages +++ b/stage2/01-sys-tweaks/00-packages @@ -28,3 +28,4 @@ vl805fw ntfs-3g pciutils rpi-eeprom +raspinfo From 930d86115d5f3e51ba81e5e9031a555d47f5ae80 Mon Sep 17 00:00:00 2001 From: Serge Schneider <serge@raspberrypi.com> Date: Thu, 20 Aug 2020 11:22:33 +0100 Subject: [PATCH 56/66] Update release notes --- export-noobs/00-release/files/release_notes.txt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/export-noobs/00-release/files/release_notes.txt b/export-noobs/00-release/files/release_notes.txt index bde0861e8a..693eb49a52 100644 --- a/export-noobs/00-release/files/release_notes.txt +++ b/export-noobs/00-release/files/release_notes.txt @@ -1,6 +1,21 @@ UNRELEASED: * -2020-05-27 +2020-08-20: + * raspi-config - added selection of boot device order + * raspi-config - added selection of boot EEPROM version + * SD Card Copier - copy is now immediately aborted if drives are connected or disconnected while copying + * Version 32.0.0.414 of Flash player included + * User feedback survey removed from first run of Chromium + * Recommended Software - now allows multiple install and reinstall operations without having to close between each one + * Bug fix - misleading file browser from panel menu icon selection dialog - icons must now be in icon theme rather than arbitrary files + * Bug fix - items in main menu not being translated + * Bug fix - raspi-config not detecting audio devices in non-English locales + * Bug fix - Bookshelf claiming no disk space in non-English locales + * Bug fix - failed installation of both 32 and 64 bit versions of packages by Recommended Software on 64-bit images + * Italian translations added (thanks to Emanuele Goldoni and the Italian translation team) + * Raspberry Pi firmware ef72c17bcaaeb89093d87bcf71f3228e1b5e1fff + * Linux kernel 5.4.51 +2020-05-27: * Added Bookshelf application * Added Raspberry Pi Diagnostics application * Added magnifier plugin to taskbar - needs magnifier application installed from Recommended Software to enable From 78c9e2cf02c312069701dc21f0496a2091b351f4 Mon Sep 17 00:00:00 2001 From: Serge Schneider <serge@raspberrypi.com> Date: Mon, 24 Aug 2020 15:45:57 +0100 Subject: [PATCH 57/66] Raspbian -> Raspberry Pi OS --- stage2/EXPORT_NOOBS | 2 +- stage4/EXPORT_NOOBS | 2 +- stage5/EXPORT_NOOBS | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stage2/EXPORT_NOOBS b/stage2/EXPORT_NOOBS index 136cc77778..0d78ecfd03 100644 --- a/stage2/EXPORT_NOOBS +++ b/stage2/EXPORT_NOOBS @@ -1,2 +1,2 @@ -NOOBS_NAME="Raspbian Lite" +NOOBS_NAME="Raspberry Pi OS Lite (32-bit)" NOOBS_DESCRIPTION="A port of Debian with no desktop environment" diff --git a/stage4/EXPORT_NOOBS b/stage4/EXPORT_NOOBS index 2ef6d7b486..f197ee1db7 100644 --- a/stage4/EXPORT_NOOBS +++ b/stage4/EXPORT_NOOBS @@ -1,2 +1,2 @@ -NOOBS_NAME="Raspbian" +NOOBS_NAME="Raspberry Pi OS (32-bit)" NOOBS_DESCRIPTION="A port of Debian with the Raspberry Pi Desktop" diff --git a/stage5/EXPORT_NOOBS b/stage5/EXPORT_NOOBS index cb1020328e..ac7051f0c5 100644 --- a/stage5/EXPORT_NOOBS +++ b/stage5/EXPORT_NOOBS @@ -1,2 +1,2 @@ -NOOBS_NAME="Raspbian Full" +NOOBS_NAME="Raspberry Pi OS Full (32-bit)" NOOBS_DESCRIPTION="A port of Debian with desktop and recommended applications" From d6207a620a10ba0ec25f95a637d3fdd272b47e84 Mon Sep 17 00:00:00 2001 From: Serge Schneider <serge@raspberrypi.com> Date: Mon, 24 Aug 2020 17:01:54 +0100 Subject: [PATCH 58/66] Update OS.png --- export-noobs/00-release/files/OS.png | Bin 1399 -> 1752 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/export-noobs/00-release/files/OS.png b/export-noobs/00-release/files/OS.png index 02b67cf7e9fa5352b828649bb11f5a135a0e91f0..3091bf95064eeb6364b8d1e22faae101eaf1ecf5 100644 GIT binary patch delta 1747 zcmV;^1}ypa3fK*h8Gi-<004~sxNQIc010qNS#tmY3labT3lag+-G2N400xRlL_t(o zg{@g%OjB1J{#~SEp|;g(T9pOZz$p(FLX3N;vh870Uo_FVM{&vCMA_rqgYE^lrvdu7 z==Q2E!6ln)$u<?1Y!8bq$&>|LS*+SlK`1R1i=5><JqHf=-hXp%#eK<@_Vk|L?>oOg z-#PbcFviFUhGDc2(Lo}5Q{2{0MAJlcU0nT)v2i;ShGEnzbAzUz<=nWVe>;MLR1Xo= zZ)pkDVQkypTH4$aqQ_%ds`6FROuE27-;Yn=?+qgAlFsD(Dxaqvb1)ZJ8}U+=&qK+f zG~JI+(z9HV9)I7>-kX~#{;ke0hv1opSmbo{a6N5~h8!b2lPS=H_yqm*SprdQ5ySD= z@#X-?ZFtS^IR8Onf)ZE8LHbk1*ctQh6`Fb1XVSB-<bbtdFTMV5E$!^s8W2(Mi5_kU z>^RimN)CVz_!23%Ku3_~az%QUpSO(LjR8B4HX(fnh=1t7&W^3F#N6yj=m<I%F4Bt2 zj17%`eyy&lw2(k5bwDt5K5Ypy#-?V{g{z4xNy~3=j<mvP^4E+d0>arMhQCQt)}dTR z2JWHZuEJ;81O<AAuOw|F1)#pRw1fzYczicYfBlf+9gXhBXUzNg^8{_%`--*}u{aTg z9vuls9e*?o<Ew^P<Y?@8Gmn}Mmp&ZilA{8W^8S~5Ea_Is4W0j!Mg~$}GsZe}ww)pf zbR~z<(@v3uBSg&%jAcvRY5grz;E@{{NI{yqoCuV=lRy^_yc!F0Ns&O|51qeliJk;R z8PQkg$Wj;?NL_{9740N8B!i;M>QHw8NXdq1t$zy95nnwut}fNu*t0BsKbxY#LT1s1 zY2H5&bzNh;5J3^a{z#>_?gM`l?O79{nu=0gotwHtjjPwvzUo@rxz}b>bS;0M`Zn(3 z-_y?vbZc&cE@Ve3JzoIHgD(|98M!8pzwX?|Hx`Kj@wrLro4QRG!ZF7Mc0U=W)~fZ( z7Jrdnn5WK1ztLzh>l#V7CP8=Aod`Bt$bCHV2R(dV;LhC8Jvq#yDFIvE8`|)#PWaHm zjo`s1kDpqq)-Mjg5mujDDDn%Rhm=~AKsr$Z*YYJ|W|EOrUfS&qlQ@oPVJ}ikXpdAb z=^q?k$|ZSI?5o*An^slR!{@VfDL2j|ihprnw3y{-J>qMi&fxZCwRdZ7l1>In8NuQQ z3z>E&0@@lB_4fp;++STwz0<cTw=hp9g4=DI0<|Wig*n}!Hp@M-_GVa-lLT2Tn26Tt z>QHwc42t7VR2@IHeuuVW;rwv=7oPUZo8ICnbh{4`L>=cAiV2*$?MQ0RgT4w+^nYSF zMgyDQAzy{3lvWKn5`_<kC<z@oc^@<rHlYCU(d6+*%RUbphJmh%o(;88qsPDKSQPaC z0xT9bNi+*G1E0dTYXrMsK<!*W8gv5EmY#Q)9<%Mnr2ts=Wjlh=R+9k$-RcB%D!LcA z`84f#FLV@(u?axbe6O1hazG-`aeq$0t|HMlb%zsnvL_eg20Mb&4;ABM!Vn}Rt|1AD zDQRDbUz=8WxtxsIkbqc24^`X5GsJyPoA0+1>i)q(=4d`J&l^NNk-+J`np&=lBn0`p ze2Th)&2(zrj%7x$80;SCYFWRyU$uvWL}$>?YgUZ+o5@&oP`nLDf(TA8$A2<IeB4|! z5|D{TO#{Jk$G?NTaU?((cCib6o4-eIdn0u7X-0~CgZV9mPN>mMUyzBw<=i+=k0gsl zm?LKfQi@2*`{gz#7qIuik8;LGj4{iziLOa_sF4~qI`8@F>D<O$Tx5ysnYG)^K%~^g zsHY-)R`z;JdbI>am=ltS3V#qjYqQTf0VEJPhXo{bFQA-crXO-(2M8@9;wC*L^b<9w zMoxv08{6o)62w1tXFXugnlLYHJ1LPsjX@Lfm|zFY74`h$1jVz$4XIgX$Ooj(N53yS zh)O_a<iS=KJ&=bFr{@y4XA(RxUEl2u2R>OBUFHa@ml8yx&SXP?lz+NY4A$<q*cRu< zX>rV289|j~q|zI}30aCR4w_PQOFPK&j>h2@donZ-&omHs98{I3I#+UK5u~L9EVS{o zIu5dU_;EV_UCfS>O_}tHhj!QJ;<644FeKi7wn7r*I3njn4lqd-=C(4%y2>F}HbI4G zoH2%!AA>Wb*{(q(piBTFdLVWTbKO#EMp-G=PBsi|O(*564>SrQW_tC}i-@h*2?)N- pCH{*6I)*Rmg)ub2%Iz~o{{i3Q1??G5KNkQ1002ovPDHLkV1fkNI|Kj# delta 1391 zcmV-#1(5pK4fhI=8Gix*000A=FFF7K010qNS#tmY4s-wj4s-!)B(v54000McNliru z;{^^5Aqf28ixdC=1r|v}K~z}7?N}{%BRLFxz3+gA*(`>JQ<h;3oU(*9YzMaN$~J5Z zyDZ1Htbr+OS;9InWeJN}4K>VW7TW{UpY-pp$$j4~IkB;2J%3AnlI+?0`ST}!h5UwJ zB)<&!_rIU62E)etAQG7YD5WW*OsU)DVpHv8Sb67?NW)A-L>T~W)a`Qlk>$OQ&iG_l zEf;r!K$gfr+YEq2Bu>!_nEJ!P`0}zk9JsZM5>!rlKcfx+NQ1CU0K~)QcD7h-;qlt7 zU{Zc;w0$*05P$GOZYI}6)G$*ob<5Xk_J~qMQ;VCr?Lr+nP>u(40tld<p-oA`dVW2Z zEc7Y^+F1FhoGFmno?LlRNF#_3NC3E&u(A72Niha<pr27AcrJmTw-{Wq)@}!EIz|}5 z%fq*VDG4I$i;x%qG7SKvAH4K8;%8z?dX9NSbV5pRM}IB=hx<iPT#WQ)Boo731XE_g zrKT1#$p0{Y8caVkz0HV&Yw?q`4!m_9=iNda{IzTjW(LJbyGdwj0U(Uk8JqGoYH;w= zkQe*A6p$a&%U;>@^Wdj1u!9%87(iI1&5^JYcfrQw*SEJ@=kb%ARwwm*1`;#W5QKG# zD*=!b8Gix`oCp9iFbA3pxK7bYp69dWV)x1gz`M1G<e+j6BFq_v=*((M53%(k=RT-} z-U{&!i+~8256JvkkE_A(uCBjYJyZ%n0FIrX<n|R)12A&@BR3fUVA8}1hofpZzP#MA zNx0?ei+M&pb-odJk#{sjP8}xzz;Q?Q71gtP$A9ir4Tdp>s-pm`MUI_svwGxs?75Dz z7Fmi+nt1Gdhu}p{oM!=mBco#sqtnw}&bVPFKm*ezPB?TGom;(66o6?H&-_Dz9x0mU zHUkoH)5K%vN7j^z0N}mY`~z@3uOT8pf8`_4S9E4gJEeisj*2PGqvS-R$MFoPI?528 zd4IM90IS9F`{?Z3_<V~{e;<t!`*UjmDB$a(^(Q$p8bD8Huf|J72Z{)EnH#X5-P~+( z#)IA=d;h03rJ_Pn-@Gvow1t%3Ti(-|CF~Q8t&PmpVE9>JiJ?@~W@>xPZ-pTMTuS(0 zPXG*|uc%@EEN}=he{@m+e$V<12LN>xet$!tfagK0v%t+~fhnUWKCVUPQNl}wS&Vgj z&=`5YIh%kfho@YR0<G0&S)D0ba;TtK&<Fq=JAZ0SP81+F9Gu8kt1VF!%tEMEerR+% zd&Qw$vKHAVT7(4K`E1GjK02FRTzs?oE~F>VHhFvglH}7SUU1k{=ww-wQYXu<IDg!y zutlvt+%LTMIng*bt?4TcE!SpU`<CR#j-7}C&T~@`0l1FwPapDbF<abjk;eyR*(Qd5 ztQg;{Zo6Ujo_<$n*g$PH0d#xa?P~S;kFk1rT^cC$#psXpC8aM$KcPO`8IQMa654du zFB7TiC@1gc59%mwJK5}4q-dA!)PF6CyD008LazZ!H1dA4GX~(yG0}@U(<YTQcE^jr zVNoRS&#l>ijA8ZI91j#}AONc<?QMVFwVPY<I$Pe~?|$cM>0K)7>Wl?f90=$svRT#! zk_C4mctKxLt}_=>9fg!$^8M~tpXUeM>MlN}(=@l{&DnkRd=~|PGP>v<TxecT|J5_K zmDb9j=sD*EV93kY5?J7(0LZ)fyKloCJ$@B=_P#Q@uau#d&vD{|w)S?t{JfpL9sYrw x42R3bD#nLGNJPD|cX@rim65&wf4=-z@)y5C*d=ZYi=6-f002ovPDHLkV1ll4n5X~% From c1a7dae113ce943abe8bf5d5ab36fb7aac829fd2 Mon Sep 17 00:00:00 2001 From: "Daniel F. Dickinson" <cshored@danielfdickinson.ca> Date: Tue, 8 Sep 2020 16:16:07 -0400 Subject: [PATCH 59/66] Enable adding SSH pubkey and setting pubkey only (#380) This commit add the ability to specify an SSH public key as well as the option to disable password authentication and only allow public key authentication for SSH. Signed-off-by: Daniel F. Dickinson <cshored@thecshore.com> --- README.md | 12 ++++++++++++ build.sh | 8 ++++++++ stage2/01-sys-tweaks/01-run.sh | 12 ++++++++++++ 3 files changed, 32 insertions(+) diff --git a/README.md b/README.md index 29d81667d4..e7f224ac8e 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,18 @@ The following environment variables are supported: Setting to `1` will enable ssh server for remote log in. Note that if you are using a common password such as the defaults there is a high risk of attackers taking over you Raspberry Pi. + * `PUBKEY_SSH_FIRST_USER` (Default: unset) + + Setting this to a value will make that value the contents of the FIRST_USER_NAME's ~/.ssh/authorized_keys. Obviously the value should + therefore be a valid authorized_keys file. Note that this does not + automatically enable SSH. + + * `PUBKEY_ONLY_SSH` (Default: `0`) + + * Setting to `1` will disable password authentication for SSH and enable + public key authentication. Note that if SSH is not enabled this will take + effect when SSH becomes enabled. + * `STAGE_LIST` (Default: `stage*`) If set, then instead of working through the numeric stages in order, this list will be followed. For example setting to `"stage0 stage1 mystage stage2"` will run the contents of `mystage` before stage2. Note that quotes are needed around the list. An absolute or relative path can be given for stages outside the pi-gen directory. diff --git a/build.sh b/build.sh index a8247ab040..6f720b1f50 100755 --- a/build.sh +++ b/build.sh @@ -171,6 +171,7 @@ export WPA_ESSID export WPA_PASSWORD export WPA_COUNTRY export ENABLE_SSH="${ENABLE_SSH:-0}" +export PUBKEY_ONLY_SSH="${PUBKEY_ONLY_SSH:-0}" export LOCALE_DEFAULT="${LOCALE_DEFAULT:-en_GB.UTF-8}" @@ -181,6 +182,8 @@ export TIMEZONE_DEFAULT="${TIMEZONE_DEFAULT:-Europe/London}" export GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"} +export PUBKEY_SSH_FIRST_USER + export CLEAN export IMG_NAME export APT_PROXY @@ -226,6 +229,11 @@ if [[ -n "${WPA_PASSWORD}" && ${#WPA_PASSWORD} -lt 8 || ${#WPA_PASSWORD} -gt 63 exit 1 fi +if [[ "${PUBKEY_ONLY_SSH}" = "1" && -z "${PUBKEY_SSH_FIRST_USER}" ]]; then + echo "Must set 'PUBKEY_SSH_FIRST_USER' to a valid SSH public key if using PUBKEY_ONLY_SSH" + exit 1 +fi + mkdir -p "${WORK_DIR}" log "Begin ${BASE_DIR}" diff --git a/stage2/01-sys-tweaks/01-run.sh b/stage2/01-sys-tweaks/01-run.sh index 8d28adccc1..c1836f9ca6 100755 --- a/stage2/01-sys-tweaks/01-run.sh +++ b/stage2/01-sys-tweaks/01-run.sh @@ -11,6 +11,18 @@ install -m 644 files/console-setup "${ROOTFS_DIR}/etc/default/" install -m 755 files/rc.local "${ROOTFS_DIR}/etc/" +if [ -n "${PUBKEY_SSH_FIRST_USER}" ]; then + install -v -m 0700 -o 1000 -g 1000 -d "${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.ssh + echo "${PUBKEY_SSH_FIRST_USER}" >"${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.ssh/authorized_keys + chown 1000:1000 "${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.ssh/authorized_keys + chmod 0600 "${ROOTFS_DIR}"/home/"${FIRST_USER_NAME}"/.ssh/authorized_keys +fi + +if [ "${PUBKEY_ONLY_SSH}" = "1" ]; then + sed -i -Ee 's/^#?[[:blank:]]*PubkeyAuthentication[[:blank:]]*no[[:blank:]]*$/PubkeyAuthentication yes/ +s/^#?[[:blank:]]*PasswordAuthentication[[:blank:]]*yes[[:blank:]]*$/PasswordAuthentication no/' "${ROOTFS_DIR}"/etc/ssh/sshd_config +fi + on_chroot << EOF systemctl disable hwclock.sh systemctl disable nfs-common From d6ee1e5469184e0a88c22e6c8f5d209350a34723 Mon Sep 17 00:00:00 2001 From: andrum99 <58046090+andrum99@users.noreply.github.com> Date: Wed, 16 Sep 2020 20:46:56 +0100 Subject: [PATCH 60/66] Update README.md --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e7f224ac8e..8b7f875af5 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ # pi-gen -_Tool used to create the raspberrypi.org Raspbian images_ +Tool used to create Raspberry Pi OS images. (Previously known as Raspbian). ## Dependencies -pi-gen runs on Debian based operating systems. Currently it is only supported on +pi-gen runs on Debian-based operating systems. Currently it is only supported on either Debian Buster or Ubuntu Xenial and is known to have issues building on earlier releases of these systems. On other Linux distributions it may be possible to use the Docker build described below. -To install the required dependencies for pi-gen you should run: +To install the required dependencies for `pi-gen` you should run: ```bash apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \ @@ -68,7 +68,7 @@ The following environment variables are supported: system for each build stage, amounting to tens of gigabytes in the case of Raspbian. - **CAUTION**: If your working directory is on an NTFS partition you probably won't be able to build. Make sure this is a proper Linux filesystem. + **CAUTION**: If your working directory is on an NTFS partition you probably won't be able to build: make sure this is a proper Linux filesystem. * `DEPLOY_DIR` (Default: `"$BASE_DIR/deploy"`) @@ -124,7 +124,7 @@ The following environment variables are supported: * `WPA_ESSID`, `WPA_PASSWORD` and `WPA_COUNTRY` (Default: unset) - If these are set, they are use to configure `wpa_supplicant.conf`, so that the Raspberry Pi can automatically connect to a wifi network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wifi network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters. + If these are set, they are use to configure `wpa_supplicant.conf`, so that the Raspberry Pi can automatically connect to a wireless network on first boot. If `WPA_ESSID` is set and `WPA_PASSWORD` is unset an unprotected wireless network will be configured. If set, `WPA_PASSWORD` must be between 8 and 63 characters. * `ENABLE_SSH` (Default: `0`) @@ -276,7 +276,7 @@ maintenance and allows for more easy customization. - **Stage 2** - lite system. This stage produces the Raspbian-Lite image. It installs some optimized memory functions, sets timezone and charmap - defaults, installs fake-hwclock and ntp, wifi and bluetooth support, + defaults, installs fake-hwclock and ntp, wireless LAN and bluetooth support, dphys-swapfile, and other basics for managing the hardware. It also creates necessary groups and gives the pi user access to sudo and the standard console hardware permission groups. From be8daaa7210d8a8df77792e7bcb3ec509d8e995e Mon Sep 17 00:00:00 2001 From: Raphael Nestler <raphael.nestler@gmail.com> Date: Fri, 18 Sep 2020 15:40:33 +0200 Subject: [PATCH 61/66] Only disable wifi if WPA_COUNTRY is not set (#416) * Only disable wifi if WPA_COUNTRY is not set * Use '-n' instead of '-v' to test if WPA_COUNTRY is set Apparently -v doesn't work in all shells. --- stage2/02-net-tweaks/01-run.sh | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/stage2/02-net-tweaks/01-run.sh b/stage2/02-net-tweaks/01-run.sh index 092975531f..d82381b1b7 100755 --- a/stage2/02-net-tweaks/01-run.sh +++ b/stage2/02-net-tweaks/01-run.sh @@ -25,7 +25,12 @@ network={ EOL fi -# Disable wifi on 5GHz models +# Disable wifi on 5GHz models if WPA_COUNTRY is not set mkdir -p "${ROOTFS_DIR}/var/lib/systemd/rfkill/" -echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmcnr:wlan" -echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmcnr:wlan" +if [ -n "$WPA_COUNTRY" ]; then + echo 0 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmcnr:wlan" + echo 0 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmcnr:wlan" +else + echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-3f300000.mmcnr:wlan" + echo 1 > "${ROOTFS_DIR}/var/lib/systemd/rfkill/platform-fe300000.mmcnr:wlan" +fi From d1596451b9d81c360c6cf89a10ed1c30e19e4e02 Mon Sep 17 00:00:00 2001 From: kdoren <kevind@avaya.com> Date: Wed, 23 Sep 2020 11:54:37 -0700 Subject: [PATCH 62/66] workaround build failure on AWS M6g instances (#449) --- export-image/prerun.sh | 28 ++++++++++++++++++++++++++-- export-noobs/prerun.sh | 28 ++++++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/export-image/prerun.sh b/export-image/prerun.sh index 8bbc566e06..4b5cf8cd5c 100755 --- a/export-image/prerun.sh +++ b/export-image/prerun.sh @@ -39,8 +39,32 @@ BOOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^1:' | cut -d':' -f 4 | tr -d B) ROOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^2:' | cut -d':' -f 2 | tr -d B) ROOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^2:' | 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}") +echo "Mounting BOOT_DEV..." +cnt=0 +until BOOT_DEV=$(losetup --show -f -o "${BOOT_OFFSET}" --sizelimit "${BOOT_LENGTH}" "${IMG_FILE}"); do + if [ $cnt -lt 5 ]; then + cnt=$((cnt + 1)) + echo "Error in losetup for BOOT_DEV. Retrying..." + sleep 5 + else + echo "ERROR: losetup for BOOT_DEV failed; exiting" + exit 1 + fi +done + +echo "Mounting ROOT_DEV..." +cnt=0 +until ROOT_DEV=$(losetup --show -f -o "${ROOT_OFFSET}" --sizelimit "${ROOT_LENGTH}" "${IMG_FILE}"); do + if [ $cnt -lt 5 ]; then + cnt=$((cnt + 1)) + echo "Error in losetup for ROOT_DEV. Retrying..." + sleep 5 + else + echo "ERROR: losetup for ROOT_DEV failed; exiting" + exit 1 + fi +done + echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH" echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH" diff --git a/export-noobs/prerun.sh b/export-noobs/prerun.sh index 54e0c59f07..c161ee6213 100755 --- a/export-noobs/prerun.sh +++ b/export-noobs/prerun.sh @@ -16,8 +16,32 @@ BOOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^1:' | cut -d':' -f 4 | tr -d B) ROOT_OFFSET=$(echo "$PARTED_OUT" | grep -e '^2:' | cut -d':' -f 2 | tr -d B) ROOT_LENGTH=$(echo "$PARTED_OUT" | grep -e '^2:' | 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}") +echo "Mounting BOOT_DEV..." +cnt=0 +until BOOT_DEV=$(losetup --show -f -o "${BOOT_OFFSET}" --sizelimit "${BOOT_LENGTH}" "${IMG_FILE}"); do + if [ $cnt -lt 5 ]; then + cnt=$((cnt + 1)) + echo "Error in losetup for BOOT_DEV. Retrying..." + sleep 5 + else + echo "ERROR: losetup for BOOT_DEV failed; exiting" + exit 1 + fi +done + +echo "Mounting ROOT_DEV..." +cnt=0 +until ROOT_DEV=$(losetup --show -f -o "${ROOT_OFFSET}" --sizelimit "${ROOT_LENGTH}" "${IMG_FILE}"); do + if [ $cnt -lt 5 ]; then + cnt=$((cnt + 1)) + echo "Error in losetup for ROOT_DEV. Retrying..." + sleep 5 + else + echo "ERROR: losetup for ROOT_DEV failed; exiting" + exit 1 + fi +done + echo "/boot: offset $BOOT_OFFSET, length $BOOT_LENGTH" echo "/: offset $ROOT_OFFSET, length $ROOT_LENGTH" From dd96ca1c8629da6589b381546e2b7677c7611744 Mon Sep 17 00:00:00 2001 From: Ani <aniongithub@users.noreply.github.com> Date: Tue, 6 Oct 2020 02:58:18 -0700 Subject: [PATCH 63/66] Automagically use i386/debian:buster (#415) * Autmagically use 1386/debian:buster when running on 64-bit host to prevent error #271 --- Dockerfile | 3 ++- build-docker.sh | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2e53149b52..3d5874d17b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,5 @@ -FROM debian:buster +ARG BASE_IMAGE=debian:buster +FROM ${BASE_IMAGE} ENV DEBIAN_FRONTEND noninteractive diff --git a/build-docker.sh b/build-docker.sh index b6a9ea3d81..350f722bde 100755 --- a/build-docker.sh +++ b/build-docker.sh @@ -73,7 +73,17 @@ fi # Modify original build-options to allow config file to be mounted in the docker container BUILD_OPTS="$(echo "${BUILD_OPTS:-}" | sed -E 's@\-c\s?([^ ]+)@-c /config@')" -${DOCKER} build -t pi-gen "${DIR}" +# Check the arch of the machine we're running on. If it's 64-bit, use a 32-bit base image instead +case "$(uname -m)" in + x86_64|aarch64) + BASE_IMAGE=i386/debian:buster + ;; + *) + BASE_IMAGE=debian:buster + ;; +esac +${DOCKER} build --build-arg BASE_IMAGE=${BASE_IMAGE} -t pi-gen "${DIR}" + 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 \ From 69c4a4f8c5bc03db0e2d6160f375a64a245501ba Mon Sep 17 00:00:00 2001 From: Viktor Petersson <vpetersson@screenly.io> Date: Tue, 20 Oct 2020 12:12:41 +0100 Subject: [PATCH 64/66] Removes file --- build-docker.sh.orig | 139 ------------------------------------------- 1 file changed, 139 deletions(-) delete mode 100755 build-docker.sh.orig diff --git a/build-docker.sh.orig b/build-docker.sh.orig deleted file mode 100755 index c0ef284c0f..0000000000 --- a/build-docker.sh.orig +++ /dev/null @@ -1,139 +0,0 @@ -#!/bin/bash -eu -DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" - -BUILD_OPTS="$*" - -DOCKER="docker" - -if ! ${DOCKER} ps >/dev/null 2>&1; then - DOCKER="sudo docker" -fi -if ! ${DOCKER} ps >/dev/null; then - echo "error connecting to docker:" - ${DOCKER} ps - exit 1 -fi - -CONFIG_FILE="" -if [ -f "${DIR}/config" ]; then - CONFIG_FILE="${DIR}/config" -fi - -while getopts "c:" flag; do - case "${flag}" in - c) - CONFIG_FILE="${OPTARG}" - ;; - *) ;; - - esac -done - -# Ensure that the configuration file is an absolute path -if test -x /usr/bin/realpath; then - CONFIG_FILE=$(realpath -s "$CONFIG_FILE" || realpath "$CONFIG_FILE") -fi - -# Ensure that the confguration file is present -if test -z "${CONFIG_FILE}"; then - echo "Configuration file need to be present in '${DIR}/config' or path passed as parameter" - exit 1 -else -<<<<<<< HEAD - # shellcheck disable=SC1090 - source "${CONFIG_FILE}" -======= - # shellcheck disable=SC1090 - source ${CONFIG_FILE} ->>>>>>> upstream/master -fi - -CONTAINER_NAME=${CONTAINER_NAME:-pigen_work} -CONTINUE=${CONTINUE:-0} -PRESERVE_CONTAINER=${PRESERVE_CONTAINER:-0} - -if [ -z "${IMG_NAME}" ]; then - echo "IMG_NAME not set in 'config'" 1>&2 - echo 1>&2 - exit 1 -fi - -# Ensure the Git Hash is recorded before entering the docker container -GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"} - -CONTAINER_EXISTS=$(${DOCKER} ps -a --filter name="${CONTAINER_NAME}" -q) -CONTAINER_RUNNING=$(${DOCKER} ps --filter name="${CONTAINER_NAME}" -q) -if [ "${CONTAINER_RUNNING}" != "" ]; then - echo "The build is already running in container ${CONTAINER_NAME}. Aborting." - exit 1 -fi -if [ "${CONTAINER_EXISTS}" != "" ] && [ "${CONTINUE}" != "1" ]; then - echo "Container ${CONTAINER_NAME} already exists and you did not specify CONTINUE=1. Aborting." - echo "You can delete the existing container like this:" - echo " ${DOCKER} rm -v ${CONTAINER_NAME}" - exit 1 -fi - -# Modify original build-options to allow config file to be mounted in the docker container -BUILD_OPTS="$(echo "${BUILD_OPTS:-}" | sed -E 's@\-c\s?([^ ]+)@-c /config@')" - -# Check the arch of the machine we're running on. If it's 64-bit, use a 32-bit base image instead -case "$(uname -m)" in - x86_64|aarch64) - BASE_IMAGE=i386/debian:buster - ;; - *) - BASE_IMAGE=debian:buster - ;; -esac -${DOCKER} build --build-arg BASE_IMAGE=${BASE_IMAGE} -t pi-gen "${DIR}" - -if [ "${CONTAINER_EXISTS}" != "" ]; then -<<<<<<< HEAD - trap 'echo "got CTRL+C... please wait 5s" && ${DOCKER} stop -t 5 ${CONTAINER_NAME}_cont' SIGINT SIGTERM - time ${DOCKER} run --rm --privileged \ - --volume "${CONFIG_FILE}":/config:ro \ - --volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \ - pi-gen \ - bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && -======= - trap 'echo "got CTRL+C... please wait 5s" && ${DOCKER} stop -t 5 ${CONTAINER_NAME}_cont' SIGINT SIGTERM - time ${DOCKER} run --rm --privileged \ - --volume "${CONFIG_FILE}":/config:ro \ - -e "GIT_HASH=${GIT_HASH}" \ - --volumes-from="${CONTAINER_NAME}" --name "${CONTAINER_NAME}_cont" \ - pi-gen \ - bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && ->>>>>>> upstream/master - cd /pi-gen; ./build.sh ${BUILD_OPTS} && - rsync -av work/*/build.log deploy/" & - wait "$!" -else -<<<<<<< HEAD - trap 'echo "got CTRL+C... please wait 5s" && ${DOCKER} stop -t 5 ${CONTAINER_NAME}' SIGINT SIGTERM - time ${DOCKER} run --name "${CONTAINER_NAME}" --privileged \ - --volume "${CONFIG_FILE}":/config:ro \ - pi-gen \ - bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && -======= - trap 'echo "got CTRL+C... please wait 5s" && ${DOCKER} stop -t 5 ${CONTAINER_NAME}' SIGINT SIGTERM - time ${DOCKER} run --name "${CONTAINER_NAME}" --privileged \ - --volume "${CONFIG_FILE}":/config:ro \ - -e "GIT_HASH=${GIT_HASH}" \ - pi-gen \ - bash -e -o pipefail -c "dpkg-reconfigure qemu-user-static && ->>>>>>> upstream/master - cd /pi-gen; ./build.sh ${BUILD_OPTS} && - rsync -av work/*/build.log deploy/" & - wait "$!" -fi -echo "copying results from deploy/" -${DOCKER} cp "${CONTAINER_NAME}":/pi-gen/deploy . -ls -lah deploy - -# cleanup -if [ "${PRESERVE_CONTAINER}" != "1" ]; then - ${DOCKER} rm -v "${CONTAINER_NAME}" -fi - -echo "Done! Your image(s) should be in deploy/" From 4786b2ea9292ae366600d1db117cb45beef30d56 Mon Sep 17 00:00:00 2001 From: Viktor Petersson <vpetersson@screenly.io> Date: Tue, 20 Oct 2020 12:13:34 +0100 Subject: [PATCH 65/66] Removes another merge orphan --- build.sh.orig | 312 -------------------------------------------------- 1 file changed, 312 deletions(-) delete mode 100755 build.sh.orig diff --git a/build.sh.orig b/build.sh.orig deleted file mode 100755 index 4970bc0a03..0000000000 --- a/build.sh.orig +++ /dev/null @@ -1,312 +0,0 @@ -#!/bin/bash -e -# shellcheck disable=SC2119 -run_sub_stage() { - log "Begin ${SUB_STAGE_DIR}" - pushd "${SUB_STAGE_DIR}" >/dev/null - for i in {00..99}; do - if [ -f "${i}-debconf" ]; then - log "Begin ${SUB_STAGE_DIR}/${i}-debconf" - on_chroot <<EOF -debconf-set-selections <<SELEOF -$(cat "${i}-debconf") -SELEOF -EOF - -<<<<<<< HEAD - log "End ${SUB_STAGE_DIR}/${i}-debconf" - fi - if [ -f "${i}-packages-nr" ]; then - log "Begin ${SUB_STAGE_DIR}/${i}-packages-nr" - PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" <"${i}-packages-nr")" - if [ -n "$PACKAGES" ]; then - on_chroot <<EOF -apt-get install --no-install-recommends -y $PACKAGES -EOF - fi - log "End ${SUB_STAGE_DIR}/${i}-packages-nr" - fi - if [ -f "${i}-packages" ]; then - log "Begin ${SUB_STAGE_DIR}/${i}-packages" - PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" <"${i}-packages")" - if [ -n "$PACKAGES" ]; then - on_chroot <<EOF -apt-get install -y $PACKAGES -======= - log "End ${SUB_STAGE_DIR}/${i}-debconf" - fi - if [ -f "${i}-packages-nr" ]; then - log "Begin ${SUB_STAGE_DIR}/${i}-packages-nr" - PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${i}-packages-nr")" - if [ -n "$PACKAGES" ]; then - on_chroot << EOF -apt-get -o APT::Acquire::Retries=3 install --no-install-recommends -y $PACKAGES -EOF - fi - log "End ${SUB_STAGE_DIR}/${i}-packages-nr" - fi - if [ -f "${i}-packages" ]; then - log "Begin ${SUB_STAGE_DIR}/${i}-packages" - PACKAGES="$(sed -f "${SCRIPT_DIR}/remove-comments.sed" < "${i}-packages")" - if [ -n "$PACKAGES" ]; then - on_chroot << EOF -apt-get -o APT::Acquire::Retries=3 install -y $PACKAGES ->>>>>>> upstream/master -EOF - fi - log "End ${SUB_STAGE_DIR}/${i}-packages" - fi - if [ -d "${i}-patches" ]; then - log "Begin ${SUB_STAGE_DIR}/${i}-patches" - pushd "${STAGE_WORK_DIR}" >/dev/null - if [ "${CLEAN}" = "1" ]; then - 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 - quilt upgrade - if [ -e "${SUB_STAGE_DIR}/${i}-patches/EDIT" ]; then - echo "Dropping into bash to edit patches..." - bash - fi - RC=0 - quilt push -a || RC=$? - case "$RC" in - 0 | 2) ;; - - *) - false - ;; - esac - popd >/dev/null - log "End ${SUB_STAGE_DIR}/${i}-patches" - fi - if [ -x ${i}-run.sh ]; then - log "Begin ${SUB_STAGE_DIR}/${i}-run.sh" - ./${i}-run.sh - log "End ${SUB_STAGE_DIR}/${i}-run.sh" - fi - if [ -f ${i}-run-chroot.sh ]; then - log "Begin ${SUB_STAGE_DIR}/${i}-run-chroot.sh" - on_chroot <${i}-run-chroot.sh - log "End ${SUB_STAGE_DIR}/${i}-run-chroot.sh" - fi - done - popd >/dev/null - log "End ${SUB_STAGE_DIR}" -} - -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 - if [ ! -f SKIP_IMAGES ]; 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}" - fi - fi - if [ -x prerun.sh ]; then - log "Begin ${STAGE_DIR}/prerun.sh" - ./prerun.sh - 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 - run_sub_stage - fi - done - fi - unmount "${WORK_DIR}/${STAGE}" - PREV_STAGE="${STAGE}" - PREV_STAGE_DIR="${STAGE_DIR}" - PREV_ROOTFS_DIR="${ROOTFS_DIR}" - popd >/dev/null - log "End ${STAGE_DIR}" -} - -if [ "$(id -u)" != "0" ]; then - echo "Please run as root" 1>&2 - exit 1 -fi - -<<<<<<< HEAD -======= -BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -export BASE_DIR - ->>>>>>> upstream/master -if [ -f config ]; then - # shellcheck disable=SC1091 - source config -fi - -while getopts "c:" flag; do - case "$flag" in - c) - EXTRA_CONFIG="$OPTARG" - # shellcheck disable=SC1090 - source "$EXTRA_CONFIG" - ;; - *) ;; - - esac -done - -export PI_GEN=${PI_GEN:-pi-gen} -export PI_GEN_REPO=${PI_GEN_REPO:-https://github.com/RPi-Distro/pi-gen} - -if [ -z "${IMG_NAME}" ]; then - echo "IMG_NAME not set" 1>&2 - exit 1 -fi - -if [ -z "${REPOSITORY}" ]; then - echo "REPOSITORY not set" 1>&2 - exit 1 -fi - -if [ -z "${BRANCH}" ]; then - echo "BRANCH not set" 1>&2 - exit 1 -fi - -export USE_QEMU="${USE_QEMU:-0}" -export IMG_DATE="${IMG_DATE:-"$(date +%Y-%m-%d)"}" -export IMG_FILENAME="${IMG_FILENAME:-"${IMG_DATE}-${IMG_NAME}"}" -export ZIP_FILENAME="${ZIP_FILENAME:-"image_${IMG_DATE}-${IMG_NAME}"}" - -export SCRIPT_DIR="${BASE_DIR}/scripts" -export WORK_DIR="${WORK_DIR:-"${BASE_DIR}/work/${IMG_DATE}-${IMG_NAME}"}" -export DEPLOY_DIR=${DEPLOY_DIR:-"${BASE_DIR}/deploy"} -export DEPLOY_ZIP="${DEPLOY_ZIP:-1}" -export LOG_FILE="${WORK_DIR}/build.log" - -export TARGET_HOSTNAME=${TARGET_HOSTNAME:-raspberrypi} - -export FIRST_USER_NAME=${FIRST_USER_NAME:-pi} -export FIRST_USER_PASS=${FIRST_USER_PASS:-raspberry} -export RELEASE=${RELEASE:-buster} -export WPA_ESSID -export WPA_PASSWORD -export WPA_COUNTRY -export ENABLE_SSH="${ENABLE_SSH:-0}" -export PUBKEY_ONLY_SSH="${PUBKEY_ONLY_SSH:-0}" - -export LOCALE_DEFAULT="${LOCALE_DEFAULT:-en_GB.UTF-8}" - -export KEYBOARD_KEYMAP="${KEYBOARD_KEYMAP:-gb}" -export KEYBOARD_LAYOUT="${KEYBOARD_LAYOUT:-English (UK)}" - -export TIMEZONE_DEFAULT="${TIMEZONE_DEFAULT:-Europe/London}" - -export GIT_HASH=${GIT_HASH:-"$(git rev-parse HEAD)"} - -export PUBKEY_SSH_FIRST_USER - -export CLEAN -export IMG_NAME -export REPOSITORY -export BRANCH -export APT_PROXY - -export STAGE -export STAGE_DIR -export STAGE_WORK_DIR -export PREV_STAGE -export PREV_STAGE_DIR -export ROOTFS_DIR -export PREV_ROOTFS_DIR -export IMG_SUFFIX -export NOOBS_NAME -export NOOBS_DESCRIPTION -export EXPORT_DIR -export EXPORT_ROOTFS_DIR - -export QUILT_PATCHES -export QUILT_NO_DIFF_INDEX=1 -export QUILT_NO_DIFF_TIMESTAMPS=1 -export QUILT_REFRESH_ARGS="-p ab" - -# shellcheck source=scripts/common -source "${SCRIPT_DIR}/common" -# shellcheck source=scripts/dependencies_check -source "${SCRIPT_DIR}/dependencies_check" - -dependencies_check "${BASE_DIR}/depends" - -#check username is valid -if [[ ! "$FIRST_USER_NAME" =~ ^[a-z][-a-z0-9_]*$ ]]; then - echo "Invalid FIRST_USER_NAME: $FIRST_USER_NAME" - exit 1 -fi - -if [[ -n "${APT_PROXY}" ]] && ! curl --silent "${APT_PROXY}" >/dev/null; then - echo "Could not reach APT_PROXY server: ${APT_PROXY}" - exit 1 -fi - -if [[ -n "${WPA_PASSWORD}" && ${#WPA_PASSWORD} -lt 8 || ${#WPA_PASSWORD} -gt 63 ]] ; then - echo "WPA_PASSWORD" must be between 8 and 63 characters - exit 1 -fi - -if [[ "${PUBKEY_ONLY_SSH}" = "1" && -z "${PUBKEY_SSH_FIRST_USER}" ]]; then - echo "Must set 'PUBKEY_SSH_FIRST_USER' to a valid SSH public key if using PUBKEY_ONLY_SSH" - exit 1 -fi - -mkdir -p "${WORK_DIR}" -log "Begin ${BASE_DIR}" - -STAGE_LIST=${STAGE_LIST:-${BASE_DIR}/stage*} - -for STAGE_DIR in $STAGE_LIST; do - STAGE_DIR=$(realpath "${STAGE_DIR}") - 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 - run_stage - if [ "${USE_QEMU}" != "1" ]; then - 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 -done - -<<<<<<< HEAD -if [ -x postrun.sh ]; then - log "Begin postrun.sh" - cd "${BASE_DIR}" - ./postrun.sh - log "End postrun.sh" -======= -if [ -x ${BASE_DIR}/postrun.sh ]; then - log "Begin postrun.sh" - cd "${BASE_DIR}" - ./postrun.sh - log "End postrun.sh" ->>>>>>> upstream/master -fi - -log "End ${BASE_DIR}" From 6d3e477c52ec216418dd7d2b271156cc26913337 Mon Sep 17 00:00:00 2001 From: Viktor Petersson <vpetersson@screenly.io> Date: Tue, 20 Oct 2020 13:12:03 +0100 Subject: [PATCH 66/66] Brings in more config changes and sets defaults. --- config | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config b/config index d2dad35447..a08318e270 100644 --- a/config +++ b/config @@ -1,3 +1,9 @@ IMG_NAME='Screenly-OSE' REPOSITORY='https://github.com/Screenly/screenly-ose.git' BRANCH='production' +LOCALE_DEFAULT=en_US.UTF-8 +TARGET_HOSTNAME=screenly-ose +KEYBOARD_KEYMAP=us +KEYBOARD_LAYOUT="English (US)" +STAGE_LIST="stage0 stage1" +