Linux From Nothing all in here (;
cd LFN
sudo losetup -fP --show disk.img
sudo mount /dev/loop#p1 /mnt
sudo mkdir /mnt2
sudo modprobe nbd max_part=8
qemu-img create -f qcow2 disk2.img 100G
sudo qemu-nbd -c /dev/nbd0 disk2.img
sudo fdisk /dev/nbd0
n - p - 1 (leave default 2048sectors)
a
w
sudo mkfs.ext4 /dev/nbd0p1
sudo mount /dev/nbd0p1 /mnt2
sudo cp -R /mnt/* /mnt2/
sudo grub-install --target=i386-pc --root-directory=/mnt2 --no-floppy --modules="normal part_msdos ext2 multiboot" /dev/nbd0
sudo umount /mnt
sudo umount /mnt2
sudo mount /dev/nbd0p1 /mnt
The linux headers are used by alot of basic program to get access to kernel functions.
cd linux
make headers
sudo cp -r usr/include/* /mnt/usr/include/
cd ..
[The GNU C Library - GNU Project - Free Software Foundation](https://www.gnu.org/software/libc/
We downloaded it from git and thats kinda suicide, so lets get a real version (;
rm -r glibc-build
wget https://ftp.gnu.org/gnu/glibc/glibc-2.41.tar.gz
tar -xvzf glibc-2.41.tar.gz
mkdir glibc-build
cd glibc-build
../glibc-2.41/configure --with-headers=/mnt/usr/include --without-selinux --libdir=/lib --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
The basic Gnu C Compiler and its c++ libs.
https://gcc.gnu.org/
wget https://ftp.gnu.org/gnu/gcc/gcc-14.2.0/gcc-14.2.0.tar.gz
tar -xvzf gcc-14.2.0.tar.gz
cd gcc-14.2.0
./contrib/download_prerequisites
cd ..
mkdir gcc-build
cd gcc-build
../gcc-14.2.0/configure --with-glibc-version=2.41 --disable-multilib --enable-languages=c,c++ --disable-bootstrap --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
Make, we all know what it is by now.
wget https://ftp.gnu.org/gnu/make/make-4.4.tar.gz
tar -xvzf make-4.4.tar.gz
mkdir make-build
cd make-build
../make-4.4/configure --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
https://www.gnu.org/software/tar/
We will need alot!
wget https://ftp.gnu.org/gnu/tar/tar-1.35.tar.gz
tar -xvzf tar-1.35.tar.gz
mkdir tar-build
cd tar-build
../tar-1.35/configure --without-selinux --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
https://www.gnu.org/software/gzip/
We will need with Tar.
wget https://ftp.gnu.org/gnu/gzip/gzip-1.13.tar.gz
tar -xvzf gzip-1.13.tar.gz
mkdir gzip-build
cd gzip-build
../gzip-1.13/configure --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
https://www.gnu.org/software/sed/
Used with Make.
wget https://ftp.gnu.org/gnu/sed/sed-4.9.tar.gz
tar -xvzf sed-4.9.tar.gz
mkdir sed-build
cd sed-build
../sed-4.9/configure --without-selinux --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
https://www.gnu.org/software/grep/
Used with Make.
wget https://ftp.gnu.org/gnu/grep/grep-3.11.tar.gz
tar -xvzf grep-3.11.tar.gz
mkdir grep-build
cd grep-build
../grep-3.11/configure --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
https://www.gnu.org/software/gawk/
Needed by perl
wget https://ftp.gnu.org/gnu/gawk/gawk-5.3.1.tar.gz
tar -xvzf gawk-5.3.1.tar.gz
mkdir gawk-build
cd gawk-build
../gawk-5.3.1/configure --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
https://www.gnu.org/software/binutils/
Used with Make.
wget https://sourceware.org/pub/binutils/releases/binutils-2.44.tar.gz
tar -xvzf binutils-2.44.tar.gz
mkdir binutils-build
cd binutils-build
../binutils-2.44/configure --prefix=/usr
make -j8
sudo make DESTDIR="/mnt" install
cd ..
Lets download that missing Cert for https.
wget https://curl.se/ca/cacert.pem
sudo mkdir /mnt/etc/ssl/
sudo mkdir /mnt/etc/ssl/certs/
sudo mv cacert.pem /mnt/etc/ssl/certs/ca-certificates.crt
sudo nano /mnt/sbin/init
Should look like
#!/bin/bash
mount -t proc none /proc
mount -t sysfs none /sys
ip link set up eth0
ip addr add 10.0.2.15/24 dev eth0
ip route add 10.0.2.2 dev eth0
ip route add 0/0 via 10.0.2.2 dev eth0
dnsmasq -uroot
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
export COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-gnu/14.2.0:/usr/bin
export LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0
export CPATH=/usr/lib/gcc/x86_64-pc-linux-gnu/14.2.0/include
exec /bin/bash
and lets umount and start LFN
sudo mkdir /mnt/tmp
sync
sudo umount /mnt
sudo qemu-nbd -d /dev/nbd0
qemu-system-x86_64 disk2.img -smp 8 -m 8G
https://github.com/tukaani-project/xz
Lets test our LFN with XZ
#On LFN
cd root
wget https://github.com/tukaani-project/xz/releases/download/v5.6.4/xz-5.6.4.tar.gz
tar -xvf xz-5.6.4.tar.gz
mkdir xz-build
cd xz-build
../xz-5.6.4/configure --prefix=/usr
make -j8
make install
sync
sync
sync
Here is the image: https://d2xw7bkejy3jlh.cloudfront.net/disk3.img.xz