mirror of
https://gitlab.archlinux.org/tpowa/archboot.git
synced 2024-09-20 12:00:37 +02:00
221 lines
9.7 KiB
Bash
221 lines
9.7 KiB
Bash
#!/bin/bash
|
|
# Created by Tobias Powalowski <tpowa@archlinux.org>
|
|
|
|
build ()
|
|
{
|
|
### setting up base structure
|
|
add_dir "/mnt"
|
|
add_dir "/media"
|
|
add_dir "/install"
|
|
add_dir "/var/log"
|
|
add_dir "/addons"
|
|
add_dir "/home"
|
|
|
|
add_symlink /var/run ../run
|
|
add_symlink /var/lock ../run/lock
|
|
|
|
apps="getent agetty mount umount basename du clear env head id md5sum nano printf tail \
|
|
tee test tr tty uptime w who wc which whoami xargs yes killall5 \
|
|
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 xz last wall mesg utmpdump \
|
|
xzdec switch_root false pivot_root sleep chcpu ctrlaltdel raw gdisk sgdisk cgdisk fixparts findmnt \
|
|
lsblk swaplabel cal chrt col colcrt colrm column cytune fallocate flock getopt hexdump \
|
|
ionice ipcmk ipcrm ipcs isosize swapoff logger look lscpu mcookie namei pg \
|
|
prlimit rename renice rev script scriptreplay setarch setsid setterm tailf taskset ul unshare \
|
|
uuidgen whereis write addpart delpart fdformat \
|
|
ldattach partx readprofile rtcwake uuidd sysctl pgrep pkill pmap pwdx slabtop tload \
|
|
vmstat watch file eject keyctl request-key kmod zsh hostname tac sulogin bootlogd \
|
|
resizepart lslocks wdctl fstab-decode zless zgrep fold od"
|
|
for i in $apps; do
|
|
add_binary "$i"
|
|
done
|
|
appfiles="/usr/lib/libkmod.so /usr/bin/gunzip /usr/bin/zcat"
|
|
for i in $appfiles; do
|
|
add_file "$i"
|
|
done
|
|
symlinks="/usr/bin/depmod /usr/bin/pidof /usr/bin/awk /usr/bin/halt /usr/bin/telinit /usr/bin/shutdown /usr/bin/runlevel /usr/bin/reboot \
|
|
/usr/bin/poweroff /usr/bin/insmod /usr/bin/i386 /usr/bin/linux32 /usr/bin/linux64 \
|
|
/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 \
|
|
/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"
|
|
for i in $symlinks; do
|
|
add_binary "$(which $(basename $(readlink "$i")))"
|
|
add_symlink "$i" "$(which $(basename $(readlink "$i")))"
|
|
done
|
|
add_symlink "/usr/bin/init" "/usr/lib/systemd/systemd"
|
|
### add zsh
|
|
add_full_dir "/etc/zsh"
|
|
add_full_dir "/usr/share/zsh"
|
|
add_full_dir "/usr/lib/zsh"
|
|
|
|
### add en_US.utf8 locale
|
|
add_file "/usr/lib/locale/locale-archive"
|
|
|
|
### adding needed files from running system
|
|
add_symlink "/etc/mtab" "/proc/self/mounts"
|
|
add_file "/usr/share/terminfo/l/linux"
|
|
add_file "/usr/share/archboot/base/init" "/init"
|
|
add_file "/usr/lib/initcpio/init_functions" "/init_functions"
|
|
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 \
|
|
services sysctl.conf"
|
|
for i in $systemfiles; do
|
|
add_file "/etc/$i"
|
|
done
|
|
|
|
### adding config files of installation system
|
|
for i in $(find /usr/share/archboot/base/etc/* ! -type d); do
|
|
add_file "$i" "$(echo $i | sed -e 's#/usr/share/archboot/base##g')"
|
|
done
|
|
|
|
### add kmod related config file(s)
|
|
add_file "/usr/lib/depmod.d/search.conf"
|
|
|
|
### fixing network support
|
|
add_file "/lib/libnss_files.so.2"
|
|
add_file "/lib/libnss_dns.so.2"
|
|
|
|
### add copy-mountpoint.sh
|
|
add_file "/usr/bin/copy-mountpoint.sh"
|
|
|
|
### add pam
|
|
apps="mkhomedir_helper pam_tally pam_tally2 pam_timestamp_check unix_chkpwd unix_update"
|
|
for i in $apps; do
|
|
add_binary "$i"
|
|
done
|
|
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
|
|
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"
|
|
for i in $apps; do
|
|
add_binary "$i"
|
|
done
|
|
symlinks="/usr/bin/vigr"
|
|
for i in $symlinks; do
|
|
add_binary "$(which $(basename $(readlink "$i")))"
|
|
add_symlink "$i" "$(which $(basename $(readlink "$i")))"
|
|
done
|
|
add_file "/etc/login.defs"
|
|
|
|
### add systemd
|
|
# add systemd kernel modules
|
|
add_checked_modules 'nfs|autofs4|loop'
|
|
apps="mount.nfs setfont loadkeys"
|
|
for i in $apps; do
|
|
add_binary "$i"
|
|
done
|
|
|
|
#dbus files
|
|
apps="dbus-cleanup-sockets dbus-daemon dbus-monitor dbus-send dbus-uuidgen"
|
|
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
|
|
apps="bootctl hostnamectl journalctl kernel-install localectl \
|
|
loginctl systemctl systemd-analyze systemd-ask-password \
|
|
systemd-cat systemd-cgls systemd-cgtop systemd-coredumpctl \
|
|
systemd-delta systemd-detect-virt systemd-inhibit systemd-machine-id-setup \
|
|
systemd-notify systemd-nspawn systemd-stdio-bridge systemd-tmpfiles \
|
|
systemd-tty-ask-password-agent timedatectl"
|
|
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/"
|
|
add_dir "/etc/sysctl.d/"
|
|
add_file "/etc/os-release"
|
|
add_full_dir "/etc/systemd"
|
|
add_full_dir "/etc/xdg"
|
|
add_full_dir "/usr/lib/systemd"
|
|
add_full_dir "/usr/share/systemd"
|
|
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" "/etc/systemd/system/local-fs.target.wants/var-tmp.mount"
|
|
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" \
|
|
"/etc/systemd/system/getty.target.wants/getty@tty1.service"
|
|
|
|
### add udev
|
|
add_binary "logger"
|
|
add_binary "udevadm"
|
|
add_file "/etc/udev/udev.conf"
|
|
add_file "/usr/lib/modprobe.d/usb-load-ehci-first.conf"
|
|
add_symlink "/usr/bin/udevd" "../lib/systemd/systemd-udevd"
|
|
# add rule files
|
|
add_full_dir "/usr/lib/udev"
|
|
|
|
### add pacman
|
|
apps="pacman pacman-db-upgrade pacman-key pacsort pactree cleanupdelta makepkg pacman-optimize pkgdelta \
|
|
rankmirrors repo-add testdb repo-elephant testpkg vercmp curl gpg-agent haveged"
|
|
for i in $apps; do
|
|
add_binary "$i"
|
|
done
|
|
symlinks="/usr/bin/gpg /usr/bin/repo-remove"
|
|
for i in $symlinks; do
|
|
add_binary "$(which $(basename $(readlink "$i")))"
|
|
add_symlink "$i" "$(which $(basename $(readlink "$i")))"
|
|
done
|
|
add_dir "/var/cache/pacman/pkg"
|
|
add_dir "/var/lib/pacman"
|
|
add_file "/usr/share/archboot/pacman/etc/pacman.conf" "/etc/pacman.conf"
|
|
[ "$(uname -m)" = "x86_64" ] && add_file "/usr/share/archboot/pacman/etc/makepkg.conf.x86_64" "/etc/makepkg.conf"
|
|
[ "$(uname -m)" = "i686" ] && add_file "/usr/share/archboot/pacman/etc/makepkg.conf.i686" "/etc/makepkg.conf"
|
|
add_file "/usr/share/archboot/pacman/etc/pacman.d/mirrorlist" "/etc/pacman.d/mirrorlist"
|
|
# add pacman initialisation of gpg keys
|
|
add_file "/usr/share/archboot/pacman/etc/systemd/system/etc-pacman.d-gnupg.mount" "/etc/systemd/system/etc-pacman.d-gnupg.mount"
|
|
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"
|
|
add_symlink "/etc/systemd/system/multi-user.target.wants/etc-pacman.d-gnupg.mount" "/etc/systemd/system/etc-pacman.d-gnupg.mount"
|
|
add_full_dir "/usr/share/pacman/keyrings"
|
|
|
|
### fix file
|
|
add_file "/usr/share/file/misc/magic.mgc"
|
|
|
|
### fix licenses
|
|
add_file "/usr/share/licenses/file/COPYING"
|
|
add_file "/usr/share/licenses/bzip2/LICENSE"
|
|
add_file "/usr/share/licenses/hdparm/LICENSE.TXT"
|
|
add_file "/usr/share/licenses/ncurses/license.txt"
|
|
add_file "/usr/share/licenses/pcre/LICENSE"
|
|
add_file "/usr/share/licenses/shadow/LICENSE"
|
|
add_file "/usr/share/licenses/sdparm/LICENSE"
|
|
add_file "/usr/share/licenses/zlib/LICENSE"
|
|
add_file "/usr/share/licenses/iana-etc/LICENSE"
|
|
add_file "/usr/share/licenses/dbus/COPYING"
|
|
|
|
add_runscript
|
|
}
|
|
|
|
help ()
|
|
{
|
|
cat <<HELPEOF
|
|
This hook sets up all initial directories and installs base, kmod,
|
|
pam, pacman, shadow, systemd, udev utilities and libraries
|
|
for a arch boot image.
|
|
DO NOT remove this one unless you know what you're doing.
|
|
HELPEOF
|
|
}
|