In Memory CentOS 7 - LinuxUserGroupUWSP/RackMesa GitHub Wiki
Derived from http://www.espenbraastad.no/posts/centos-7-rootfs-on-tmpfs/
yum install -y libvirt virt-builder guestfish
systemctl start libvirtd
mkdir -p /work/initramfs/bin
mkdir -p /work/newroot
mkdir -p /work/result
virt-builder centos-7.3 -o /work/disk.img --root-password password:changeme
guestfish --ro -a /work/disk.img -i copy-out / /work/newroot/
echo > /work/newroot/etc/fstab
echo "SELINUX=disabled" > /work/newroot/etc/selinux/config
mkdir /work/newroot/etc/systemd/system/[email protected]
cat > /work/newroot/etc/systemd/system/[email protected]/noclear.conf << EOF
[Service]
TTYVTDisallocate=no
EOF
wget -O /work/initramfs/bin/busybox https://www.busybox.net/downloads/binaries/1.26.1-defconfig-multiarch/busybox-x86_64
chmod +x /work/initramfs/bin/busybox
Create init script
vi /work/initramfs/init
#!/bin/busybox sh
# Dump to sh if something fails
error() {
echo "Jumping into the shell..."
setsid cttyhack sh
}
# Populate /bin with binaries from busybox
/bin/busybox --install /bin
mkdir -p /proc
mount -n -t proc none /proc
mkdir -p /sys
mount -n -t sysfs none /sys
mkdir -p /sys/dev
mkdir -p /var/run
mkdir -p /dev
mount -n -t tmpfs -o mode=0755 mdev /dev
mkdir -p /dev/pts
mount -n -t devpts devpts /dev/pts
# Populate /dev
echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /newroot
mount -t tmpfs -o size=1500m tmpfs /newroot || error
echo "Extracting rootfs... "
xz -d -c -f rootfs.tar.xz | tar -x -f - -C /newroot || error
mount --move /sys /newroot/sys
mount --move /proc /newroot/proc
mount --move /dev /newroot/dev
exec switch_root /newroot /sbin/init || error
Make init executable.
chmod +x /work/initramfs/init
Create the root filesystem.
cd /work/newroot
tar cJf /work/initramfs/rootfs.tar.xz .
cd /work/initramfs
find . -print0 | cpio --null -ov --format=newc | gzip -9 > /work/result/initramfs.gz
cp /work/newroot/boot/vmlinuz-*x86_64 /work/result/vmlinuz