Documentation improvements and cleanup. Added shutdown tasks (sync & umount).
This commit is contained in:
parent
05b62fd32e
commit
62283e9f82
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,6 +5,7 @@
|
||||
/src/source/**
|
||||
/src/work/**
|
||||
/src/*.iso
|
||||
/src/*.img
|
||||
|
||||
/src/experimental/glibc-toybox/source/**
|
||||
/src/experimental/glibc-toybox/work/**
|
||||
|
34
src/.config
34
src/.config
@ -29,26 +29,34 @@ SYSLINUX_SOURCE_URL=https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinu
|
||||
### ### ###
|
||||
|
||||
# Use predefined '.config' file when building the kernel. This overrides the config generation
|
||||
# in '02_build_kernel.sh' and uses the config file provided in this parameter. You can comment,
|
||||
# leave undefined or use nonexisting file in order to disable the property and rely on automatic
|
||||
# config generation.
|
||||
# in '02_build_kernel.sh' and the build process uses the config file provided in this parameter.
|
||||
# You can comment, leave undefined or use nonexisting file in order to disable the property and
|
||||
# rely on automatic config generation. The file location is relative from the source folder.
|
||||
#
|
||||
# KERNEL_CONFIG_FILE=kernel.config
|
||||
# KERNEL_CONFIG_FILE=path/to/predefined/kernel.config
|
||||
|
||||
# Use predefined '.config' file when building BusyBox. This overrides the config generation in
|
||||
# '07_build_busybox.sh' and uses the config file provided in this parameter. Leave undefined or
|
||||
# comment the property in order to disable it and rely on automatic config generation.
|
||||
# '07_build_busybox.sh' and the build process uses the config file provided in this parameter.
|
||||
# You can comment, leave undefined or use nonexisting file in order to disable the property and
|
||||
# rely on automatic config generation. The file location is relative from the source folder.
|
||||
#
|
||||
# BUSYBOX_CONFIG_FILE=busybox.config
|
||||
# BUSYBOX_CONFIG_FILE=path/to/predefined/busybox.config
|
||||
|
||||
# Define the overlay type to use. Possible values are 'sparse' and 'folder'. You can use any other
|
||||
# value, no value, or comment the property in order to disable it.
|
||||
# value, no value, or comment the property in order to disable it. Put your overlay content in the
|
||||
# folder '11_generate_iso' and it will be automatically merged with the root file system on boot.
|
||||
# The build process creates either '/minimal.img/rootfs' or '/minimal/rootfs' (read below) and this
|
||||
# folder contains all overlay content in it. If the boot media is writeable, then all changes on
|
||||
# the root filesystem are automatically persisted.
|
||||
#
|
||||
# sparse - use sparse file with hardcoded maximal size of 1MB (see 11_generate_iso.sh). This option
|
||||
# requires root permissions. The generated ISO image is larger.
|
||||
# sparse - use sparse file 'minimal.img' with hardcoded maximal size of 1MB (see 11_generate_iso.sh).
|
||||
# The generated ISO image is larger because the sparse file is treated as regular file. This
|
||||
# option requires root permissions or otherwise sparse file generation is silently skipped.
|
||||
# Sparse file is treated as separate disk image and works fine on 'vfat'.
|
||||
#
|
||||
# folder - use normal folder structure. Currently this doesn't work if the file system is 'vfat'
|
||||
# because FAT requires special handling, e.g. POSIX overlay (http://sf.net/p/posixovl).
|
||||
# folder - use normal folder structure (/minimal/). Note that this doesn't work if the file system is
|
||||
# 'vfat' because FAT requires special handling, e.g. POSIX overlay (http://sf.net/p/posixovl).
|
||||
# This is the default option because it doesn't require root permissions.
|
||||
#
|
||||
OVERLAY_TYPE=sparse
|
||||
OVERLAY_TYPE=folder
|
||||
|
||||
|
@ -8,7 +8,7 @@ cd work/kernel
|
||||
cd $(ls -d *)
|
||||
|
||||
# Cleans up the kernel sources, including configuration files.
|
||||
# make mrproper
|
||||
make mrproper
|
||||
|
||||
# Read the 'KERNEL_CONFIG_FILE' property from '.config'
|
||||
KERNEL_CONFIG_FILE="$SRC_DIR/$(grep -i KERNEL_CONFIG_FILE $SRC_DIR/.config | cut -f2 -d'=')"
|
||||
@ -27,8 +27,6 @@ else
|
||||
sed -i "s/.*CONFIG_OVERLAY_FS.*/CONFIG_OVERLAY_FS=y/" .config
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
# Compile the kernel with optimization for 'parallel jobs' = 'number of processors'.
|
||||
# Good explanation of the different kernels:
|
||||
# http://unix.stackexchange.com/questions/5518/what-is-the-difference-between-the-following-kernel-makefile-terms-vmlinux-vmlinux
|
||||
|
@ -15,7 +15,7 @@ cd work/busybox
|
||||
cd $(ls -d *)
|
||||
|
||||
# Remove previously generated artifacts.
|
||||
# make distclean
|
||||
make distclean
|
||||
|
||||
# Read the 'BUSYBOX_CONFIG_FILE' property from '.config'
|
||||
BUSYBOX_CONFIG_FILE="$SRC_DIR/$(grep -iBUSYBOX_CONFIG_FILE $SRC_DIR/.config | cut -f2 -d'=')"
|
||||
@ -33,8 +33,6 @@ else
|
||||
sed -i "s/.*CONFIG_INETD.*/CONFIG_INETD=n/" .config
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
# This variable holds the full path to the glibc installation area as quoted string.
|
||||
# All back slashes are escaped (/ => \/) in order to keep the 'sed' command stable.
|
||||
GLIBC_INSTALLED_ESCAPED=$(echo \"$GLIBC_INSTALLED\" | sed 's/\//\\\//g')
|
||||
|
@ -20,7 +20,7 @@ cd $(ls -d *)
|
||||
# Copy all BusyBox generated stuff to the location of our 'initramfs' folder.
|
||||
cp -r _install ../../rootfs
|
||||
|
||||
# Copy all rootfs stuff to the location of our 'initramfs' folder.
|
||||
# Copy all rootfs resources to the location of our 'initramfs' folder.
|
||||
cp -r ../../../08_generate_rootfs/* ../../rootfs
|
||||
|
||||
cd ../../rootfs
|
||||
@ -35,6 +35,7 @@ cp ../../*.txt src
|
||||
cp -r ../../08_generate_rootfs src
|
||||
cp -r ../../11_generate_iso src
|
||||
|
||||
# Make all files readable and all scripts executable.
|
||||
chmod -R +rx **/*.sh
|
||||
chmod -R +r **/.config
|
||||
chmod -R +r **/*.txt
|
||||
|
@ -1,5 +1,9 @@
|
||||
::sysinit:/etc/bootscript.sh
|
||||
::restart:/sbin/init
|
||||
::shutdown:echo "Syncing file buffers..."
|
||||
::shutdown:/bin/sync
|
||||
::shutdown:echo "Unmounting all filesystems..."
|
||||
::shutdown:umount -a -r
|
||||
::ctrlaltdel:/sbin/reboot
|
||||
::once:cat /etc/welcome.txt
|
||||
::respawn:/bin/cttyhack /bin/sh
|
||||
|
@ -40,7 +40,7 @@ for DEVICE in /dev/* ; do
|
||||
WORK_DIR=""
|
||||
|
||||
mount $DEVICE $DEVICE_MNT 2>/dev/null
|
||||
if [ -d $DEVICE_MNT/minimal/rootfs ] && [ -d $DEVICE_MNT/minimal/work ] ; then
|
||||
if [ -d $DEVICE_MNT/minimal/rootfs -a -d $DEVICE_MNT/minimal/work ] ; then
|
||||
# folder
|
||||
echo " Found '/minimal' folder on device '$DEVICE'."
|
||||
touch $DEVICE_MNT/minimal/rootfs/minimal.pid 2>/dev/null
|
||||
@ -145,5 +145,7 @@ mount --move /tmp /mnt/tmp
|
||||
exec switch_root /mnt /sbin/init
|
||||
|
||||
echo "You can never see this... unless there is a serious bug..."
|
||||
sleep 99999
|
||||
|
||||
# Wait until any key has been pressed.
|
||||
read -n1 -s
|
||||
|
||||
|
@ -45,60 +45,59 @@ chmod +r src/*.txt
|
||||
|
||||
# Read the 'OVERLAY_TYPE' property from '.config'
|
||||
OVERLAY_TYPE="$(grep -i OVERLAY_TYPE $SRC_DIR/.config | cut -f2 -d'=')"
|
||||
|
||||
if [ "$OVERLAY_TYPE" = "sparse" -a "$(id -u)" = "0" ] ; then
|
||||
# sparse
|
||||
# Use sparse file as storage place. The above check guarantees that the whole
|
||||
# script is executed with root permissions or otherwise this block is skipped.
|
||||
# All files and folders located in the folder '11_generate_iso' will be merged
|
||||
# with the root folder on boot.
|
||||
|
||||
echo "Using sparse file for overlay."
|
||||
|
||||
# This is the BusyBox executable.
|
||||
# This is the BusyBox executable that we have already generated.
|
||||
BUSYBOX=../rootfs/bin/busybox
|
||||
|
||||
# Create sparse image file with 1MB size.
|
||||
# Create sparse image file with 1MB size. Note that this increases the ISO image size.
|
||||
$BUSYBOX truncate -s 1M minimal.img
|
||||
|
||||
# Find available loop device.
|
||||
LOOP_DEVICE=$($BUSYBOX losetup -f)
|
||||
|
||||
# Associate loop device with the sparse image file.
|
||||
# Associate the available loop device with the sparse image file.
|
||||
$BUSYBOX losetup $LOOP_DEVICE minimal.img
|
||||
|
||||
# Format the sparse image file with Ext2 file system.
|
||||
$BUSYBOX mkfs.ext2 $LOOP_DEVICE
|
||||
|
||||
# Mount the sparse file in folder 'tmp_min".
|
||||
mkdir tmp_min
|
||||
$BUSYBOX mount minimal.img tmp_min
|
||||
# Mount the sparse file in folder 'sparse".
|
||||
mkdir sparse
|
||||
$BUSYBOX mount minimal.img sparse
|
||||
|
||||
# Create the overlay folders.
|
||||
mkdir -p tmp_min/rootfs
|
||||
mkdir -p tmp_min/work
|
||||
mkdir -p sparse/rootfs
|
||||
mkdir -p sparse/work
|
||||
|
||||
# Copy the overlay content.
|
||||
cp -r $SRC_DIR/11_generate_iso/* tmp_min/rootfs/
|
||||
cp -r $SRC_DIR/11_generate_iso/* sparse/rootfs/
|
||||
|
||||
# Unmount the sparse file and thelete the temporary folder.
|
||||
$BUSYBOX umount tmp_min
|
||||
rm -rf tmp_min
|
||||
$BUSYBOX umount sparse
|
||||
rm -rf sparse
|
||||
|
||||
# Detach the loop device.
|
||||
# Detach the loop device since we no longer need it.
|
||||
$BUSYBOX losetup -d $LOOP_DEVICE
|
||||
elif [ "$OVERLAY_TYPE" = "folder" ] ; then
|
||||
# folder
|
||||
# Use normal folder structure for overlay. All files and folders located in
|
||||
# the folder '11_generate_iso' will be merged with the root folder on boot.
|
||||
|
||||
echo "Using folder structure for overlay."
|
||||
|
||||
mkdir -p minimal/rootfs
|
||||
mkdir -p minimal/work
|
||||
mkdir -p minimal/work
|
||||
|
||||
cp -r $SRC_DIR/11_generate_iso/* minimal/rootfs/
|
||||
fi
|
||||
|
||||
# Create the overlay directory '/minimal/rootfs'. All files in this folder are
|
||||
# merged in the root folder and can be manipulated thanks to overlayfs.
|
||||
#mkdir -p minimal/rootfs
|
||||
#cd minimal/rootfs
|
||||
#echo 'Sample file 1 from CD.' > file_from_cd_1.txt
|
||||
#echo 'Sample file 2 from CD.' > file_from_cd_2.txt
|
||||
#cd ../..
|
||||
|
||||
# Create ISOLINUX configuration file.
|
||||
echo 'default kernel.bz initrd=rootfs.gz' > ./isolinux.cfg
|
||||
|
||||
|
@ -1,7 +1,12 @@
|
||||
|
||||
This file is located in directory '11_generate_iso'. You can use this directory
|
||||
to put your own content (files and folders) which will be visible in the root
|
||||
directory of your 'Minimal Linux Live' system, just like this file is visible.
|
||||
The files/folders will override the content in the root folder, so be careful
|
||||
what you put there because you may end up with broken system. :)
|
||||
This file has been generated from directory '11_generate_iso'. You can use this
|
||||
directory to put your own content (files and folders) which will be visible in
|
||||
the root directory of your 'Minimal Linux Live' system, just like this file is
|
||||
visible. The files/folders will override the content in the root folder, so be
|
||||
careful what you put there because you may end up with broken system. If the
|
||||
boot media is writeable, then all changes on the root file system are persisted
|
||||
automatically, so be very careful what you do when you use the overlay support.
|
||||
|
||||
|
||||
Check the file '/src/.config' for more details on the overlay options.
|
||||
|
||||
|
@ -1,5 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
qemu-system-i386 -m 64M -cdrom minimal_linux_live.iso -boot d
|
||||
#qemu-system-i386 -m 64M -hda hdd.img -cdrom minimal_linux_live.iso -boot d
|
||||
|
||||
# Use this when you want to play with hard disk content. You can manually create
|
||||
# sparse file (/minimal.img) and put overlay content (/minimal.img/rootfs) in it.
|
||||
#
|
||||
# qemu-system-i386 -m 64M -hda hdd.img -cdrom minimal_linux_live.iso -boot d
|
||||
|
||||
|
@ -2,3 +2,7 @@
|
||||
|
||||
qemu-system-x86_64 -m 64M -hda hdd.img -cdrom minimal_linux_live.iso -boot d
|
||||
|
||||
# Use this when you want to play with hard disk content. You can manually create
|
||||
# sparse file (/minimal.img) and put overlay content (/minimal.img/rootfs) in it.
|
||||
#
|
||||
# qemu-system-x86_64 -m 64M -hda hdd.img -cdrom minimal_linux_live.iso -boot d
|
||||
|
Loading…
x
Reference in New Issue
Block a user