summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Iezzi <aiezzi@alessandroiezzi.it>2023-11-21 22:27:40 +0100
committerAlessandro Iezzi <aiezzi@alessandroiezzi.it>2023-11-21 22:29:39 +0100
commitdc9b0f067bd0b2bd5637841253e0b115c6aa8646 (patch)
tree8d6869427ab1a9cd2835797ef60d7d8a94819b13
downloadalex-dc9b0f067bd0b2bd5637841253e0b115c6aa8646.tar.gz
alex-dc9b0f067bd0b2bd5637841253e0b115c6aa8646.zip
Initial commit
-rw-r--r--Makefile27
-rw-r--r--Makefile.busybox13
-rw-r--r--Makefile.linux14
-rw-r--r--Makefile.syslinux22
-rwxr-xr-xqemu64.sh3
5 files changed, 79 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..ddf7c36
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,27 @@
+KERNEL_VERSION = 5.11.6
+BUSYBOX_VERSION = 1.33.0
+SYSLINUX_VERSION = 6.03
+
+all: busybox linux initrd
+
+initrd:
+ @mkdir -p $@
+ @cp -R busybox-${BUSYBOX_VERSION}/_install/* initrd/
+ @rm initrd/linuxrc
+ @mkdir initrd/dev initrd/proc initrd/sys
+ @echo '#!/bin/sh' > initrd/init
+ @echo 'dmesg -n 1' >> initrd/init
+ @echo 'mount -t devtmpfs none /dev' >> initrd/init
+ @echo 'mount -t proc none /proc' >> initrd/init
+ @echo 'mount -t sysfs none /sys' >> initrd/init
+ @echo 'setsid cttyhack /bin/sh' >> initrd/init
+ @chmod +x initrd/init
+ @cd initrd && find . | cpio -R root:root -H newc -o | gzip > ../rootfs.gz
+ @echo initrd: creation is completed.
+
+clean:
+ rm -rf busybox* kernel* linux* live* *.iso syslinux* initrd* rootfs.gz
+
+include Makefile.busybox
+include Makefile.linux
+include Makefile.syslinux
diff --git a/Makefile.busybox b/Makefile.busybox
new file mode 100644
index 0000000..e137077
--- /dev/null
+++ b/Makefile.busybox
@@ -0,0 +1,13 @@
+busybox: busybox-${BUSYBOX_VERSION}/_install
+ @echo Busybox: build is completed.
+
+busybox-${BUSYBOX_VERSION}/_install: busybox-${BUSYBOX_VERSION}
+ cd busybox-${BUSYBOX_VERSION} && make distclean defconfig
+ sed -i 's|.*CONFIG_STATIC[^_].*|CONFIG_STATIC=y|' busybox-1.33.0/.config
+ cd busybox-${BUSYBOX_VERSION} && make busybox install
+
+busybox-${BUSYBOX_VERSION}: busybox.tar.bz2
+ tar xvf busybox.tar.bz2
+
+busybox.tar.bz2:
+ wget -O busybox.tar.bz2 http://busybox.net/downloads/busybox-${BUSYBOX_VERSION}.tar.bz2
diff --git a/Makefile.linux b/Makefile.linux
new file mode 100644
index 0000000..55f68b4
--- /dev/null
+++ b/Makefile.linux
@@ -0,0 +1,14 @@
+linux: kernel.gz
+ @echo Linux: build is completed.
+
+linux-${KERNEL_VERSION}/arch/x86/boot/bzImage: linux-${KERNEL_VERSION}
+ @cd linux-${KERNEL_VERSION} && make HOSTCC=gcc-11 CC=gcc-11 mrproper defconfig bzImage
+
+kernel.gz: linux-${KERNEL_VERSION}/arch/x86/boot/bzImage
+ @cp linux-${KERNEL_VERSION}/arch/x86/boot/bzImage $@
+
+linux-${KERNEL_VERSION}: kernel.tar.xz
+ tar xvf kernel.tar.xz
+
+kernel.tar.xz:
+ wget -O kernel.tar.xz http://kernel.org/pub/linux/kernel/v5.x/linux-${KERNEL_VERSION}.tar.xz
diff --git a/Makefile.syslinux b/Makefile.syslinux
new file mode 100644
index 0000000..05b4f23
--- /dev/null
+++ b/Makefile.syslinux
@@ -0,0 +1,22 @@
+live-cd: syslinux-${SYSLINUX_VERSION}
+ mkdir -p live-cd
+ cp syslinux-${SYSLINUX_VERSION}/bios/core/isolinux.bin $@/
+ cp syslinux-${SYSLINUX_VERSION}/bios/com32/elflink/ldlinux/ldlinux.c32 $@/
+ echo 'default kernel.gz initrd=rootfs.gz' > $@/isolinux.cfg
+ cp kernel.gz $@/
+ cp rootfs.gz $@/
+ cd $@ && xorriso \
+ -as mkisofs \
+ -o ../alex_live.iso \
+ -b isolinux.bin \
+ -c boot.cat \
+ -no-emul-boot \
+ -boot-load-size 4 \
+ -boot-info-table \
+ ./
+
+syslinux-${SYSLINUX_VERSION}: syslinux.tar.xz
+ tar xvf syslinux.tar.xz
+
+syslinux.tar.xz:
+ wget -O syslinux.tar.xz http://kernel.org/pub/linux/utils/boot/syslinux/syslinux-${SYSLINUX_VERSION}.tar.xz
diff --git a/qemu64.sh b/qemu64.sh
new file mode 100755
index 0000000..c876a1d
--- /dev/null
+++ b/qemu64.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+qemu-system-x86_64 -m 128M -cdrom alex_live.iso -boot d -vga std \ No newline at end of file