1. Boot Process
https://youtu.be/rmgla4yeCXw?si=vFxi4TURN5S-3LlY
https://www.freecodecamp.org/news/linux-boot-process-in-rhel/
1.1 (Linux) bootloader (lilo, grub, syslinux/extlinux) -> compiled kernel (gcc, buildroot) -> root file system = rootfs (buildroot, debootstrap) -> kernel init (init, systemd) -> kernel, rootfs test (qemu-system-x86_64) -> package manager (apt, apt-get, aptitude, snap (closed source), flatpak (open source), dnf, yum, ...) -> make iso
1.2 (Embedded Linux) bootloader (u-boot, syslinux/extlinux) -> compiled kernel (buildroot, yocto) -> root file system = rootfs (buildroot, busybox, yocto) -> kernel init (init) -> kernel, rootfs test (qemu-system-x86_64) -> package manager (apk) : (ex) Alpine Linux (busybox + apk, docker-container)
2. Making Minimal Linux Distro
===============================
kernel compile
=======================
https://phoenixnap.com/kb/build-linux-kernel
------------------------------------
make menuconfig
https://www.kernelconfig.io/config_fb_efi
cp -v /boot/config-$(uname -r) .config
make
=======================
kernel compile + rootfs + kernel init + kernel, rootfs test
=======================
https://youtu.be/ey3sKdOmPa8?si=WgAYeMTb4asHavER
------------------------------------
sudo apt update
sudo apt install qemu-system
qemu-system-x86_64 -hda boot.img -kernel ./buildroot-2024.02.4/output/images/bzImage -append "root=/dev/sda "
=======================
------------------------------------
wget https://buildroot.org/downloads/buildroot-2024.02.4.tar.gz
tar -xvf buildroot-2024.02.4.tar.gz
cd buildroot-2024.02.4
sudo apt-get update
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
make menuconfig
make linux-menuconfig
make
scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS
cd output/images
cp bzImage ~
rm bzImage
cp rootfs.tar ~
tar xvf rootfs.tar
rm rootfs.tar
rm linuxrc
sudo apt install vim
vim init
------------------------------------
#!/bin/sh
mount -t devtmpfs none /dev
mount -t proc none /proc
mount -t sysfs none /sys
echo "Welcome to my Linux!"
exec /bin/sh
------------------------------------
chmod +x init
find . -print0 | cpio --null -ov --format=newc | gzip -9 > ../initramfs.cpio.gz
cd ..
cp initramfs.cpio.gz ~
cd ~
------------------------------------
sudo apt update
sudo apt install qemu-system
qemu-system-x86_64 -kernel bzImage -initrd initramfs.cpio.gz
=======================
https://byeo.tistory.com/entry/Linux-Kernel-Compile-QEMU-%ED%85%8C%EC%8A%A4%ED%8A%B8
------------------------------------
sudo su
apt install debootstrap
mkdir mnt && cd mnt
debootstrap jammy .
cp /etc/passwd etc/
apt install vim
vim etc/passwd
------------------------------------
mint::500:500:/home/mint:/bin/bash
------------------------------------
cd ..
dd if=/dev/null of=disk.img bs=1M seek=4096
mkfs.ext4 -F disk.img
mkdir m/
mount -t ext4 -o loop disk.img m/
cp -R mnt/* m
umount m
------------------------------------
qemu-system-x86_64 -kernel bzImage -drive file=disk.img,format=raw -append "root=/dev/sda rw console=ttyS0"
-nographic
==============================
kernel compile + rootfs + kernel init + kernel, rootfs test + package (apt, ...)
=======================
https://www.youtube.com/watch?v=au3IapBlbyo
https://mvallim.github.io/live-custom-ubuntu-from-scratch/
https://www.willhaley.com/blog/custom-debian-live-environment/
https://www.willhaley.com/blog/custom-debian-live-environment-grub-only/
https://dev.to/otomato_io/how-to-create-custom-debian-based-iso-4g37
https://sourceforge.net/projects/eznixos/
------------------------------------
sudo apt update
sudo apt install qemu-system
qemu-system-x86_64 -boot d -cdrom DenOS-1.0.iso -m 512
==============================
3. References
kernel compile
https://phoenixnap.com/kb/build-linux-kernel
kernel compile with buildroot
https://www.youtube.com/watch?v=ey3sKdOmPa8
rootfs with busybox
https://youtu.be/asnXWOUKhTA?si=mGb7VDoHP8r7RMp7
package with debootstrap
https://youtu.be/L_r3z3402do?si=VkNxW80s5i7EPwyG
https://www.youtube.com/watch?v=MguYSubW368
https://gist.github.com/ravecat/63a0d49014b6187bebc68cf855d55a83
https://www.youtube.com/watch?v=x_MT1N8GAJQ
https://ivanb.neocities.org/blogs/y2022/debootstrap
https://mvallim.github.io/kubernetes-under-the-hood/documentation/create-linux-image.html
https://github.com/mvallim/live-custom-ubuntu-from-scratch
https://youtu.be/au3IapBlbyo?si=SCS5gK4ZKC8bKyag
legacy BIOS to UEFI
https://blog.getreu.net/projects/legacy-to-uefi-boot/
https://askubuntu.com/questions/625286/how-to-create-uefi-bootable-iso
https://www.linuxbabe.com/command-line/how-to-use-linux-efibootmgr-examples
bootloader grub2
https://github.com/adi1090x/uGRUB
https://github.com/ndeineko/grub2-bios-uefi-usb
https://www.youtube.com/watch?v=zZcjY9oNbik
etc
https://gist.github.com/ishad0w/788555191c7037e249a439542c53e170
https://gist.github.com/hakerdefo/5e1f51fa93ff37871b9ff738b05ba30f
https://snapshooter.com/blog/how-to-clone-your-linux-harddrive-with-dd
https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/
https://www.linuxmint.com/download.php
https://byeo.tistory.com/entry/Linux-Kernel-Compile-QEMU-%ED%85%8C%EC%8A%A4%ED%8A%B8
https://www.lesstif.com/lpt/linux-chrome-106857342.html
* Linux Distors file format
redhat : .rpm
Ubuntu, Debian: .deb
Solaris (.pkg)
Slackware (.tgz, .txz, .tbz, .tlz)
.msi (Microsoft Windows)
.apk (Android)
.ipa (IOS, IPadOS)
* repository
4. Howto Korean Language (Hangul)
Reboot
5.How to make a Linux Distro
https://idalko.com/build-linux-distribution/
https://www.baeldung.com/linux/make-your-distribution
https://fosspost.org/create-linux-distribution-based-on-ubuntu