Create Linux Distribution(LFS)
LFS stand for linux from scratch, means to create your own distribution, but it is not meant to be used as everyday work distro, but rather as a project to learn how linux works, and how all of its components fits togetter to shape a complete system. note this is not the extesive version of LFS, to download and compile all program and kernel from scratch, but rather just my simple version of it.
first we need a disk image, if you have real disk that's fine too:
dd if=/dev/zero of=lfs.img bs=1M count=1024then we need to partition, format and mount it. first put dos label, and create one partition on it.
fdisk lfs.imgcreate loop back device
doas losetup --find --show -P lfs.imgthis command will print the loop device used, we will assume it is loop0
create a file system on the partition:
doas mkfs.ext4 /dev/loop0p1then mount it:
doas mount /dev/loop0p1 /mntnow we need at least a kernel, and initramfs to get our shell, on boot. we will use existing kernel, and initramfs in our system. let's do that:
doas mkdir -p /mnt/boot
doas cp -v /boot/{vmlinuz-linux, initramfs-linux.img} /mnt/bootfinally let's make our system bootable, using grub.
doas grub-install --target=x86_64-pc --boot-directory=/mnt/boot /dev/loop0now let's provide, a configuration for our grub.
cat <EOF >/mnt/boot/grub/menu.lst
timeout 1
default 1
title LFS
kernel /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img
EOF
doas grub-menulst2cfg /mnt/boot/grub/menu.lst /mnt/boot/grub/grub.cfgrun sync to make sure everything is written.
syncfinally let's boot it up.
qemu /dev/loop0 # or qemu lfs.img