LinuxFromScratch

Linux From Scratch (LFS) is a project that provides you with step-by-step instructions for building your own custom Linux system, entirely from source code.

List of the required downloads for LFS 11.3

   1 cd ~
   2 mkdir lfs
   3 cd lfs
   4 wget https://www.linuxfromscratch.org/lfs/downloads/stable/wget-list
   5 xargs -l wget < wget-list
   6 
   7 # wget --input-file=wget-list --continue --directory-prefix=$LFS/sources
   8 mkdir sources
   9 mv *patch  *xz *gz   *bz2  sources/

initramfs with static program

A good first step is to get initramfs to run a statically linked "hello world" program as init

   1 sudo apt install qemu-system 
   2 
   3 cd /tmp 
   4 wget https://saimei.ftp.acc.umu.se/debian-cd/current/amd64/iso-cd/debian-12.1.0-amd64-netinst.iso
   5 sudo mount -o loop /vagrant/debian-12.1.0-amd64-netinst.iso /mnt/iso
   6 
   7 # reuse isolinux from debian iso
   8 mkdir /tmp/debiancd 
   9 mkdir /tmp/debiancd/isolinux 
  10 mkdir /tmp/debiancd/install.amd 
  11 cd /mnt/iso
  12 cp isolinux/isolinux.cfg isolinux/*c32 isolinux/menu.cfg isolinux/txt.cfg /tmp/debiancd/isolinux 
  13 cp install.amd/initrd.gz install.amd/vmlinuz /tmp/debiancd/install.amd/
  14 cp /mnt/iso/isolinux/isolinux.bin /tmp/debiancd/isolinux/
  15 
  16 # hello.c
  17 cat > hello.c << EOF
  18 #include <stdio.h>
  19 #include <unistd.h>
  20 
  21 int main(int argc, char *argv[])
  22 {
  23   printf("Hello world!\n");
  24   sleep(999999999);
  25 }
  26 EOF
  27 gcc -static hello.c -o init
  28 echo init | cpio -o -H newc | gzip > test.cpio.gz
  29 
  30 cp test.cpio.gz debiancd/install.amd/test.cpio.gz
  31 
  32 cat > debiancd/isolinux/isolinux.cfg << EOF 
  33 default bootcd
  34 prompt 1
  35 timeout 40
  36 
  37 label bootcd
  38   kernel /install.amd/vmlinuz
  39   append initrd=/install.amd/test.cpio.gz vga=788
  40 EOF
  41 
  42 cd /tmp/
  43 mkisofs -o /tmp/output2.iso  -R -l -L -D -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "LFS_$(date +%Y%m%d)" /tmp/debiancd/ 
  44 rm /vagrant/output2.iso
  45 cp output2.iso /vagrant

qemu-system-x86_64 -kernel debiancd/install.amd/vmlinuz -initrd test.cpio.gz /dev/zero

LinuxFromScratch (last edited 2023-08-07 11:08:00 by 127)