From d92c1916c3b063f17007d8d6fa78bd35721e21d6 Mon Sep 17 00:00:00 2001 From: Mateja Date: Mon, 18 Jan 2021 17:35:25 +0100 Subject: Small fixes. --- README.md | 5 ++- create | 132 -------------------------------------------------------------- create.sh | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+), 134 deletions(-) delete mode 100755 create create mode 100755 create.sh diff --git a/README.md b/README.md index 10dc8f7..38865f9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -#Required packages +# Required packages + - build-essentials - musl - kernel-headers-musl @@ -9,4 +10,4 @@ Build time is around 7 minutes on 4th gen Intel i5 CPU. -You can download the iso on +You can download the ISO file on . diff --git a/create b/create deleted file mode 100755 index a04ada7..0000000 --- a/create +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/bash -echo "Make sure you have build-essentials, musl, kernel-headers-musl, grub, libisoburn(xorriso), cpio and wget installed!" - -KERNEL_VERSION=5.8.2 -KERNEL_DIRECTORY=linux-$KERNEL_VERSION -KERNEL_ARCHIVE=$KERNEL_DIRECTORY.tar.xz -KERNEL_URL=https://www.kernel.org/pub/linux/kernel/v5.x/$KERNEL_ARCHIVE - -BUSYBOX_VERSION=1.32.0 -BUSYBOX_DIRECTORY=busybox-$BUSYBOX_VERSION -BUSYBOX_ARCHIVE=$BUSYBOX_DIRECTORY.tar.bz2 -BUSYBOX_URL=https://busybox.net/downloads/$BUSYBOX_ARCHIVE - -[[ ! -d ml-src ]] && mkdir ml-src -cd ml-src - -#DOWNLOAD SOURCE -[[ ! -f $KERNEL_ARCHIVE ]] && wget $KERNEL_URL -[[ ! -f $BUSYBOX_ARCHIVE ]] && wget $BUSYBOX_URL - -[[ ! -d $KERNEL_DIRECTORY ]] && tar xf $KERNEL_ARCHIVE -[[ ! -d $BUSYBOX_DIRECTORY ]] && tar xf $BUSYBOX_ARCHIVE - -#COMPILING -cd $KERNEL_DIRECTORY -[[ ! -f .config ]] && make defconfig -#Set OS name -sed -i "s/CONFIG_DEFAULT_HOSTNAME=\"(none)\"/CONFIG_DEFAULT_HOSTNAME=\"MatejaOS\"/" .config -make -j`nproc` -cp ./arch/x86/boot/bzImage ../vmlinux -cd .. - -cd $BUSYBOX_DIRECTORY -[[ ! -f .config ]] && make defconfig -#BusyBox static linking -sed -i "s/# CONFIG_STATIC is not set/CONFIG_STATIC=y/" .config -sed -i "s/gcc/musl-gcc/" Makefile -make -j`nproc` -cp busybox .. -cd .. - -#INITRAMFS -[[ ! -d initramfs-root ]] && mkdir initramfs-root -cd initramfs-root - -#Filesystem Hierarchy Standard -mkdir -p ./{bin,boot,dev,etc/{opt,sgml,X11,xml},home,lib,media,mnt,opt,sbin,srv,tmp,usr/{bin,include,lib,local,sbin,share,src},proc,root,run,sys,var/{cache,lib,lock,log,mail,opt,run,spool/mail,tmp}} - -#Basic Initramfs Directory Structure -#mkdir --parents ./{bin,dev,etc,lib,lib64,mnt/root,proc,root,sbin,sys} - -#Link tools to busybox -cd bin -cp ../../busybox . -for i in `./busybox --list` -do - ln -s busybox $i -done -cd .. - -#initramfs init script -cat > ./init << EOF -#!/bin/sh - -mount -t proc proc /proc -mount -t sysfs sysfs /sys - -#Disable kernel messages -echo 0 > /proc/sys/kernel/printk - -#Dynamic devices -mdev -s - -echo 1 > /proc/sys/kernel/sysrq - -echo "Welcome to MatejaOS!" - -echo "You can turn off the system using SysRq." -echo "echo s > /proc/sysrq-trigger" -echo "echo o > /proc/sysrq-trigger" - -while true -do - #Job control for BusyBox shell - setsid cttyhack sh - sleep 1 -done - -##FOR FUTURE USE (SWITCH ROOT TO HARD DRIVE) -#mkdir /mnt/root -#rescue_shell() { -# echo "Something went wrong. Dropping to a shell." -# exec sh -#} -#cmdline() { -# local value -# value=" $(cat /proc/cmdline) " -# value="${value##* ${1}=}" -# value="${value%% *}" -# [ "${value}" != "" ] && echo "${value}" -#} -## Mount the root filesystem. -#mount -o ro $(findfs $(cmdline root)) /mnt/root || rescue_shell -## Clean up. -#umount /proc -#umount /sys -## Switch to hard drive -#exec switch_root /mnt/root /sbin/init -EOF -chmod +x init - -#create initramfs -find . | cpio --create --format=newc > ../initramfs - -cd .. - -#CREATE ISO -mkdir -p iso-dir/boot/grub -cp vmlinux initramfs iso-dir/boot/ -cat > iso-dir/boot/grub/grub.cfg << EOF -set timeout=3 -set default=0 -menuentry 'MatejaOS' { - linux /boot/vmlinux - initrd /boot/initramfs -} -EOF -grub-mkrescue -o ../ml.iso iso-dir - -echo "Finished!" -echo "You can boot the iso file with command:" -echo "qemu-system-x86_64 -m 512 -cdrom ml.iso -boot d" diff --git a/create.sh b/create.sh new file mode 100755 index 0000000..a04ada7 --- /dev/null +++ b/create.sh @@ -0,0 +1,132 @@ +#!/bin/bash +echo "Make sure you have build-essentials, musl, kernel-headers-musl, grub, libisoburn(xorriso), cpio and wget installed!" + +KERNEL_VERSION=5.8.2 +KERNEL_DIRECTORY=linux-$KERNEL_VERSION +KERNEL_ARCHIVE=$KERNEL_DIRECTORY.tar.xz +KERNEL_URL=https://www.kernel.org/pub/linux/kernel/v5.x/$KERNEL_ARCHIVE + +BUSYBOX_VERSION=1.32.0 +BUSYBOX_DIRECTORY=busybox-$BUSYBOX_VERSION +BUSYBOX_ARCHIVE=$BUSYBOX_DIRECTORY.tar.bz2 +BUSYBOX_URL=https://busybox.net/downloads/$BUSYBOX_ARCHIVE + +[[ ! -d ml-src ]] && mkdir ml-src +cd ml-src + +#DOWNLOAD SOURCE +[[ ! -f $KERNEL_ARCHIVE ]] && wget $KERNEL_URL +[[ ! -f $BUSYBOX_ARCHIVE ]] && wget $BUSYBOX_URL + +[[ ! -d $KERNEL_DIRECTORY ]] && tar xf $KERNEL_ARCHIVE +[[ ! -d $BUSYBOX_DIRECTORY ]] && tar xf $BUSYBOX_ARCHIVE + +#COMPILING +cd $KERNEL_DIRECTORY +[[ ! -f .config ]] && make defconfig +#Set OS name +sed -i "s/CONFIG_DEFAULT_HOSTNAME=\"(none)\"/CONFIG_DEFAULT_HOSTNAME=\"MatejaOS\"/" .config +make -j`nproc` +cp ./arch/x86/boot/bzImage ../vmlinux +cd .. + +cd $BUSYBOX_DIRECTORY +[[ ! -f .config ]] && make defconfig +#BusyBox static linking +sed -i "s/# CONFIG_STATIC is not set/CONFIG_STATIC=y/" .config +sed -i "s/gcc/musl-gcc/" Makefile +make -j`nproc` +cp busybox .. +cd .. + +#INITRAMFS +[[ ! -d initramfs-root ]] && mkdir initramfs-root +cd initramfs-root + +#Filesystem Hierarchy Standard +mkdir -p ./{bin,boot,dev,etc/{opt,sgml,X11,xml},home,lib,media,mnt,opt,sbin,srv,tmp,usr/{bin,include,lib,local,sbin,share,src},proc,root,run,sys,var/{cache,lib,lock,log,mail,opt,run,spool/mail,tmp}} + +#Basic Initramfs Directory Structure +#mkdir --parents ./{bin,dev,etc,lib,lib64,mnt/root,proc,root,sbin,sys} + +#Link tools to busybox +cd bin +cp ../../busybox . +for i in `./busybox --list` +do + ln -s busybox $i +done +cd .. + +#initramfs init script +cat > ./init << EOF +#!/bin/sh + +mount -t proc proc /proc +mount -t sysfs sysfs /sys + +#Disable kernel messages +echo 0 > /proc/sys/kernel/printk + +#Dynamic devices +mdev -s + +echo 1 > /proc/sys/kernel/sysrq + +echo "Welcome to MatejaOS!" + +echo "You can turn off the system using SysRq." +echo "echo s > /proc/sysrq-trigger" +echo "echo o > /proc/sysrq-trigger" + +while true +do + #Job control for BusyBox shell + setsid cttyhack sh + sleep 1 +done + +##FOR FUTURE USE (SWITCH ROOT TO HARD DRIVE) +#mkdir /mnt/root +#rescue_shell() { +# echo "Something went wrong. Dropping to a shell." +# exec sh +#} +#cmdline() { +# local value +# value=" $(cat /proc/cmdline) " +# value="${value##* ${1}=}" +# value="${value%% *}" +# [ "${value}" != "" ] && echo "${value}" +#} +## Mount the root filesystem. +#mount -o ro $(findfs $(cmdline root)) /mnt/root || rescue_shell +## Clean up. +#umount /proc +#umount /sys +## Switch to hard drive +#exec switch_root /mnt/root /sbin/init +EOF +chmod +x init + +#create initramfs +find . | cpio --create --format=newc > ../initramfs + +cd .. + +#CREATE ISO +mkdir -p iso-dir/boot/grub +cp vmlinux initramfs iso-dir/boot/ +cat > iso-dir/boot/grub/grub.cfg << EOF +set timeout=3 +set default=0 +menuentry 'MatejaOS' { + linux /boot/vmlinux + initrd /boot/initramfs +} +EOF +grub-mkrescue -o ../ml.iso iso-dir + +echo "Finished!" +echo "You can boot the iso file with command:" +echo "qemu-system-x86_64 -m 512 -cdrom ml.iso -boot d" -- cgit v1.2.3