archboot/usr/lib/initcpio/install/archboot_base

290 lines
12 KiB
Text
Raw Normal View History

#!/usr/bin/env bash
2007-02-22 23:46:50 +01:00
# Created by Tobias Powalowski <tpowa@archlinux.org>
build ()
2007-02-22 23:46:50 +01:00
{
### setting up base structure
add_dir "/mnt"
add_dir "/install"
2007-02-22 23:46:50 +01:00
add_dir "/var/log"
add_dir "/home"
2012-06-24 10:04:54 +02:00
add_symlink /var/run ../run
2012-06-24 10:18:32 +02:00
add_symlink /var/lock ../run/lock
2012-06-18 14:36:34 +02:00
2021-09-27 21:49:46 +02:00
apps="getent agetty mount umount basename du clear env head id cksum nano printf tail \
tee test tr tty uptime w who wc which whoami xargs yes \
2013-05-22 09:36:34 +02:00
bash swapon uniq cut seq snarf find sort fdisk sfdisk cfdisk parted partprobe \
gawk cp mv free ls rm sed less chgrp chmod chown date df dialog dmesg egrep fgrep grep \
kill killall more ps pwd rmdir stty sync tar bsdtar bsdcpio touch uname hdparm \
true mktemp chroot dirname expr bzip2 hwclock su cat cpio dd gzip wget top sdparm tput \
ifconfig ln losetup mkdir mkfifo mknod readlink echo dir lzmadec lzop xz last wall mesg utmpdump \
2013-05-22 09:36:34 +02:00
xzdec switch_root false pivot_root sleep chcpu ctrlaltdel raw gdisk sgdisk cgdisk fixparts findmnt \
2014-08-01 12:40:20 +02:00
lsblk swaplabel cal chrt col colcrt colrm column fallocate flock getopt hexdump \
2021-10-07 09:02:08 +02:00
ionice ipcmk ipcrm ipcs isosize swapoff look lscpu mcookie namei \
2017-11-26 20:22:10 +01:00
prlimit rename renice rev script scriptreplay setarch setsid setterm taskset ul unshare \
uuidgen whereis write addpart delpart \
2013-05-22 09:36:34 +02:00
ldattach partx readprofile rtcwake uuidd sysctl pgrep pkill pmap pwdx slabtop tload \
vmstat watch file eject keyctl request-key kmod zsh hostname tac sulogin \
2015-09-04 20:09:05 +02:00
resizepart lslocks wdctl zless zgrep fold od ldd pidof shred blockdev blkdiscard newgrp nsenter runuser vipw ldconfig diff"
2012-05-27 22:28:05 +02:00
for i in $apps; do
add_binary "$i"
done
2012-08-24 16:27:39 +02:00
appfiles="/usr/lib/libkmod.so /usr/bin/gunzip /usr/bin/zcat"
2012-05-27 22:28:05 +02:00
for i in $appfiles; do
add_file "$i"
done
symlinks="/usr/bin/depmod /usr/bin/awk /usr/bin/halt /usr/bin/shutdown /usr/bin/reboot \
2022-01-06 18:15:14 +01:00
/usr/bin/poweroff /usr/bin/insmod /usr/bin/linux32 /usr/bin/linux64 \
2012-08-24 16:27:39 +02:00
/usr/bin/lsmod /usr/bin/lzcat /usr/bin/lzcmp /usr/bin/lzdiff /usr/bin/lzegrep /usr/bin/lzfgrep \
/usr/bin/lzgrep /usr/bin/lzegrep /usr/bin/lzfgrep /usr/bin/lzgrep /usr/bin/lzless /usr/bin/lzmore \
2013-05-31 15:49:14 +02:00
/usr/bin/lzma /usr/bin/modinfo /usr/bin/modprobe /usr/bin/nc /usr/bin/reset /usr/bin/rmmod \
/usr/bin/unlzma /usr/bin/unxz /usr/bin/xzcat /usr/bin/lastb /usr/bin/sh"
2022-01-06 18:15:14 +01:00
if [[ "$(uname -m)" == "x86_64" ]]; then
symlinks="$symlinks /usr/bin/i386"
fi
2012-08-24 16:27:39 +02:00
for i in $symlinks; do
2013-10-07 14:48:08 +02:00
# echo "Checking $i"
# if [ -e $i ]; then
add_binary "$(which "$(basename "$(readlink "$i")")")"
add_symlink "$i" "$(which "$(basename "$(readlink "$i")")")"
# fi
2012-08-24 16:27:39 +02:00
done
2013-05-31 15:49:14 +02:00
add_symlink "/usr/bin/init" "/usr/lib/systemd/systemd"
add_symlink "/init" "/usr/lib/systemd/systemd"
### add zsh
add_full_dir "/etc/zsh"
add_full_dir "/usr/share/zsh"
add_full_dir "/usr/lib/zsh"
2012-10-08 10:38:58 +02:00
### add en_US.utf8 locale
add_file "/usr/lib/locale/locale-archive"
### adding needed files from running system
2011-11-24 09:14:23 +01:00
add_symlink "/etc/mtab" "/proc/self/mounts"
2007-02-22 23:46:50 +01:00
add_file "/usr/share/terminfo/l/linux"
add_full_dir "/etc/profile.d"
systemfiles="bash.bashrc bash.bash_logout crypttab fstab host.conf hosts inputrc mke2fs.conf \
nanorc nsswitch.conf protocols request-key.conf resolv.conf securetty \
2021-10-07 20:43:47 +02:00
services wgetrc"
for i in $systemfiles; do
add_file "/etc/$i"
done
2021-10-07 20:43:47 +02:00
### add nano files
add_full_dir /usr/share/nano
2009-05-24 15:47:17 +02:00
2007-02-22 23:46:50 +01:00
### adding config files of installation system
2011-02-04 21:04:11 +01:00
for i in $(find /usr/share/archboot/base/etc/* ! -type d); do
2011-02-16 14:37:20 +01:00
add_file "$i" "$(echo $i | sed -e 's#/usr/share/archboot/base##g')"
2007-02-22 23:46:50 +01:00
done
add_file "/etc/profile"
add_file "/etc/group"
add_file "/etc/gshadow"
2009-05-24 15:47:17 +02:00
2012-01-09 13:54:09 +01:00
### add kmod related config file(s)
2012-04-04 11:30:21 +02:00
add_file "/usr/lib/depmod.d/search.conf"
2012-01-09 13:54:09 +01:00
2007-02-22 23:46:50 +01:00
### fixing network support
add_file "/lib/libnss_files.so.2"
add_file "/lib/libnss_dns.so.2"
2009-05-24 15:47:17 +02:00
### add copy-mountpoint.sh
add_file "/usr/bin/archboot-copy-mountpoint.sh"
### add rsync-backup.sh
add_file "/usr/bin/archboot-rsync-backup.sh"
2009-05-24 15:47:17 +02:00
2012-09-10 19:01:45 +02:00
### add pam
apps="mkhomedir_helper pam_timestamp_check unix_chkpwd unix_update"
2013-05-22 09:36:34 +02:00
for i in $apps; do
add_binary "$i"
done
2012-09-10 19:01:45 +02:00
add_full_dir "/etc/security"
add_full_dir "/etc/default"
add_full_dir "/etc/pam.d"
add_file "/etc/environment"
add_full_dir "/usr/lib/security"
#fix cracklib support!
add_file /usr/lib/libcrack.so.2
### add shadow
2013-05-22 09:36:34 +02:00
apps="groups login nologin chage chfn chsh expiry faillog gpasswd lastlog passwd \
chgpasswd chpasswd groupadd groupdel groupmems groupmod grpck grpconv grpunconv \
newusers pwck pwconv pwunconv useradd userdel usermod sg"
2012-09-10 19:01:45 +02:00
for i in $apps; do
add_binary "$i"
done
2013-05-31 15:49:14 +02:00
symlinks="/usr/bin/vigr"
2012-09-10 19:01:45 +02:00
for i in $symlinks; do
2013-10-07 14:48:08 +02:00
# echo "Checking $i"
# if [ -e $i ]; then
add_binary "$(which "$(basename "$(readlink "$i")")")"
add_symlink "$i" "$(which "$(basename "$(readlink "$i")")")"
# fi
2012-09-10 19:01:45 +02:00
done
add_file "/etc/login.defs"
2021-10-04 10:28:31 +02:00
### add virtio modules
add_checked_modules 'virtio'
2012-09-10 19:01:45 +02:00
### add systemd
2012-09-11 12:57:34 +02:00
# add systemd kernel modules
add_checked_modules 'nfs|autofs4|loop'
2013-05-22 09:36:34 +02:00
apps="mount.nfs setfont loadkeys"
2012-09-11 12:57:34 +02:00
for i in $apps; do
add_binary "$i"
done
2022-01-06 18:15:14 +01:00
2022-01-07 15:40:04 +01:00
# add firmware files
add_full_dir /lib/firmware
2021-12-10 16:16:18 +01:00
2013-01-21 16:17:52 +01:00
#dbus files
2016-12-09 19:15:50 +01:00
apps="dbus-cleanup-sockets dbus-daemon dbus-launch dbus-monitor dbus-run-session dbus-send dbus-test-tool \
dbus-update-activation-environment dbus-uuidgen"
2012-09-10 19:01:45 +02:00
for i in $apps; do
add_binary "$i"
done
add_binary "/usr/lib/dbus-1.0/dbus-daemon-launch-helper"
add_dir "/var/lib/dbus"
add_full_dir "/etc/dbus-1"
add_full_dir "/usr/share/dbus-1"
#systemd files
2014-09-10 09:55:55 +02:00
apps="busctl bootctl coredumpctl hostnamectl journalctl kernel-install localectl \
loginctl machinectl networkctl systemctl systemd-analyze systemd-ask-password \
2018-06-20 08:40:52 +02:00
systemd-cat systemd-cgls systemd-cgtop \
2015-03-08 11:32:54 +01:00
systemd-delta systemd-detect-virt systemd-escape systemd-firstboot systemd-hwdb systemd-inhibit systemd-machine-id-setup \
2016-12-09 19:15:50 +01:00
systemd-mount systemd-notify systemd-nspawn systemd-path systemd-resolve \
systemd-run systemd-socket-activate systemd-stdio-bridge systemd-sysusers systemd-tmpfiles \
2020-07-17 16:07:21 +02:00
systemd-tty-ask-password-agent timedatectl systemd-repart userdbctl"
2012-09-10 19:01:45 +02:00
for i in $apps; do
add_binary "$i"
done
add_dir "/etc/tmpfiles.d"
add_dir "/etc/modules-load.d"
add_dir "/etc/binfmt.d/"
2013-09-14 10:00:57 +02:00
add_full_dir "/etc/sysctl.d/"
2014-07-05 22:18:06 +02:00
add_file "/usr/lib/os-release"
2012-09-10 19:01:45 +02:00
add_full_dir "/etc/systemd"
add_full_dir "/etc/xdg"
add_full_dir "/usr/lib/systemd"
add_full_dir "/usr/share/systemd"
2015-03-08 18:58:29 +01:00
add_full_dir "/usr/share/factory"
2012-09-10 19:01:45 +02:00
add_full_dir "/usr/share/polkit-1"
add_full_dir "/usr/lib/tmpfiles.d"
add_full_dir "/usr/lib/modules-load.d"
add_dir "/var/lib/systemd"
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/local-fs.target.wants/var-tmp.mount" \
"/usr/lib/systemd/system/var-tmp.mount"
add_symlink "/etc/systemd/system/local-fs.target.wants/var-tmp.mount" "/usr/lib/systemd/system/var-tmp.mount"
2012-09-10 19:01:45 +02:00
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"
2016-12-07 22:11:14 +01:00
### add missing libsystemd files
add_file "/usr/lib/libnss_myhostname.so.2"
add_file "/usr/lib/libnss_mymachines.so.2"
add_file "/usr/lib/libnss_resolve.so.2"
add_file "/usr/lib/libnss_systemd.so.2"
### fix tmpfiles startup
add_file "/usr/lib/libnss_compat.so.2"
2018-06-20 08:40:52 +02:00
add_file "/usr/lib/libnsl.so.1"
## fix for systemd >=245 set default target
add_symlink "/etc/systemd/system/initrd.target" "/usr/lib/systemd/system/multi-user.target"
2016-12-07 22:11:14 +01:00
2013-08-21 09:56:38 +02:00
### add udev, which is not covered by udev hook
2013-05-22 09:36:34 +02:00
add_binary "logger"
2012-09-10 21:59:22 +02:00
# add rule files
2012-09-13 08:44:13 +02:00
add_full_dir "/usr/lib/udev"
2014-04-11 17:34:32 +02:00
# add schedule rules file
2021-09-21 11:41:36 +02:00
add_file "/usr/share/archboot/base/etc/udev/rules.d/60-ioschedulers.rules" "/etc/udev/rules.d/60-ioschedulers.rules"
2012-09-10 21:59:22 +02:00
# 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
apps="pacman pacman-conf pacman-key pacman-db-upgrade makepkg \
2018-06-20 08:43:37 +02:00
repo-add repo-elephant testpkg vercmp curl gpg-agent haveged gpg"
for i in $apps; do
add_binary "$i"
done
2018-06-20 08:40:52 +02:00
symlinks="/usr/bin/repo-remove"
for i in $symlinks; do
2013-10-07 14:48:08 +02:00
# echo "Checking $i"
# if [ -e $i ]; then
add_binary "$(which "$(basename "$(readlink "$i")")")"
add_symlink "$i" "$(which "$(basename "$(readlink "$i")")")"
# fi
done
2012-09-12 17:58:27 +02:00
add_dir "/var/cache/pacman/pkg"
add_dir "/var/lib/pacman"
add_file "/etc/pacman.conf"
add_file "/etc/makepkg.conf"
2021-09-21 12:39:47 +02:00
add_file "/etc/pacman.d/mirrorlist"
2013-06-18 11:19:33 +02:00
# add pacman initialisation of gpg keys
2014-09-10 16:11:15 +02:00
add_file "/usr/share/archboot/pacman/etc/systemd/system/etc-pacman.d-gnupg.mount" "/etc/systemd/system/etc-pacman.d-gnupg.mount"
add_symlink "/etc/systemd/system/multi-user.target.wants/etc-pacman.d-gnupg.mount" "/etc/systemd/system/etc-pacman.d-gnupg.mount"
2022-01-06 18:15:14 +01:00
if [[ "$(uname -m)" == "x86_64" ]]; then
add_file "/usr/share/archboot/pacman/etc/systemd/system/pacman-init.service" "/etc/systemd/system/pacman-init.service"
add_symlink "/etc/systemd/system/multi-user.target.wants/pacman-init.service" "/etc/systemd/system/pacman-init.service"
fi
if [[ "$(uname -m)" == "aarch64" ]]; then
add_file "/usr/share/archboot/pacman/etc/systemd/system/pacman-init-arm.service" "/etc/systemd/system/pacman-init-arm.service"
add_symlink "/etc/systemd/system/multi-user.target.wants/pacman-init-arm.service" "/etc/systemd/system/pacman-init-arm.service"
fi
add_full_dir "/usr/share/pacman/keyrings"
2018-06-20 09:34:14 +02:00
add_full_dir "/usr/share/makepkg"
2021-09-28 14:34:46 +02:00
# add local installed pacman database in container mode
2021-10-04 19:52:58 +02:00
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
2012-04-20 16:20:18 +02:00
### fix file
2013-02-01 14:50:26 +01:00
add_file "/usr/share/file/misc/magic.mgc"
2012-04-20 16:20:18 +02:00
2016-08-26 21:48:14 +02:00
### add ca certificates
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"
add_full_dir "$ca_dir"
add_full_dir "$cert2_dir"
add_symlink "${cert_dir}/${cert}" "../ca-certificates/extracted/$cafile"
add_symlink "${cert2_dir}/${cert2}" "../../ca-certificates/extracted/$cafile"
2009-05-24 15:47:17 +02:00
### fix licenses
2012-04-20 16:20:18 +02:00
add_file "/usr/share/licenses/file/COPYING"
2009-05-08 08:05:45 +02:00
add_file "/usr/share/licenses/bzip2/LICENSE"
add_file "/usr/share/licenses/hdparm/LICENSE.TXT"
add_file "/usr/share/licenses/ncurses/COPYING"
2009-05-08 08:05:45 +02:00
add_file "/usr/share/licenses/pcre/LICENSE"
2011-07-25 22:17:37 +02:00
add_file "/usr/share/licenses/shadow/LICENSE"
2013-01-21 16:17:52 +01:00
add_file "/usr/share/licenses/sdparm/LICENSE"
2010-02-07 23:43:45 +01:00
add_file "/usr/share/licenses/zlib/LICENSE"
2010-07-25 21:53:03 +02:00
add_file "/usr/share/licenses/iana-etc/LICENSE"
2013-01-21 16:17:52 +01:00
add_file "/usr/share/licenses/dbus/COPYING"
2007-02-22 23:46:50 +01:00
}
help ()
{
cat <<HELPEOF
2012-01-09 13:54:09 +01:00
This hook sets up all initial directories and installs base, kmod,
pam, pacman, shadow, systemd, udev utilities and libraries
2021-10-04 11:13:50 +02:00
for a archboot image.
2007-02-22 23:46:50 +01:00
DO NOT remove this one unless you know what you're doing.
HELPEOF
}