Merge pull request #1 from AwlsomeAlex/master
Merging the changes proposed by AwlsomeAlex. The ISO image generation process has been changed to follow the approach from the "Minimal Linux Live" project. There are few other minor (but important) fixes as well.
This commit is contained in:
commit
afbf6fb62f
37
README.md
37
README.md
@ -1,16 +1,19 @@
|
|||||||
# Minimal Linux Script
|
# Minimal Linux Script
|
||||||
One script which generates fully functional live Linux ISO image with minimal effort (less than 25 lines of code). This is based on the first published version of [Minimal Linux Live](http://github.com/ivandavidov/minimal) with some minor improvements taken from the next releases. All empty lines and comments have been removed and the script has been modified to reduce the overall length.
|
One script which generates fully functional live Linux ISO image with minimal effort (less than 25 lines of code). This is based on the first published version of [Minimal Linux Live](http://github.com/ivandavidov/minimal) with some minor improvements taken from the next releases. All empty lines and comments have been removed and the script has been modified to reduce the overall length.
|
||||||
|
|
||||||
The script below uses **Linux kernel 4.6.2** and **BusyBox 1.24.2**. The source bundles are downloaded and compiled automatically. If you are using [Ubuntu](http://ubuntu.com) or [Linux Mint](http://linuxmint.com), you should be able to resolve all build dependencies by executing the following command:
|
The script below uses **Linux kernel 4.7.6**, **BusyBox 1.24.2** and **Syslinux 6.03**. The source bundles are downloaded and compiled automatically. If you are using [Ubuntu](http://ubuntu.com) or [Linux Mint](http://linuxmint.com), you should be able to resolve all build dependencies by executing the following command:
|
||||||
|
|
||||||
sudo apt-get install wget bc build-essential gawk syslinux genisoimage
|
sudo apt-get install wget bc build-essential gawk syslinux genisoimage
|
||||||
|
|
||||||
After that simply run the below script. It doesn't require root privileges. In the end you should have a bootable ISO image named `minimal_linux_live.iso` in the same directory where you executed the script.
|
After that simply run the below script. It doesn't require root privileges. In the end you should have a bootable ISO image named `minimal_linux_live.iso` in the same directory where you executed the script.
|
||||||
|
|
||||||
wget http://kernel.org/pub/linux/kernel/v4.x/linux-4.6.2.tar.xz
|
wget http://kernel.org/pub/linux/kernel/v4.x/linux-4.7.6.tar.xz
|
||||||
wget http://busybox.net/downloads/busybox-1.24.2.tar.bz2
|
wget http://busybox.net/downloads/busybox-1.24.2.tar.bz2
|
||||||
tar -xvf linux-4.6.2.tar.xz
|
wget http://kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.xz
|
||||||
|
mkdir isoimage
|
||||||
|
tar -xvf linux-4.7.6.tar.xz
|
||||||
tar -xvf busybox-1.24.2.tar.bz2
|
tar -xvf busybox-1.24.2.tar.bz2
|
||||||
|
tar -xvf syslinux-6.03.tar.xz
|
||||||
cd busybox-1.24.2
|
cd busybox-1.24.2
|
||||||
make distclean defconfig
|
make distclean defconfig
|
||||||
sed -i "s/.*CONFIG_STATIC.*/CONFIG_STATIC=y/" .config
|
sed -i "s/.*CONFIG_STATIC.*/CONFIG_STATIC=y/" .config
|
||||||
@ -25,11 +28,31 @@ After that simply run the below script. It doesn't require root privileges. In t
|
|||||||
echo 'mount -t sysfs none /sys' >> init
|
echo 'mount -t sysfs none /sys' >> init
|
||||||
echo 'setsid cttyhack /bin/sh' >> init
|
echo 'setsid cttyhack /bin/sh' >> init
|
||||||
chmod +x init
|
chmod +x init
|
||||||
find . | cpio -R +0:+0 -H newc -o | gzip > ../../rootfs.cpio.gz
|
find . | cpio -R root:root -H newc -o | gzip > ../../rootfs.cpio.gz
|
||||||
cd ../../linux-4.6.2
|
cd ../../linux-4.7.6
|
||||||
make mrproper defconfig bzImage
|
make mrproper defconfig bzImage
|
||||||
make isoimage FDINITRD=../rootfs.cpio.gz
|
cp arch/x86/boot/bzImage \
|
||||||
cp arch/x86/boot/image.iso ../minimal_linux_live.iso
|
../isoimage/kernel
|
||||||
|
cd ..
|
||||||
|
cd isoimage
|
||||||
|
cp ../syslinux-6.03/bios/core/isolinux.bin .
|
||||||
|
cp ../syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 .
|
||||||
|
cp kernel ./kernel.xz
|
||||||
|
cp ../rootfs.cpio.gz ./rootfs.xz
|
||||||
|
echo 'default kernel.xz initrd=rootfs.xz' > ./isolinux.cfg
|
||||||
|
genisoimage \
|
||||||
|
-J \
|
||||||
|
-r \
|
||||||
|
-o ../minimal_linux_live.iso \
|
||||||
|
-b isolinux.bin \
|
||||||
|
-c boot.cat \
|
||||||
|
-input-charset UTF-8 \
|
||||||
|
-no-emul-boot \
|
||||||
|
-boot-load-size 4 \
|
||||||
|
-boot-info-table \
|
||||||
|
-joliet-long \
|
||||||
|
./
|
||||||
|
isohybrid -u ../minimal_linux_live.iso 2>/dev/null || true
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
Note that this produces very small live Linux OS with working shell only. The network support has been implemented properly in the [Minimal Linux Live](http://github.com/ivandavidov/minimal) project which is extensively documented and more feature rich, yet still produces very small live Linux ISO image.
|
Note that this produces very small live Linux OS with working shell only. The network support has been implemented properly in the [Minimal Linux Live](http://github.com/ivandavidov/minimal) project which is extensively documented and more feature rich, yet still produces very small live Linux ISO image.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user