mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-10 13:25:25 +01:00
Complete the kernel bootstrap by adding kexec of Linux from Fiwix.
A tiny bootloader bootstrap has been added to compile the builder-hex0 kernel from hex0 source. The boot compiler is builder-hex0-x86-stage1.hex0 and builder-hex0-x86-stage1.bin. The builder-hex0 kernel is now named builder-hex0-x86-stage2.hex0. The inclusion of a binary seed resolves the problem with the previous strategy which used an architecture-specific hex0 compiler. If sysb detects a full disk (i.e. DISK=sda) it now partitions the disk unconditionally because previously fdisk was reporting existing but empty partitions which resulted in no parititions being created. e2fsprogs is now built with --disable-tls because musl was built on Fiwix without full threading support and mkfs.ext4 was crashing without disabling thread local storage. kexec-linux writes the linux kernel and initramfs to a RAM drive on Fiwix which ensure a pre-allocated contiguous memory block. The following is written to the ram drive: a 32-bit number which is the size of the kernel in bytes, a 32-bit number which is the size of the initramfs in bytes, followed by the Linux kernel image, followed by the initramfs. kexec-fiwix invokes a sync syscall to ensure all writes are flushed to the ram drive and then initiates the kexec by shutting down Fiwix with a reboot syscall. Fiwix knows whether and how to perform the kexec based on kernel parameters passed to it.
This commit is contained in:
parent
e86db47b6e
commit
a2fcf1ced9
23 changed files with 633 additions and 277 deletions
14
sysb/run.sh
14
sysb/run.sh
|
|
@ -65,15 +65,15 @@ if [ -z "${DISK}" ] || ! [ -e "/dev/${DISK}" ]; then
|
|||
echo "DISK=${DISK}" >> /usr/src/bootstrap.cfg
|
||||
fi
|
||||
|
||||
# Is it a full disk, and not a partition
|
||||
# Is it a full disk, and not a partition?
|
||||
# shellcheck disable=SC2012
|
||||
if [ $(($(ls -l "/dev/${DISK}" | sed "s/.*, *//" | sed "s/ .*//") % 8)) -eq 0 ]; then
|
||||
if ! fdisk -l "/dev/${DISK}" | grep -qE "${DISK}p?[0-9]" ; then
|
||||
echo "Creating partition table and partition"
|
||||
echo ";" | sfdisk "/dev/${DISK}"
|
||||
mkfs.ext4 "/dev/${DISK}1"
|
||||
DISK="${DISK}1"
|
||||
fi
|
||||
echo "Creating partition table..."
|
||||
echo ";" | sfdisk "/dev/${DISK}"
|
||||
fdisk -l "/dev/${DISK}"
|
||||
echo "Creating ext4 partition..."
|
||||
mkfs.ext4 "/dev/${DISK}1"
|
||||
DISK="${DISK}1"
|
||||
fi
|
||||
echo "export DISK=${DISK}" >> /usr/src/bootstrap.cfg
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue