Last active
October 22, 2018 02:52
-
-
Save zhuyifei1999/b1fece4ac452cd5f0a78c4a2a6093139 to your computer and use it in GitHub Desktop.
Build a Gentoo root_fs for QEMU/UML
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /bin/bash | |
set -ex | |
TMPDIR=${TMPDIR:-/var/tmp} | |
IMAGE="$TMPDIR/root_fs" | |
STAGE3="$TMPDIR/stage3.tar" | |
ln -sf "$IMAGE" root_fs | |
# https://stackoverflow.com/a/49197786 | |
extract() { | |
for plik in "$@"; do | |
case $(file "$plik") in | |
*bzip2*) bzcat "$plik";; | |
*gzip*) zcat "$plik";; | |
*xz*) ;& | |
*XZ*) xzcat "$plik";; | |
*) 1>&2 echo "Unknown archive '$plik'"; return 1 ;; | |
esac | |
done | |
} | |
#wget "$(curl -s 'https://www.gentoo.org/downloads/' | grep amd64 | grep nomultilib | grep -v hardened | grep -oP 'http://distfiles.+?.tar.xz')" -O "$STAGE3".compressed | |
wget "$(curl -s 'https://www.gentoo.org/downloads/' | grep amd64 | grep systemd | grep -oP 'http://distfiles.+?.tar.bz2')" -O "$STAGE3".compressed | |
extract "$STAGE3".compressed > "$STAGE3" | |
guestfish --progress-bars -x << EOF | |
sparse $IMAGE 5G | |
run | |
# mkfs ext4 /dev/sda label:ROOT | |
mkfs-btrfs /dev/sda label:ROOT | |
mount /dev/sda / | |
tar-in $STAGE3 / | |
# write-append /etc/fstab "LABEL=ROOT\t/\text4\terrors=remount-ro\t0\t1\n" | |
write-append /etc/fstab "LABEL=ROOT\t/\tbtrfs\tdefaults,compress=zlib\t0\t1\n" | |
# ln-sf /lib/systemd/system/console-getty.service /etc/systemd/system/getty.target.wants/console-getty.service | |
# ln-sf /lib/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@tty0.service | |
ln-sf /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty0.service | |
ln-sf /dev/null /etc/systemd/system/getty.target.wants/getty@tty1.service | |
mkdir-p /etc/systemd/logind.conf.d | |
write /etc/systemd/logind.conf.d/no-vt.conf "[Login]\nNAutoVTs=0\nReserveVT=0\n" | |
mkdir-p /etc/systemd/system/sockets.target.wants | |
mkdir-p /etc/systemd/system/network-online.target.wants | |
ln-sf /lib/systemd/system/systemd-networkd.service /etc/systemd/system/dbus-org.freedesktop.network1.service | |
ln-sf /lib/systemd/system/systemd-networkd.service /etc/systemd/system/multi-user.target.wants/systemd-networkd.service | |
ln-sf /lib/systemd/system/systemd-networkd.socket /etc/systemd/system/sockets.target.wants/systemd-networkd.socket | |
ln-sf /lib/systemd/system/systemd-networkd.service /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service | |
mkdir-p /etc/systemd/network | |
write /etc/systemd/network/50-dhcp.network "[Match]\nName=eth0\n[Network]\nDHCP=yes\n" | |
ln-sf /lib/systemd/system/systemd-resolved.service /etc/systemd/system/dbus-org.freedesktop.resolve1.service | |
ln-sf /lib/systemd/system/systemd-resolved.service /etc/systemd/system/multi-user.target.wants/systemd-resolved.service | |
ln-sf /run/systemd/resolve/resolv.conf /etc/resolv.conf | |
ln-sf /lib/systemd/system/sshd.service /etc/systemd/system/multi-user.target.wants/sshd.service | |
EOF | |
virt-edit -a "$IMAGE" /etc/shadow -e 's/^root:.*?:/root::/' | |
virt-sysprep -a "$IMAGE" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment