59 lines
1.8 KiB
Bash
Executable File
59 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# we depend on a properly build rootfs
|
|
if [ "$EUID" -ne 0 ]
|
|
then echo "Please run as root"
|
|
exit
|
|
fi
|
|
|
|
|
|
CHIBRAX_MOUNT_POINT="/tmp/chibraxMountPoint"
|
|
|
|
rm -f disk.img
|
|
|
|
#create a 8Gb iso
|
|
dd if=/dev/zero of=disk.img bs=1024k seek=$((1000 * 8)) count=0
|
|
|
|
#creating a msdos image for mbr boot
|
|
parted disk.img mklabel msdos
|
|
parted disk.img mkpart primary ext4 0% 100%
|
|
START_SECTOR=$(file disk.img | cut -d',' -f 8 | cut -d' ' -f3)
|
|
echo "Start sector :" $START_SECTOR
|
|
OFFSET=$((512*$START_SECTOR))
|
|
|
|
echo $OFFSET > diskoffset
|
|
|
|
losetup --offset $OFFSET -f disk.img
|
|
LOOP=$(losetup -a | grep -v deleted | cut -d':' -f 1)
|
|
|
|
losetup -f disk.img
|
|
LOOP_ROOT=$(losetup -a | grep -v deleted | grep -v ${LOOP} | cut -d':' -f 1)
|
|
|
|
mkdir $CHIBRAX_MOUNT_POINT -p
|
|
|
|
mkfs.ext4 ${LOOP}
|
|
mount ${LOOP} $CHIBRAX_MOUNT_POINT
|
|
|
|
echo "rebuilding C++ hooks"
|
|
./clibs.sh
|
|
echo "done"
|
|
|
|
echo "coping rootfs"
|
|
cp rootfs/* $CHIBRAX_MOUNT_POINT -r
|
|
echo "done"
|
|
|
|
echo "installing grub"
|
|
arch-chroot $CHIBRAX_MOUNT_POINT grub-install --target=i386-pc ${LOOP_ROOT} --modules=part_msdos
|
|
arch-chroot $CHIBRAX_MOUNT_POINT grub-mkconfig -o /boot/grub/grub.cfg
|
|
|
|
PARTUUID=$(lsblk $LOOP --fs | awk '{print $4}' | grep -v LABEL)
|
|
|
|
echo "menuentry 'Chibrax OS' {" >> $CHIBRAX_MOUNT_POINT/boot/grub/grub.cfg
|
|
echo " set root='hd0,msdos1'" >> $CHIBRAX_MOUNT_POINT/boot/grub/grub.cfg
|
|
echo " linux /boot/vmlinuz rootfstype=ext4 root=/dev/sda1 rw quiet" >> $CHIBRAX_MOUNT_POINT/boot/grub/grub.cfg
|
|
echo "}" >> $CHIBRAX_MOUNT_POINT/boot/grub/grub.cfg
|
|
|
|
umount $CHIBRAX_MOUNT_POINT
|
|
losetup -d $LOOP_ROOT
|
|
losetup -d $LOOP
|
|
#built by root but used by any, usefull to run the vm without root privileges
|
|
chmod 757 disk.img |