diff --git a/rootfs.py b/rootfs.py index 0ec482a..c30b95a 100755 --- a/rootfs.py +++ b/rootfs.py @@ -36,6 +36,7 @@ def create_configuration_file(args): config.write(f"UPDATE_CHECKSUMS={args.update_checksums}\n") config.write(f"JOBS={args.cores}\n") config.write(f"INTERNAL_CI={args.internal_ci}\n") + config.write(f"BARE_METAL={args.bare_metal}\n") if (args.bare_metal or args.qemu) and not args.kernel: config.write("DISK=sda\n") config.write("KERNEL_BOOTSTRAP=True\n") diff --git a/sysa/kexec-fiwix/kexec-fiwix.checksums b/sysa/kexec-fiwix/kexec-fiwix.checksums index 0103d7a..8b84157 100644 --- a/sysa/kexec-fiwix/kexec-fiwix.checksums +++ b/sysa/kexec-fiwix/kexec-fiwix.checksums @@ -1 +1 @@ -4f78914aef30b569a531102998e52a0514d8836204d57ff42bf0a3324968f247 /usr/bin/kexec-fiwix +7c0d280b732b8dfe767cacefc0245698796d953083ab4bcccfcb77f6d4fc4828 /usr/bin/kexec-fiwix diff --git a/sysa/kexec-fiwix/src/kexec-fiwix.c b/sysa/kexec-fiwix/src/kexec-fiwix.c index 1995d15..0c38b09 100644 --- a/sysa/kexec-fiwix/src/kexec-fiwix.c +++ b/sysa/kexec-fiwix/src/kexec-fiwix.c @@ -77,7 +77,16 @@ int main() { puts("Preparing multiboot info for kernel..."); char cmdline[256]; - sprintf(cmdline, "fiwix console=/dev/ttyS0 root=/dev/ram0 ramdisksize=%d initrd=sysa.ext2 kexec_proto=linux kexec_size=67000 kexec_cmdline=\"init=/init console=ttyS0\"", INITRD_MB * 1024); + /* Don't use a serial console if configured for bare metal */ + char *bare_metal = getenv("BARE_METAL"); + if (bare_metal != NULL && strcmp(bare_metal, "True") == 0) + { + sprintf(cmdline, "fiwix root=/dev/ram0 ramdisksize=%d initrd=sysa.ext2 kexec_proto=linux kexec_size=67000 kexec_cmdline=\"init=/init\"", INITRD_MB * 1024); + } + else + { + sprintf(cmdline, "fiwix console=/dev/ttyS0 root=/dev/ram0 ramdisksize=%d initrd=sysa.ext2 kexec_proto=linux kexec_size=67000 kexec_cmdline=\"init=/init console=ttyS0\"", INITRD_MB * 1024); + } char * boot_loader_name = "kexec-fiwix"; unsigned int next_avail_mem = 0x9800; diff --git a/sysa/run2.sh b/sysa/run2.sh index 11bdc14..6d21eca 100755 --- a/sysa/run2.sh +++ b/sysa/run2.sh @@ -33,9 +33,15 @@ go_sysb() { 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" + if [ "${BARE_METAL}" = True ]; then + kexec -l "/boot/linux-4.9.10" \ + --initrd="/boot/initramfs-sysb.cpio.gz" \ + --append="init=/init" + else + kexec -l "/boot/linux-4.9.10" --console-serial \ + --initrd="/boot/initramfs-sysb.cpio.gz" \ + --append="init=/init console=ttyS0" + fi echo "kexecing into sysb" kexec -e fi