Two purposes: * systemd filename friendly: "-" is used for "/" and must be escaped with "\x20" * ISO9660 filename friendly: "-" is replaced with "_" --- archiso/mkarchiso | 54 +++++++-------- configs/baseline/aitab | 2 +- configs/baseline/build.sh | 26 ++++---- configs/releng/airootfs/etc/fstab | 0 configs/releng/airootfs/etc/hostname | 1 + configs/releng/airootfs/etc/locale.conf | 1 + configs/releng/airootfs/etc/pam.d/su | 6 ++ configs/releng/airootfs/etc/sudoers.d/g_wheel | 1 + .../airootfs/etc/systemd/scripts/choose-mirror | 26 ++++++++ .../etc/systemd/system/choose-mirror.service | 10 +++ .../etc/systemd/system/etc-pacman.d-gnupg.mount | 8 +++ .../system/getty@tty1.service.d/autologin.conf | 3 + .../etc/systemd/system/pacman-init.service | 15 +++++ .../airootfs/etc/udev/rules.d/81-dhcpcd.rules | 1 + configs/releng/airootfs/root/.automated_script.sh | 34 ++++++++++ configs/releng/airootfs/root/.zlogin | 1 + configs/releng/airootfs/root/customize_airootfs.sh | 22 +++++++ configs/releng/airootfs/root/install.txt | 3 + configs/releng/aitab | 4 +- configs/releng/build.sh | 76 +++++++++++----------- configs/releng/root-image/etc/fstab | 0 configs/releng/root-image/etc/hostname | 1 - configs/releng/root-image/etc/locale.conf | 1 - configs/releng/root-image/etc/pam.d/su | 6 -- configs/releng/root-image/etc/sudoers.d/g_wheel | 1 - .../root-image/etc/systemd/scripts/choose-mirror | 26 -------- .../etc/systemd/system/choose-mirror.service | 10 --- .../etc/systemd/system/etc-pacman.d-gnupg.mount | 8 --- .../system/getty@tty1.service.d/autologin.conf | 3 - .../etc/systemd/system/pacman-init.service | 15 ----- .../root-image/etc/udev/rules.d/81-dhcpcd.rules | 1 - .../releng/root-image/root/.automated_script.sh | 34 ---------- configs/releng/root-image/root/.zlogin | 1 - .../releng/root-image/root/customize_root_image.sh | 22 ------- configs/releng/root-image/root/install.txt | 3 - docs/README.build | 2 +- 36 files changed, 214 insertions(+), 214 deletions(-) create mode 100644 configs/releng/airootfs/etc/fstab create mode 100644 configs/releng/airootfs/etc/hostname create mode 100644 configs/releng/airootfs/etc/locale.conf create mode 100644 configs/releng/airootfs/etc/pam.d/su create mode 100644 configs/releng/airootfs/etc/sudoers.d/g_wheel create mode 100755 configs/releng/airootfs/etc/systemd/scripts/choose-mirror create mode 100644 configs/releng/airootfs/etc/systemd/system/choose-mirror.service create mode 100644 configs/releng/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount create mode 100644 configs/releng/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf create mode 100644 configs/releng/airootfs/etc/systemd/system/pacman-init.service create mode 100644 configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules create mode 100755 configs/releng/airootfs/root/.automated_script.sh create mode 100644 configs/releng/airootfs/root/.zlogin create mode 100755 configs/releng/airootfs/root/customize_airootfs.sh create mode 100644 configs/releng/airootfs/root/install.txt delete mode 100644 configs/releng/root-image/etc/fstab delete mode 100644 configs/releng/root-image/etc/hostname delete mode 100644 configs/releng/root-image/etc/locale.conf delete mode 100644 configs/releng/root-image/etc/pam.d/su delete mode 100644 configs/releng/root-image/etc/sudoers.d/g_wheel delete mode 100755 configs/releng/root-image/etc/systemd/scripts/choose-mirror delete mode 100644 configs/releng/root-image/etc/systemd/system/choose-mirror.service delete mode 100644 configs/releng/root-image/etc/systemd/system/etc-pacman.d-gnupg.mount delete mode 100644 configs/releng/root-image/etc/systemd/system/getty@tty1.service.d/autologin.conf delete mode 100644 configs/releng/root-image/etc/systemd/system/pacman-init.service delete mode 100644 configs/releng/root-image/etc/udev/rules.d/81-dhcpcd.rules delete mode 100755 configs/releng/root-image/root/.automated_script.sh delete mode 100644 configs/releng/root-image/root/.zlogin delete mode 100755 configs/releng/root-image/root/customize_root_image.sh delete mode 100644 configs/releng/root-image/root/install.txt diff --git a/archiso/mkarchiso b/archiso/mkarchiso index 9655167..26a82ee 100755 --- a/archiso/mkarchiso +++ b/archiso/mkarchiso @@ -51,14 +51,14 @@ _chroot_init() { if [[ -f "${work_dir}/mkarchiso.init" ]]; then _msg_info "Initial enviroment already installed, skipping." else - mkdir -p ${work_dir}/root-image + mkdir -p ${work_dir}/airootfs _pacman "base syslinux" : > "${work_dir}/mkarchiso.init" fi } _chroot_run() { - eval arch-chroot ${work_dir}/root-image "${run_cmd}" + eval arch-chroot ${work_dir}/airootfs "${run_cmd}" } # Mount a filesystem (trap signals in case of error for unmounting it @@ -116,7 +116,7 @@ _usage () echo "usage ${app_name} [options] command <command options>" echo " general options:" echo " -p PACKAGE(S) Package(s) to install, can be used multiple times" - echo " -r <command> Run <command> inside root-image" + echo " -r <command> Run <command> inside airootfs" echo " -C <file> Config file for pacman." echo " Default: '${pacman_conf}'" echo " -L <label> Set a label for the disk" @@ -146,7 +146,7 @@ _usage () echo " checksum" echo " make a checksum.md5 for self-test" echo " pkglist" - echo " make a pkglist.txt of packages installed on root-image" + echo " make a pkglist.txt of packages installed on airootfs" echo " iso <image name>" echo " build an iso image from the working dir" exit ${1} @@ -189,51 +189,51 @@ _show_config () { echo } -# Install desired packages to root-image +# Install desired packages to airootfs _pacman () { - _msg_info "Installing packages to '${work_dir}/root-image/'..." + _msg_info "Installing packages to '${work_dir}/airootfs/'..." if [[ "${quiet}" = "y" ]]; then - pacstrap -C "${pacman_conf}" -c -d -G -M "${work_dir}/root-image" $* &> /dev/null + pacstrap -C "${pacman_conf}" -c -d -G -M "${work_dir}/airootfs" $* &> /dev/null else - pacstrap -C "${pacman_conf}" -c -d -G -M "${work_dir}/root-image" $* + pacstrap -C "${pacman_conf}" -c -d -G -M "${work_dir}/airootfs" $* fi _msg_info "Packages installed successfully!" } -# Cleanup root-image +# Cleanup airootfs _cleanup () { - _msg_info "Cleaning up what we can on root-image..." + _msg_info "Cleaning up what we can on airootfs..." # Delete initcpio image(s) - if [[ -d "${work_dir}/root-image/boot" ]]; then - find "${work_dir}/root-image/boot" -type f -name '*.img' -delete + if [[ -d "${work_dir}/airootfs/boot" ]]; then + find "${work_dir}/airootfs/boot" -type f -name '*.img' -delete fi # Delete kernel(s) - if [[ -d "${work_dir}/root-image/boot" ]]; then - find "${work_dir}/root-image/boot" -type f -name 'vmlinuz*' -delete + if [[ -d "${work_dir}/airootfs/boot" ]]; then + find "${work_dir}/airootfs/boot" -type f -name 'vmlinuz*' -delete fi # Delete pacman database sync cache files (*.tar.gz) - if [[ -d "${work_dir}/root-image/var/lib/pacman" ]]; then - find "${work_dir}/root-image/var/lib/pacman" -maxdepth 1 -type f -delete + if [[ -d "${work_dir}/airootfs/var/lib/pacman" ]]; then + find "${work_dir}/airootfs/var/lib/pacman" -maxdepth 1 -type f -delete fi # Delete pacman database sync cache - if [[ -d "${work_dir}/root-image/var/lib/pacman/sync" ]]; then - find "${work_dir}/root-image/var/lib/pacman/sync" -delete + if [[ -d "${work_dir}/airootfs/var/lib/pacman/sync" ]]; then + find "${work_dir}/airootfs/var/lib/pacman/sync" -delete fi # Delete pacman package cache - if [[ -d "${work_dir}/root-image/var/cache/pacman/pkg" ]]; then - find "${work_dir}/root-image/var/cache/pacman/pkg" -type f -delete + if [[ -d "${work_dir}/airootfs/var/cache/pacman/pkg" ]]; then + find "${work_dir}/airootfs/var/cache/pacman/pkg" -type f -delete fi # Delete all log files, keeps empty dirs. - if [[ -d "${work_dir}/root-image/var/log" ]]; then - find "${work_dir}/root-image/var/log" -type f -delete + if [[ -d "${work_dir}/airootfs/var/log" ]]; then + find "${work_dir}/airootfs/var/log" -type f -delete fi # Delete all temporary files and dirs - if [[ -d "${work_dir}/root-image/var/tmp" ]]; then - find "${work_dir}/root-image/var/tmp" -mindepth 1 -delete + if [[ -d "${work_dir}/airootfs/var/tmp" ]]; then + find "${work_dir}/airootfs/var/tmp" -mindepth 1 -delete fi # Delete package pacman related files. find "${work_dir}" \( -name "*.pacnew" -o -name "*.pacsave" -o -name "*.pacorig" \) -delete @@ -359,9 +359,9 @@ command_checksum () { command_pkglist () { _show_config pkglist - if _is_directory_changed "${work_dir}/root-image/var/lib/pacman/local" "${work_dir}/iso/${install_dir}/pkglist.${arch}.txt"; then + if _is_directory_changed "${work_dir}/airootfs/var/lib/pacman/local" "${work_dir}/iso/${install_dir}/pkglist.${arch}.txt"; then _msg_info "Creating a list of installed packages on live-enviroment..." - pacman -Sl -r "${work_dir}/root-image" --config "${pacman_conf}" | \ + pacman -Sl -r "${work_dir}/airootfs" --config "${pacman_conf}" | \ awk '/\[installed\]$/ {print $1 "/" $2 "-" $3}' > \ "${work_dir}/iso/${install_dir}/pkglist.${arch}.txt" _msg_info "Done!" @@ -450,7 +450,7 @@ command_prepare () { done < "${work_dir}/iso/${install_dir}/aitab" } -# Install packages on root-image. +# Install packages on airootfs. # A basic check to avoid double execution/reinstallation is done via hashing package names. command_install () { if [[ ! -f "${pacman_conf}" ]]; then diff --git a/configs/baseline/aitab b/configs/baseline/aitab index 234f61c..9134d60 100644 --- a/configs/baseline/aitab +++ b/configs/baseline/aitab @@ -1,2 +1,2 @@ # <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size> -root-image / %ARCH% gzip ext4 50% +airootfs / %ARCH% gzip ext4 50% diff --git a/configs/baseline/build.sh b/configs/baseline/build.sh index ed65e17..19bc0c4 100755 --- a/configs/baseline/build.sh +++ b/configs/baseline/build.sh @@ -20,24 +20,24 @@ run_once() { fi } -# Base installation (root-image) +# Base installation (airootfs) make_basefs() { mkarchiso -v -w "${work_dir}" -D "${install_dir}" init } -# Copy mkinitcpio archiso hooks and build initramfs (root-image) +# Copy mkinitcpio archiso hooks and build initramfs (airootfs) make_setup_mkinitcpio() { - cp /usr/lib/initcpio/hooks/archiso ${work_dir}/root-image/usr/lib/initcpio/hooks - cp /usr/lib/initcpio/install/archiso ${work_dir}/root-image/usr/lib/initcpio/install - cp ${script_path}/mkinitcpio.conf ${work_dir}/root-image/etc/mkinitcpio-archiso.conf + cp /usr/lib/initcpio/hooks/archiso ${work_dir}/airootfs/usr/lib/initcpio/hooks + cp /usr/lib/initcpio/install/archiso ${work_dir}/airootfs/usr/lib/initcpio/install + cp ${script_path}/mkinitcpio.conf ${work_dir}/airootfs/etc/mkinitcpio-archiso.conf mkarchiso -v -w "${work_dir}" -D "${install_dir}" -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run } # Prepare ${install_dir}/boot/ make_boot() { mkdir -p ${work_dir}/iso/${install_dir}/boot/${arch} - cp ${work_dir}/root-image/boot/archiso.img ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img - cp ${work_dir}/root-image/boot/vmlinuz-linux ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz + cp ${work_dir}/airootfs/boot/archiso.img ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img + cp ${work_dir}/airootfs/boot/vmlinuz-linux ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz } # Prepare /${install_dir}/boot/syslinux @@ -46,18 +46,18 @@ make_syslinux() { sed "s|%ARCHISO_LABEL%|${iso_label}|g; s|%INSTALL_DIR%|${install_dir}|g; s|%ARCH%|${arch}|g" ${script_path}/syslinux/syslinux.cfg > ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg - cp ${work_dir}/root-image/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/${install_dir}/boot/syslinux/ - cp ${work_dir}/root-image/usr/lib/syslinux/bios/menu.c32 ${work_dir}/iso/${install_dir}/boot/syslinux/ - cp ${work_dir}/root-image/usr/lib/syslinux/bios/libutil.c32 ${work_dir}/iso/${install_dir}/boot/syslinux/ + cp ${work_dir}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/${install_dir}/boot/syslinux/ + cp ${work_dir}/airootfs/usr/lib/syslinux/bios/menu.c32 ${work_dir}/iso/${install_dir}/boot/syslinux/ + cp ${work_dir}/airootfs/usr/lib/syslinux/bios/libutil.c32 ${work_dir}/iso/${install_dir}/boot/syslinux/ } # Prepare /isolinux make_isolinux() { mkdir -p ${work_dir}/iso/isolinux sed "s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg - cp ${work_dir}/root-image/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ - cp ${work_dir}/root-image/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ - cp ${work_dir}/root-image/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ + cp ${work_dir}/airootfs/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/airootfs/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ } # Process aitab diff --git a/configs/releng/airootfs/etc/fstab b/configs/releng/airootfs/etc/fstab new file mode 100644 index 0000000..e69de29 diff --git a/configs/releng/airootfs/etc/hostname b/configs/releng/airootfs/etc/hostname new file mode 100644 index 0000000..2dbe21e --- /dev/null +++ b/configs/releng/airootfs/etc/hostname @@ -0,0 +1 @@ +archiso diff --git a/configs/releng/airootfs/etc/locale.conf b/configs/releng/airootfs/etc/locale.conf new file mode 100644 index 0000000..01ec548 --- /dev/null +++ b/configs/releng/airootfs/etc/locale.conf @@ -0,0 +1 @@ +LANG=en_US.UTF-8 diff --git a/configs/releng/airootfs/etc/pam.d/su b/configs/releng/airootfs/etc/pam.d/su new file mode 100644 index 0000000..a291042 --- /dev/null +++ b/configs/releng/airootfs/etc/pam.d/su @@ -0,0 +1,6 @@ +#%PAM-1.0 +auth sufficient pam_rootok.so +auth sufficient pam_wheel.so trust use_uid +auth required pam_unix.so +account required pam_unix.so +session required pam_unix.so diff --git a/configs/releng/airootfs/etc/sudoers.d/g_wheel b/configs/releng/airootfs/etc/sudoers.d/g_wheel new file mode 100644 index 0000000..8c45359 --- /dev/null +++ b/configs/releng/airootfs/etc/sudoers.d/g_wheel @@ -0,0 +1 @@ +%wheel ALL=(ALL) NOPASSWD: ALL diff --git a/configs/releng/airootfs/etc/systemd/scripts/choose-mirror b/configs/releng/airootfs/etc/systemd/scripts/choose-mirror new file mode 100755 index 0000000..0ae0806 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/scripts/choose-mirror @@ -0,0 +1,26 @@ +#!/bin/bash + +get_cmdline() { + local param + for param in $(< /proc/cmdline); do + case "${param}" in + $1=*) echo "${param##*=}"; + return 0 + ;; + esac + done +} + +mirror=$(get_cmdline mirror) +[[ $mirror = auto ]] && mirror=$(get_cmdline archiso_http_srv) +[[ $mirror ]] || exit 0 + +mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig +cat >/etc/pacman.d/mirrorlist << EOF +# +# Arch Linux repository mirrorlist +# Generated by archiso +# + +Server = ${mirror%%/}/\$repo/os/\$arch +EOF diff --git a/configs/releng/airootfs/etc/systemd/system/choose-mirror.service b/configs/releng/airootfs/etc/systemd/system/choose-mirror.service new file mode 100644 index 0000000..1e4d771 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/choose-mirror.service @@ -0,0 +1,10 @@ +[Unit] +Description=Choose mirror from the kernel command line +ConditionKernelCommandLine=mirror + +[Service] +Type=oneshot +ExecStart=/etc/systemd/scripts/choose-mirror + +[Install] +WantedBy=multi-user.target diff --git a/configs/releng/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/configs/releng/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount new file mode 100644 index 0000000..4eab551 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount @@ -0,0 +1,8 @@ +[Unit] +Description=Temporary /etc/pacman.d/gnupg directory + +[Mount] +What=tmpfs +Where=/etc/pacman.d/gnupg +Type=tmpfs +Options=mode=0755 diff --git a/configs/releng/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/configs/releng/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf new file mode 100644 index 0000000..d1d8474 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux diff --git a/configs/releng/airootfs/etc/systemd/system/pacman-init.service b/configs/releng/airootfs/etc/systemd/system/pacman-init.service new file mode 100644 index 0000000..23b8144 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/pacman-init.service @@ -0,0 +1,15 @@ +[Unit] +Description=Initializes Pacman keyring +Wants=haveged.service +After=haveged.service +Requires=etc-pacman.d-gnupg.mount +After=etc-pacman.d-gnupg.mount + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/bin/pacman-key --init +ExecStart=/usr/bin/pacman-key --populate archlinux + +[Install] +WantedBy=multi-user.target diff --git a/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules b/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules new file mode 100644 index 0000000..1c4053c --- /dev/null +++ b/configs/releng/airootfs/etc/udev/rules.d/81-dhcpcd.rules @@ -0,0 +1 @@ +ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service" diff --git a/configs/releng/airootfs/root/.automated_script.sh b/configs/releng/airootfs/root/.automated_script.sh new file mode 100755 index 0000000..fb106da --- /dev/null +++ b/configs/releng/airootfs/root/.automated_script.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +script_cmdline () +{ + local param + for param in $(< /proc/cmdline); do + case "${param}" in + script=*) echo "${param##*=}" ; return 0 ;; + esac + done +} + +automated_script () +{ + local script rt + script="$(script_cmdline)" + if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then + if [[ "${script}" =~ ^http:// || "${script}" =~ ^ftp:// ]]; then + wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null + rt=$? + else + cp "${script}" /tmp/startup_script + rt=$? + fi + if [[ ${rt} -eq 0 ]]; then + chmod +x /tmp/startup_script + /tmp/startup_script + fi + fi +} + +if [[ $(tty) == "/dev/tty1" ]]; then + automated_script +fi diff --git a/configs/releng/airootfs/root/.zlogin b/configs/releng/airootfs/root/.zlogin new file mode 100644 index 0000000..f598e43 --- /dev/null +++ b/configs/releng/airootfs/root/.zlogin @@ -0,0 +1 @@ +~/.automated_script.sh diff --git a/configs/releng/airootfs/root/customize_airootfs.sh b/configs/releng/airootfs/root/customize_airootfs.sh new file mode 100755 index 0000000..9c85453 --- /dev/null +++ b/configs/releng/airootfs/root/customize_airootfs.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -e -u + +sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen +locale-gen + +ln -sf /usr/share/zoneinfo/UTC /etc/localtime + +usermod -s /usr/bin/zsh root +cp -aT /etc/skel/ /root/ + +useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh arch + +chmod 750 /etc/sudoers.d +chmod 440 /etc/sudoers.d/g_wheel + +sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist +sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf + +systemctl enable pacman-init.service choose-mirror.service +systemctl set-default multi-user.target diff --git a/configs/releng/airootfs/root/install.txt b/configs/releng/airootfs/root/install.txt new file mode 100644 index 0000000..3c8f171 --- /dev/null +++ b/configs/releng/airootfs/root/install.txt @@ -0,0 +1,3 @@ +View this installation guide online at +https://wiki.archlinux.org/index.php/Installation_Guide + diff --git a/configs/releng/aitab b/configs/releng/aitab index b7e9a17..f9b482d 100644 --- a/configs/releng/aitab +++ b/configs/releng/aitab @@ -1,3 +1,3 @@ # <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size> -root-image / i686 xz ext4 50% -root-image / x86_64 xz ext4 50% +airootfs / i686 xz ext4 50% +airootfs / x86_64 xz ext4 50% diff --git a/configs/releng/build.sh b/configs/releng/build.sh index 63b7126..2438175 100755 --- a/configs/releng/build.sh +++ b/configs/releng/build.sh @@ -51,53 +51,53 @@ make_pacman_conf() { sed -r "s|^#?\\s*CacheDir.+|CacheDir = $(echo -n ${_cache_dirs[@]})|g" ${script_path}/pacman.conf > ${pacman_conf} } -# Base installation, plus needed packages (root-image) +# Base installation, plus needed packages (airootfs) make_basefs() { setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" init setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -p "memtest86+ mkinitcpio-nfs-utils nbd" install } -# Additional packages (root-image) +# Additional packages (airootfs) make_packages() { setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -p "$(grep -h -v ^# ${script_path}/packages.{both,${arch}})" install } -# Copy mkinitcpio archiso hooks and build initramfs (root-image) +# Copy mkinitcpio archiso hooks and build initramfs (airootfs) make_setup_mkinitcpio() { local _hook for _hook in archiso archiso_shutdown archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_loop_mnt; do - cp /usr/lib/initcpio/hooks/${_hook} ${work_dir}/${arch}/root-image/usr/lib/initcpio/hooks - cp /usr/lib/initcpio/install/${_hook} ${work_dir}/${arch}/root-image/usr/lib/initcpio/install + cp /usr/lib/initcpio/hooks/${_hook} ${work_dir}/${arch}/airootfs/usr/lib/initcpio/hooks + cp /usr/lib/initcpio/install/${_hook} ${work_dir}/${arch}/airootfs/usr/lib/initcpio/install done - cp /usr/lib/initcpio/install/archiso_kms ${work_dir}/${arch}/root-image/usr/lib/initcpio/install - cp /usr/lib/initcpio/archiso_shutdown ${work_dir}/${arch}/root-image/usr/lib/initcpio - cp ${script_path}/mkinitcpio.conf ${work_dir}/${arch}/root-image/etc/mkinitcpio-archiso.conf + cp /usr/lib/initcpio/install/archiso_kms ${work_dir}/${arch}/airootfs/usr/lib/initcpio/install + cp /usr/lib/initcpio/archiso_shutdown ${work_dir}/${arch}/airootfs/usr/lib/initcpio + cp ${script_path}/mkinitcpio.conf ${work_dir}/${arch}/airootfs/etc/mkinitcpio-archiso.conf setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -r 'mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/archiso.img' run } -# Customize installation (root-image) -make_customize_root_image() { - cp -af ${script_path}/root-image ${work_dir}/${arch} +# Customize installation (airootfs) +make_customize_airootfs() { + cp -af ${script_path}/airootfs ${work_dir}/${arch} - curl -o ${work_dir}/${arch}/root-image/etc/pacman.d/mirrorlist 'https://www.archlinux.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on' + curl -o ${work_dir}/${arch}/airootfs/etc/pacman.d/mirrorlist 'https://www.archlinux.org/mirrorlist/?country=all&protocol=http&use_mirror_status=on' - lynx -dump -nolist 'https://wiki.archlinux.org/index.php/Installation_Guide?action=render' >> ${work_dir}/${arch}/root-image/root/install.txt + lynx -dump -nolist 'https://wiki.archlinux.org/index.php/Installation_Guide?action=render' >> ${work_dir}/${arch}/airootfs/root/install.txt - setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -r '/root/customize_root_image.sh' run - rm ${work_dir}/${arch}/root-image/root/customize_root_image.sh + setarch ${arch} mkarchiso ${verbose} -w "${work_dir}/${arch}" -C "${pacman_conf}" -D "${install_dir}" -r '/root/customize_airootfs.sh' run + rm ${work_dir}/${arch}/airootfs/root/customize_airootfs.sh } # Prepare kernel/initramfs ${install_dir}/boot/ make_boot() { mkdir -p ${work_dir}/iso/${install_dir}/boot/${arch} - cp ${work_dir}/${arch}/root-image/boot/archiso.img ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img - cp ${work_dir}/${arch}/root-image/boot/vmlinuz-linux ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz + cp ${work_dir}/${arch}/airootfs/boot/archiso.img ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img + cp ${work_dir}/${arch}/airootfs/boot/vmlinuz-linux ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz } # Add other aditional/extra files to ${install_dir}/boot/ make_boot_extra() { - cp ${work_dir}/${arch}/root-image/boot/memtest86+/memtest.bin ${work_dir}/iso/${install_dir}/boot/memtest - cp ${work_dir}/${arch}/root-image/usr/share/licenses/common/GPL2/license.txt ${work_dir}/iso/${install_dir}/boot/memtest.COPYING + cp ${work_dir}/${arch}/airootfs/boot/memtest86+/memtest.bin ${work_dir}/iso/${install_dir}/boot/memtest + cp ${work_dir}/${arch}/airootfs/usr/share/licenses/common/GPL2/license.txt ${work_dir}/iso/${install_dir}/boot/memtest.COPYING } # Prepare /${install_dir}/boot/syslinux @@ -108,30 +108,30 @@ make_syslinux() { s|%INSTALL_DIR%|${install_dir}|g" ${_cfg} > ${work_dir}/iso/${install_dir}/boot/syslinux/${_cfg##*/} done cp ${script_path}/syslinux/splash.png ${work_dir}/iso/${install_dir}/boot/syslinux - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/*.c32 ${work_dir}/iso/${install_dir}/boot/syslinux - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/lpxelinux.0 ${work_dir}/iso/${install_dir}/boot/syslinux - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/memdisk ${work_dir}/iso/${install_dir}/boot/syslinux + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/*.c32 ${work_dir}/iso/${install_dir}/boot/syslinux + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/lpxelinux.0 ${work_dir}/iso/${install_dir}/boot/syslinux + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/memdisk ${work_dir}/iso/${install_dir}/boot/syslinux mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux/hdt - gzip -c -9 ${work_dir}/${arch}/root-image/usr/share/hwdata/pci.ids > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/pciids.gz - gzip -c -9 ${work_dir}/${arch}/root-image/usr/lib/modules/*-ARCH/modules.alias > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/modalias.gz + gzip -c -9 ${work_dir}/${arch}/airootfs/usr/share/hwdata/pci.ids > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/pciids.gz + gzip -c -9 ${work_dir}/${arch}/airootfs/usr/lib/modules/*-ARCH/modules.alias > ${work_dir}/iso/${install_dir}/boot/syslinux/hdt/modalias.gz } # Prepare /isolinux make_isolinux() { mkdir -p ${work_dir}/iso/isolinux sed "s|%INSTALL_DIR%|${install_dir}|g" ${script_path}/isolinux/isolinux.cfg > ${work_dir}/iso/isolinux/isolinux.cfg - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ - cp ${work_dir}/${arch}/root-image/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ } # Prepare /EFI make_efi() { mkdir -p ${work_dir}/iso/EFI/boot - cp ${work_dir}/x86_64/root-image/usr/lib/prebootloader/PreLoader.efi ${work_dir}/iso/EFI/boot/bootx64.efi - cp ${work_dir}/x86_64/root-image/usr/lib/prebootloader/HashTool.efi ${work_dir}/iso/EFI/boot/ + cp ${work_dir}/x86_64/airootfs/usr/lib/prebootloader/PreLoader.efi ${work_dir}/iso/EFI/boot/bootx64.efi + cp ${work_dir}/x86_64/airootfs/usr/lib/prebootloader/HashTool.efi ${work_dir}/iso/EFI/boot/ - cp ${work_dir}/x86_64/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/iso/EFI/boot/loader.efi + cp ${work_dir}/x86_64/airootfs/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/iso/EFI/boot/loader.efi mkdir -p ${work_dir}/iso/loader/entries cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/iso/loader/ @@ -162,10 +162,10 @@ make_efiboot() { cp ${work_dir}/iso/${install_dir}/boot/x86_64/archiso.img ${work_dir}/efiboot/EFI/archiso/archiso.img mkdir -p ${work_dir}/efiboot/EFI/boot - cp ${work_dir}/x86_64/root-image/usr/lib/prebootloader/PreLoader.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi - cp ${work_dir}/x86_64/root-image/usr/lib/prebootloader/HashTool.efi ${work_dir}/efiboot/EFI/boot/ + cp ${work_dir}/x86_64/airootfs/usr/lib/prebootloader/PreLoader.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi + cp ${work_dir}/x86_64/airootfs/usr/lib/prebootloader/HashTool.efi ${work_dir}/efiboot/EFI/boot/ - cp ${work_dir}/x86_64/root-image/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/efiboot/EFI/boot/loader.efi + cp ${work_dir}/x86_64/airootfs/usr/lib/gummiboot/gummibootx64.efi ${work_dir}/efiboot/EFI/boot/loader.efi mkdir -p ${work_dir}/efiboot/loader/entries cp ${script_path}/efiboot/loader/loader.conf ${work_dir}/efiboot/loader/ @@ -190,11 +190,11 @@ make_aitab() { # Build all filesystem images specified in aitab (.fs.sfs .sfs) make_prepare() { - cp -a -l -f ${work_dir}/${arch}/root-image ${work_dir} + cp -a -l -f ${work_dir}/${arch}/airootfs ${work_dir} setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" pkglist setarch ${arch} mkarchiso ${verbose} -w "${work_dir}" -D "${install_dir}" prepare - rm -rf ${work_dir}/root-image - # rm -rf ${work_dir}/${arch}/root-image (if low space, this helps) + rm -rf ${work_dir}/airootfs + # rm -rf ${work_dir}/${arch}/airootfs (if low space, this helps) } # Build ISO @@ -234,12 +234,12 @@ mkdir -p ${work_dir} run_once make_pacman_conf -# Do all stuff for each root-image +# Do all stuff for each airootfs for arch in i686 x86_64; do run_once make_basefs run_once make_packages run_once make_setup_mkinitcpio - run_once make_customize_root_image + run_once make_customize_airootfs done for arch in i686 x86_64; do diff --git a/configs/releng/root-image/etc/fstab b/configs/releng/root-image/etc/fstab deleted file mode 100644 index e69de29..0000000 diff --git a/configs/releng/root-image/etc/hostname b/configs/releng/root-image/etc/hostname deleted file mode 100644 index 2dbe21e..0000000 --- a/configs/releng/root-image/etc/hostname +++ /dev/null @@ -1 +0,0 @@ -archiso diff --git a/configs/releng/root-image/etc/locale.conf b/configs/releng/root-image/etc/locale.conf deleted file mode 100644 index 01ec548..0000000 --- a/configs/releng/root-image/etc/locale.conf +++ /dev/null @@ -1 +0,0 @@ -LANG=en_US.UTF-8 diff --git a/configs/releng/root-image/etc/pam.d/su b/configs/releng/root-image/etc/pam.d/su deleted file mode 100644 index a291042..0000000 --- a/configs/releng/root-image/etc/pam.d/su +++ /dev/null @@ -1,6 +0,0 @@ -#%PAM-1.0 -auth sufficient pam_rootok.so -auth sufficient pam_wheel.so trust use_uid -auth required pam_unix.so -account required pam_unix.so -session required pam_unix.so diff --git a/configs/releng/root-image/etc/sudoers.d/g_wheel b/configs/releng/root-image/etc/sudoers.d/g_wheel deleted file mode 100644 index 8c45359..0000000 --- a/configs/releng/root-image/etc/sudoers.d/g_wheel +++ /dev/null @@ -1 +0,0 @@ -%wheel ALL=(ALL) NOPASSWD: ALL diff --git a/configs/releng/root-image/etc/systemd/scripts/choose-mirror b/configs/releng/root-image/etc/systemd/scripts/choose-mirror deleted file mode 100755 index 0ae0806..0000000 --- a/configs/releng/root-image/etc/systemd/scripts/choose-mirror +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -get_cmdline() { - local param - for param in $(< /proc/cmdline); do - case "${param}" in - $1=*) echo "${param##*=}"; - return 0 - ;; - esac - done -} - -mirror=$(get_cmdline mirror) -[[ $mirror = auto ]] && mirror=$(get_cmdline archiso_http_srv) -[[ $mirror ]] || exit 0 - -mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.orig -cat >/etc/pacman.d/mirrorlist << EOF -# -# Arch Linux repository mirrorlist -# Generated by archiso -# - -Server = ${mirror%%/}/\$repo/os/\$arch -EOF diff --git a/configs/releng/root-image/etc/systemd/system/choose-mirror.service b/configs/releng/root-image/etc/systemd/system/choose-mirror.service deleted file mode 100644 index 1e4d771..0000000 --- a/configs/releng/root-image/etc/systemd/system/choose-mirror.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Choose mirror from the kernel command line -ConditionKernelCommandLine=mirror - -[Service] -Type=oneshot -ExecStart=/etc/systemd/scripts/choose-mirror - -[Install] -WantedBy=multi-user.target diff --git a/configs/releng/root-image/etc/systemd/system/etc-pacman.d-gnupg.mount b/configs/releng/root-image/etc/systemd/system/etc-pacman.d-gnupg.mount deleted file mode 100644 index 4eab551..0000000 --- a/configs/releng/root-image/etc/systemd/system/etc-pacman.d-gnupg.mount +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Temporary /etc/pacman.d/gnupg directory - -[Mount] -What=tmpfs -Where=/etc/pacman.d/gnupg -Type=tmpfs -Options=mode=0755 diff --git a/configs/releng/root-image/etc/systemd/system/getty@tty1.service.d/autologin.conf b/configs/releng/root-image/etc/systemd/system/getty@tty1.service.d/autologin.conf deleted file mode 100644 index d1d8474..0000000 --- a/configs/releng/root-image/etc/systemd/system/getty@tty1.service.d/autologin.conf +++ /dev/null @@ -1,3 +0,0 @@ -[Service] -ExecStart= -ExecStart=-/sbin/agetty --autologin root --noclear %I 38400 linux diff --git a/configs/releng/root-image/etc/systemd/system/pacman-init.service b/configs/releng/root-image/etc/systemd/system/pacman-init.service deleted file mode 100644 index 23b8144..0000000 --- a/configs/releng/root-image/etc/systemd/system/pacman-init.service +++ /dev/null @@ -1,15 +0,0 @@ -[Unit] -Description=Initializes Pacman keyring -Wants=haveged.service -After=haveged.service -Requires=etc-pacman.d-gnupg.mount -After=etc-pacman.d-gnupg.mount - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/bin/pacman-key --init -ExecStart=/usr/bin/pacman-key --populate archlinux - -[Install] -WantedBy=multi-user.target diff --git a/configs/releng/root-image/etc/udev/rules.d/81-dhcpcd.rules b/configs/releng/root-image/etc/udev/rules.d/81-dhcpcd.rules deleted file mode 100644 index 1c4053c..0000000 --- a/configs/releng/root-image/etc/udev/rules.d/81-dhcpcd.rules +++ /dev/null @@ -1 +0,0 @@ -ACTION=="add", SUBSYSTEM=="net", ENV{INTERFACE}=="en*|eth*", ENV{SYSTEMD_WANTS}="dhcpcd@$name.service" diff --git a/configs/releng/root-image/root/.automated_script.sh b/configs/releng/root-image/root/.automated_script.sh deleted file mode 100755 index fb106da..0000000 --- a/configs/releng/root-image/root/.automated_script.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -script_cmdline () -{ - local param - for param in $(< /proc/cmdline); do - case "${param}" in - script=*) echo "${param##*=}" ; return 0 ;; - esac - done -} - -automated_script () -{ - local script rt - script="$(script_cmdline)" - if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then - if [[ "${script}" =~ ^http:// || "${script}" =~ ^ftp:// ]]; then - wget "${script}" --retry-connrefused -q -O /tmp/startup_script >/dev/null - rt=$? - else - cp "${script}" /tmp/startup_script - rt=$? - fi - if [[ ${rt} -eq 0 ]]; then - chmod +x /tmp/startup_script - /tmp/startup_script - fi - fi -} - -if [[ $(tty) == "/dev/tty1" ]]; then - automated_script -fi diff --git a/configs/releng/root-image/root/.zlogin b/configs/releng/root-image/root/.zlogin deleted file mode 100644 index f598e43..0000000 --- a/configs/releng/root-image/root/.zlogin +++ /dev/null @@ -1 +0,0 @@ -~/.automated_script.sh diff --git a/configs/releng/root-image/root/customize_root_image.sh b/configs/releng/root-image/root/customize_root_image.sh deleted file mode 100755 index 9c85453..0000000 --- a/configs/releng/root-image/root/customize_root_image.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -set -e -u - -sed -i 's/#\(en_US\.UTF-8\)/\1/' /etc/locale.gen -locale-gen - -ln -sf /usr/share/zoneinfo/UTC /etc/localtime - -usermod -s /usr/bin/zsh root -cp -aT /etc/skel/ /root/ - -useradd -m -p "" -g users -G "adm,audio,floppy,log,network,rfkill,scanner,storage,optical,power,wheel" -s /usr/bin/zsh arch - -chmod 750 /etc/sudoers.d -chmod 440 /etc/sudoers.d/g_wheel - -sed -i "s/#Server/Server/g" /etc/pacman.d/mirrorlist -sed -i 's/#\(Storage=\)auto/\1volatile/' /etc/systemd/journald.conf - -systemctl enable pacman-init.service choose-mirror.service -systemctl set-default multi-user.target diff --git a/configs/releng/root-image/root/install.txt b/configs/releng/root-image/root/install.txt deleted file mode 100644 index 3c8f171..0000000 --- a/configs/releng/root-image/root/install.txt +++ /dev/null @@ -1,3 +0,0 @@ -View this installation guide online at -https://wiki.archlinux.org/index.php/Installation_Guide - diff --git a/docs/README.build b/docs/README.build index e22ec65..1f2d703 100644 --- a/docs/README.build +++ b/docs/README.build @@ -22,7 +22,7 @@ INDEX + dosfstools for mkfs.vfat + lynx for fetching the latest installation guide -** For these hooks needs these packages (on target root-image) +** For these hooks needs these packages (on target airootfs) * archiso + (none) * archiso_loop_mnt -- 1.9.1