2022-01-31 10:49:49 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
# Created by Tobias Powalowski <tpowa@archlinux.org>
|
|
|
|
|
|
|
|
build ()
|
|
|
|
{
|
2022-01-31 15:45:56 +01:00
|
|
|
### add virtio modules
|
2022-05-03 18:04:52 +02:00
|
|
|
add_checked_modules 'virtio|zram|btrfs|libcrc32|zstd|sg|pkcs8_key_parser'
|
2022-01-31 15:45:56 +01:00
|
|
|
|
2022-01-31 10:49:49 +01:00
|
|
|
### setting up base structure
|
2022-04-26 11:46:59 +02:00
|
|
|
map add_dir "/mnt" "/install" "/var/log" "/home" "/var/tmp"
|
2022-01-31 10:49:49 +01:00
|
|
|
|
|
|
|
add_symlink /var/run ../run
|
|
|
|
add_symlink /var/lock ../run/lock
|
2022-05-01 22:14:25 +02:00
|
|
|
|
2022-01-31 10:49:49 +01:00
|
|
|
### add basic apps
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_binary init agetty basename mount umount clear env printf gawk tty bash partprobe cp dir du ls mv rm sed grep \
|
2022-01-31 10:49:49 +01:00
|
|
|
kill killall more ps pwd rmdir true cat mkdir echo false sleep kmod pidof touch chmod \
|
2022-02-03 10:00:25 +01:00
|
|
|
find wc wget uname bsdtar yes awk halt shutdown reboot poweroff insmod modprobe sh dd hexdump \
|
2022-05-03 18:02:28 +02:00
|
|
|
sort zstd nano date tee mktemp install pgrep vi ex edit view mkfs.btrfs rmmod mountpoint gzip ldconfig
|
2022-03-14 21:32:33 +01:00
|
|
|
|
2022-01-31 10:49:49 +01:00
|
|
|
### add nano files
|
|
|
|
add_full_dir /usr/share/nano
|
|
|
|
|
|
|
|
add_file "/usr/lib/libkmod.so"
|
|
|
|
add_symlink "/init" "/usr/lib/systemd/systemd"
|
|
|
|
|
|
|
|
### adding needed files from running system
|
|
|
|
add_symlink "/etc/mtab" "/proc/self/mounts"
|
2022-04-04 07:43:15 +02:00
|
|
|
map add_full_dir "/etc/profile.d" "/usr/share/terminfo"
|
2022-04-26 15:05:16 +02:00
|
|
|
systemfiles="bash.bash_logout crypttab fstab host.conf hosts inputrc mke2fs.conf \
|
2022-01-31 10:49:49 +01:00
|
|
|
nanorc nsswitch.conf protocols request-key.conf resolv.conf securetty \
|
|
|
|
services wgetrc"
|
|
|
|
for i in $systemfiles; do
|
|
|
|
add_file "/etc/$i"
|
|
|
|
done
|
2022-04-26 15:48:02 +02:00
|
|
|
### adding passwd file for correct shell
|
|
|
|
add_file "/usr/share/archboot/base/etc/passwd" "/etc/passwd"
|
2022-01-31 10:49:49 +01:00
|
|
|
|
|
|
|
### adding config files of installation system
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_file "/etc/profile" "/etc/group" "/etc/gshadow"
|
2022-04-26 15:16:46 +02:00
|
|
|
basic_config="bash.bashrc hostname modprobe.d/modprobe.conf shadow shells"
|
2022-01-31 15:03:27 +01:00
|
|
|
for i in $basic_config; do
|
|
|
|
add_file "/usr/share/archboot/base/etc/$i" "/etc/$i"
|
|
|
|
done
|
2022-01-31 10:49:49 +01:00
|
|
|
### add kmod related config file(s)
|
|
|
|
add_file "/usr/lib/depmod.d/search.conf"
|
|
|
|
|
2022-01-31 15:45:56 +01:00
|
|
|
### fixing network support from glibc
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_file "/lib/libnss_files.so.2" "/lib/libnss_dns.so.2"
|
2022-01-31 10:49:49 +01:00
|
|
|
|
|
|
|
### add pam
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_binary mkhomedir_helper pam_timestamp_check unix_chkpwd unix_update
|
|
|
|
map add_full_dir "/etc/security" "/etc/default" "/etc/pam.d" "/usr/lib/security"
|
2022-01-31 10:49:49 +01:00
|
|
|
add_file "/etc/environment"
|
2022-03-14 21:32:33 +01:00
|
|
|
|
2022-01-31 10:49:49 +01:00
|
|
|
#fix cracklib support!
|
|
|
|
add_file /usr/lib/libcrack.so.2
|
|
|
|
|
|
|
|
### add shadow
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_binary login nologin
|
2022-01-31 10:49:49 +01:00
|
|
|
add_file "/etc/login.defs"
|
|
|
|
|
|
|
|
### add systemd
|
|
|
|
# add systemd kernel modules
|
|
|
|
add_checked_modules 'nfs|autofs4|loop'
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_binary mount.nfs4 umount.nfs umount.nfs4 mount.nfs setfont loadkeys
|
2022-01-31 10:49:49 +01:00
|
|
|
|
|
|
|
#dbus files
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_binary dbus-cleanup-sockets dbus-daemon dbus-launch dbus-monitor dbus-run-session dbus-send dbus-test-tool \
|
|
|
|
dbus-update-activation-environment dbus-uuidgen /usr/lib/dbus-1.0/dbus-daemon-launch-helper
|
2022-01-31 10:49:49 +01:00
|
|
|
add_dir "/var/lib/dbus"
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_full_dir "/etc/dbus-1" "/usr/share/dbus-1"
|
|
|
|
|
2022-01-31 10:49:49 +01:00
|
|
|
#systemd files
|
2022-03-15 21:06:22 +01:00
|
|
|
map add_binary systemd-umount busctl bootctl coredumpctl hostnamectl journalctl kernel-install localectl \
|
2022-01-31 10:49:49 +01:00
|
|
|
loginctl machinectl networkctl systemctl systemd-analyze systemd-ask-password \
|
|
|
|
systemd-cat systemd-cgls systemd-cgtop \
|
|
|
|
systemd-delta systemd-detect-virt systemd-escape systemd-firstboot systemd-hwdb systemd-inhibit systemd-machine-id-setup \
|
|
|
|
systemd-mount systemd-notify systemd-nspawn systemd-path systemd-resolve \
|
2022-02-05 16:07:30 +01:00
|
|
|
systemd-run systemd-socket-activate systemd-stdio-bridge systemd-sysusers \
|
2022-01-31 10:49:49 +01:00
|
|
|
systemd-tty-ask-password-agent timedatectl systemd-repart userdbctl homectl oomctl portablectl systemd-creds \
|
2022-03-15 21:06:22 +01:00
|
|
|
systemd-cryptenroll systemd-dissect systemd-id128 systemd-sysext
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_dir "/etc/tmpfiles.d" "/etc/modules-load.d" "/etc/binfmt.d/" "/var/lib/systemd"
|
|
|
|
map add_full_dir "/etc/sysctl.d/" "/etc/systemd" "/etc/xdg" "/usr/lib/systemd" "/usr/share/systemd" "/usr/share/factory" \
|
2022-04-17 21:47:39 +02:00
|
|
|
"/usr/share/polkit-1" "/usr/lib/tmpfiles.d" "/usr/lib/modules-load.d" "/usr/lib/sysusers.d" "/usr/lib/sysctl.d"
|
2022-01-31 10:49:49 +01:00
|
|
|
add_file "/usr/lib/os-release"
|
|
|
|
add_file "/usr/share/archboot/base/etc/locale.conf" "/etc/locale.conf"
|
|
|
|
add_file "/usr/share/archboot/base/etc/vconsole.conf" "/etc/vconsole.conf"
|
|
|
|
add_file "/usr/share/archboot/base/etc/systemd/system/getty@.service" "/etc/systemd/system/getty@.service"
|
|
|
|
add_file "/usr/share/archboot/base/etc/systemd/system/serial-getty@.service" "/etc/systemd/system/serial-getty@.service"
|
|
|
|
add_file "/usr/share/archboot/base/etc/systemd/system/autovt@.service" "/etc/systemd/system/autovt@.service"
|
|
|
|
add_file "/usr/share/archboot/base/etc/systemd/system/getty.target.wants/getty@tty1.service" \
|
|
|
|
"/usr/lib/systemd/system/getty@tty1.service"
|
|
|
|
add_symlink "/etc/systemd/system/getty.target.wants/getty@tty1.service" "/usr/lib/systemd/system/getty@tty1.service"
|
|
|
|
add_file "/usr/share/archboot/base/etc/machine-id" "/etc/machine-id"
|
2022-03-14 21:32:33 +01:00
|
|
|
|
2022-01-31 10:49:49 +01:00
|
|
|
### add missing libsystemd files
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_file "/usr/lib/libnss_myhostname.so.2" "/usr/lib/libnss_mymachines.so.2" \
|
|
|
|
"/usr/lib/libnss_resolve.so.2" "/usr/lib/libnss_systemd.so.2"
|
2022-01-31 10:49:49 +01:00
|
|
|
### fix tmpfiles startup
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_file "/usr/lib/libnss_compat.so.2" "/usr/lib/libnsl.so.1"
|
2022-05-01 21:10:01 +02:00
|
|
|
## fix for systemd >=245 set default.target
|
|
|
|
# remove initrd-release to allow normal systemd boot without initrd.target
|
|
|
|
rm /tmp/*/root/etc/initrd-release
|
|
|
|
add_symlink "/etc/systemd/system/default.target" "/usr/lib/systemd/system/multi-user.target"
|
2022-05-02 08:17:21 +02:00
|
|
|
# mask systemd-gpt-auto-generator, errors out on initramfs usage
|
|
|
|
add_symlink "/etc/systemd/system-generators/systemd-gpt-auto-generator" "/dev/null"
|
2022-01-31 10:49:49 +01:00
|
|
|
### add udev, which is not covered by udev hook
|
|
|
|
add_binary "logger"
|
|
|
|
# add rule files
|
|
|
|
add_full_dir "/usr/lib/udev"
|
|
|
|
# add schedule rules file
|
|
|
|
add_file "/usr/share/archboot/base/etc/udev/rules.d/60-ioschedulers.rules" "/etc/udev/rules.d/60-ioschedulers.rules"
|
|
|
|
|
|
|
|
# add swapiness sysctl config file
|
|
|
|
add_file "/usr/share/archboot/base/etc/sysctl.d/99-sysctl.conf" "/etc/sysctl.d/99-sysctl.conf"
|
|
|
|
|
|
|
|
### add pacman
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_binary pacman pacman-conf pacman-key pacman-db-upgrade makepkg \
|
|
|
|
repo-add repo-elephant testpkg vercmp curl gpg-agent haveged gpg repo-remove
|
|
|
|
map add_dir "/var/cache/pacman/pkg" "/var/lib/pacman"
|
|
|
|
map add_file "/etc/pacman.conf" "/etc/makepkg.conf" "/etc/pacman.d/mirrorlist"
|
2022-01-31 10:49:49 +01:00
|
|
|
# add pacman initialisation of gpg keys
|
2022-04-26 10:52:41 +02:00
|
|
|
add_dir "/etc/pacman.d/gnupg"
|
2022-04-28 20:14:49 +02:00
|
|
|
add_file "/usr/share/archboot/base/etc/systemd/system/pacman-init.service" "/etc/systemd/system/pacman-init.service"
|
2022-04-28 19:55:57 +02:00
|
|
|
add_symlink "/etc/systemd/system/multi-user.target.wants/pacman-init.service" "/etc/systemd/system/pacman-init.service"
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_full_dir "/usr/share/pacman/keyrings" "/usr/share/makepkg"
|
2022-01-31 10:49:49 +01:00
|
|
|
# add local installed pacman database in container mode
|
|
|
|
if [[ -e "/etc/hostname" ]]; then
|
|
|
|
[[ "$(cat /etc/hostname )" == "archboot" ]] && add_full_dir "/var/lib/pacman/local"
|
|
|
|
else
|
|
|
|
add_full_dir "/var/lib/pacman/local"
|
|
|
|
fi
|
|
|
|
|
2022-05-02 13:01:41 +02:00
|
|
|
### add nss p11-kit and ca certificates
|
|
|
|
map add_binary p11-kit trust certutil cmsutil crlutil modutil nss-config pk12util \
|
|
|
|
shlibsign signtool signver ssltap symkeyutil update-ca-trust
|
2022-01-31 10:49:49 +01:00
|
|
|
cafile="tls-ca-bundle.pem"
|
|
|
|
cert="cert.pem"
|
|
|
|
cert2="ca-certificates.crt"
|
|
|
|
ca_dir="/etc/ca-certificates/extracted"
|
|
|
|
cert_dir="/etc/ssl"
|
|
|
|
cert2_dir="/etc/ssl/certs"
|
2022-05-03 11:01:16 +02:00
|
|
|
map add_full_dir "$ca_dir" "$cert2_dir" /usr/lib/p11-kit /usr/lib/pkcs11
|
2022-01-31 10:49:49 +01:00
|
|
|
add_symlink "${cert_dir}/${cert}" "../ca-certificates/extracted/$cafile"
|
|
|
|
add_symlink "${cert2_dir}/${cert2}" "../../ca-certificates/extracted/$cafile"
|
2022-05-02 13:01:41 +02:00
|
|
|
add_file /usr/share/ca-certificates/trust-source/mozilla.trust.p11-kit
|
|
|
|
|
2022-01-31 10:49:49 +01:00
|
|
|
### fix licenses
|
2022-03-14 21:32:33 +01:00
|
|
|
map add_file "/usr/share/licenses/shadow/LICENSE" "/usr/share/licenses/iana-etc/LICENSE" \
|
2022-05-02 13:01:41 +02:00
|
|
|
"/usr/share/licenses/dbus/COPYING" "/usr/share/licenses/p11-kit/COPYING"
|
|
|
|
|
2022-01-31 10:49:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
help ()
|
|
|
|
{
|
|
|
|
cat <<HELPEOF
|
|
|
|
This hook sets up all common initial directories and installs base, kmod,
|
|
|
|
pam, pacman, shadow, systemd, udev utilities and libraries
|
|
|
|
for a archboot image.
|
|
|
|
DO NOT remove this one unless you know what you're doing.
|
|
|
|
HELPEOF
|
|
|
|
}
|