mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-13 23:05:24 +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
31
sysa/run2.sh
31
sysa/run2.sh
|
|
@ -25,16 +25,20 @@ create_sysb() {
|
|||
}
|
||||
|
||||
go_sysb() {
|
||||
# Mount proc for kexec
|
||||
mkdir /proc /etc
|
||||
mount -t proc proc /proc
|
||||
# kexec time
|
||||
echo "Loading kernel + sysb initramfs using kexec"
|
||||
kexec -l "/boot/linux-4.9.10" --console-serial \
|
||||
--initrd="/boot/initramfs-sysb.cpio.gz" \
|
||||
--append="init=/init console=ttyS0"
|
||||
echo "kexecing into sysb"
|
||||
kexec -e
|
||||
if [ "${KERNEL_BOOTSTRAP}" = True ]; then
|
||||
kexec-linux "/dev/ram1" "/boot/linux-4.9.10" "/boot/initramfs-sysb.cpio.gz"
|
||||
else
|
||||
# Mount proc for kexec
|
||||
mkdir /proc /etc
|
||||
mount -t proc proc /proc
|
||||
# kexec time
|
||||
echo "Loading kernel + sysb initramfs using kexec"
|
||||
kexec -l "/boot/linux-4.9.10" --console-serial \
|
||||
--initrd="/boot/initramfs-sysb.cpio.gz" \
|
||||
--append="init=/init console=ttyS0"
|
||||
echo "kexecing into sysb"
|
||||
kexec -e
|
||||
fi
|
||||
}
|
||||
|
||||
build automake-1.15.1
|
||||
|
|
@ -96,12 +100,7 @@ build musl-1.2.3 '' no-patches
|
|||
|
||||
if [ "${CHROOT}" = False ]; then
|
||||
create_sysb
|
||||
if [ "${KERNEL_BOOTSTRAP}" = True ]; then
|
||||
echo "Kernel bootstrapping successful."
|
||||
echo "NOTE: Transition to Linux and building remaining packages is under development."
|
||||
else
|
||||
go_sysb
|
||||
fi
|
||||
go_sysb
|
||||
else
|
||||
# In chroot mode transition directly into System C.
|
||||
SYSC=/sysc_image
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue