From a6822dd8a934031b9316786a859232474e3b1d3d Mon Sep 17 00:00:00 2001 From: Nova Date: Mon, 9 Dec 2024 12:44:18 +0100 Subject: [PATCH] Add install-yiffos.sh --- install-yiffos.sh | 159 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 install-yiffos.sh diff --git a/install-yiffos.sh b/install-yiffos.sh new file mode 100644 index 0000000..895ca8a --- /dev/null +++ b/install-yiffos.sh @@ -0,0 +1,159 @@ +#!/bin/bash +export R=/mnt/root +mkdir -p $R +mount $2 $R + +mkdir -p $R/boot/efi +mount $1 $R/boot/efi +swapon + +mkdir -pv $R/{etc,var} +mkdir -pv $R/usr/{bin,lib,sbin} +for i in bin lib sbin; do + ln -sv usr/$i $R/$i +done +case $(uname -m) in + x86_64) mkdir -pv $R/lib64 ;; +esac + +mkdir -pv $R/{dev,proc,sys,run} +mount -v --bind /dev $R/dev +mount -vt proc proc $R/proc +mount -vt sysfs sysfs $R/sys + +mkdir -pv $R/{boot,home,mnt,opt,srv} +mkdir -pv $R/etc/{opt,sysconfig} +mkdir -pv $R/lib/firmware +mkdir -pv $R/media/{floppy,cdrom} +mkdir -pv $R/usr/{,local/}{include,src} +mkdir -pv $R/usr/local/{bin,lib,sbin} +mkdir -pv $R/usr/{,local/}share/{color,dict,doc,info,locale,man} +mkdir -pv $R/usr/{,local/}share/{misc,terminfo,zoneinfo} +mkdir -pv $R/usr/{,local/}share/man/man{1..8} +mkdir -pv $R/var/{cache,local,log,mail,opt,spool} +mkdir -pv $R/var/lib/{color,misc,locate} + + +install -dv -m 0750 $R/root +install -dv -m 1777 $R/tmp $R/var/tmp + +echo "root:x:0:0:root:/root:/bin/bash" > $R/etc/passwd +echo "bin:x:1:1:bin:/dev/null:/usr/bin/false" >> $R/etc/passwd +echo "daemon:x:6:6:Daemon User:/dev/null:/usr/bin/false" >> $R/etc/passwd +echo "messagebus:x:18:18:D-Bus Message Daemon User:/run/dbus:/usr/bin/false" >> $R/etc/passwd +echo "systemd-journal-gateway:x:73:73:systemd Journal Gateway:/:/usr/bin/false" >> $R/etc/passwd +echo "systemd-journal-remote:x:74:74:systemd Journal Remote:/:/usr/bin/false" >> $R/etc/passwd +echo "systemd-journal-upload:x:75:75:systemd Journal Upload:/:/usr/bin/false" >> $R/etc/passwd +echo "systemd-network:x:76:76:systemd Network Management:/:/usr/bin/false" >> $R/etc/passwd +echo "systemd-resolve:x:77:77:systemd Resolver:/:/usr/bin/false" >> $R/etc/passwd +echo "systemd-timesync:x:78:78:systemd Time Synchronization:/:/usr/bin/false" >> $R/etc/passwd +echo "systemd-coredump:x:79:79:systemd Core Dumper:/:/usr/bin/false" >> $R/etc/passwd +echo "uuidd:x:80:80:UUID Generation Daemon User:/dev/null:/usr/bin/false" >> $R/etc/passwd +echo "systemd-oom:x:81:81:systemd Out Of Memory Daemon:/:/usr/bin/false" >> $R/etc/passwd +echo "nobody:x:99:99:Unprivileged User:/dev/null:/usr/bin/false" >> $R/etc/passwd + +echo "root:x:0:" > $R/etc/group +echo "bin:x:1:daemon" >> $R/etc/group +echo "sys:x:2:" >> $R/etc/group +echo "kmem:x:3:" >> $R/etc/group +echo "tape:x:4:" >> $R/etc/group +echo "tty:x:5:" >> $R/etc/group +echo "daemon:x:6:" >> $R/etc/group +echo "floppy:x:7:" >> $R/etc/group +echo "disk:x:8:" >> $R/etc/group +echo "lp:x:9:" >> $R/etc/group +echo "dialout:x:10:" >> $R/etc/group +echo "audio:x:11:" >> $R/etc/group +echo "video:x:12:" >> $R/etc/group +echo "utmp:x:13:" >> $R/etc/group +echo "usb:x:14:" >> $R/etc/group +echo "cdrom:x:15:" >> $R/etc/group +echo "adm:x:16:" >> $R/etc/group +echo "messagebus:x:18:" >> $R/etc/group +echo "systemd-journal:x:23:" >> $R/etc/group +echo "input:x:24:" >> $R/etc/group +echo "mail:x:34:" >> $R/etc/group +echo "kvm:x:61:" >> $R/etc/group +echo "systemd-journal-gateway:x:73:" >> $R/etc/group +echo "systemd-journal-remote:x:74:" >> $R/etc/group +echo "systemd-journal-upload:x:75:" >> $R/etc/group +echo "systemd-network:x:76:" >> $R/etc/group +echo "systemd-resolve:x:77:" >> $R/etc/group +echo "systemd-timesync:x:78:" >> $R/etc/group +echo "systemd-coredump:x:79:" >> $R/etc/group +echo "uuidd:x:80:" >> $R/etc/group +echo "systemd-oom:x:81:" >> $R/etc/group +echo "wheel:x:97:" >> $R/etc/group +echo "nogroup:x:99:" >> $R/etc/group +echo "users:x:999:" >> $R/etc/group + +echo "/bin/bash" > $R/etc/shells + +touch $R/var/log/{btmp,lastlog,faillog,wtmp} +chgrp -v utmp $R/var/log/lastlog +chmod -v 664 $R/var/log/lastlog +chmod -v 600 $R/var/log/btmp + +# don't need this unless on a non-yiffos system +# curl -O "https://yiffos.gay/bulge-openssl3" +# mv bulge-openssl3 bulge +# chmod +x ./bulge + +umount -l $R/proc +rm -rf $R/proc/self + +export INSTALL_ROOT=$R +yes | bulge setup # to be removed in the future, keep for now though +yes | bulge s +yes | bulge gi base +# yes | bulge i corefiles # this was to fix a bug +yes | bulge i gnutls libxcrypt libgcrypt grub2 btrfs-progs grep +yes | bulge i networkmanager # some people were complaining about this not being installed +yes | bulge i bulge + +# install some gosh darn text editors, unless you're a maniac +yes | bulge i vim nano + +mount -vt tmpfs tmpfs $R/run +ln -sfv /run/ $R/var/run +ln -sfv /run/lock/ $R/var/lock + +mount -vt proc proc $R/proc + +grub-install --target=x86_64-efi --efi-directory=$R/boot/efi --boot-directory=$R/boot --bootloader-id=yiffOS + +case $(uname -m) in + i?86) ln -sfv ld-linux.so.2 $R/lib/ld-lsb.so.3 + ;; + x86_64) ln -sfv ../lib/ld-linux-x86-64.so.2 $R/lib64 + ln -sfv ../lib/ld-linux-x86-64.so.2 $R/lib64/ld-lsb-x86-64.so.3 + ;; +esac + +genfstab -U $R > $R/etc/fstab + +cp /usr/sbin/chroot $R/usr/sbin/chroot + +echo '#!/bin/bash' > $R/root/yiffosP2 +echo 'ln -s /usr/bin/bash /usr/bin/sh' >> $R/root/yiffosP2 +echo 'ln -s /run/dbus/ /var/run/dbus' >> $R/root/yiffosP2 +echo 'systemd-machine-id-setup' >> $R/root/yiffosP2 +echo 'systemctl preset-all' >> $R/root/yiffosP2 +echo 'systemctl disable systemd-time-wait-sync.service' >> $R/root/yiffosP2 +echo 'dracut --kver 5.17.8-yiffOS --force' >> $R/root/yiffosP2 +echo 'grub-mkconfig -o /boot/grub/grub.cfg' >> $R/root/yiffosP2 +echo 'touch /etc/shadow' >> $R/root/yiffosP2 +echo 'touch cock' >> $R/root/yiffosP2 +echo 'touch grass' >> $R/root/yiffosP2 +echo 'passwd root' >> $R/root/yiffosP2 +echo 'chmod +x /usr/bin/ping' >> $R/root/yiffosP2 # won't be needed in the future +echo 'echo "yiffos installed (:"' >> $R/root/yiffosP2 +chmod +x $R/root/yiffosP2 + +chroot "/mnt/root" /usr/bin/env -i \ + HOME=/root \ + TERM="$TERM" \ + PS1='(yiffOS chroot) \u:\w\$ ' \ + PATH=/usr/bin:/usr/sbin \ + /bin/bash /root/yiffosP2 +