From 6ecd0a79ef03302f346ea2fb1de552341ff66675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Stefanik?= Date: Tue, 13 Feb 2024 18:23:58 +0100 Subject: [PATCH] Exclude bootstrap-seeds from kernel bootstrap images In kernel bootstrap mode, the kernel (builder-hex0) includes the ability to assemble hex0 source code, and to execute basic commands, obviating the need for the bootstrap-seeds subdirectory. With the bootstrap-seeds directory excluded, the image consists of purely source code, with the exception of the boot sector, which is assembled from hex0 code by rootfs.py, and delivered ready for BIOS to boot. --- lib/generator.py | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/lib/generator.py b/lib/generator.py index 1828fc65..5ca1e55b 100755 --- a/lib/generator.py +++ b/lib/generator.py @@ -78,7 +78,7 @@ def prepare(self, target, using_kernel=False, kernel_bootstrap=False, target_siz shutil.copy2(os.path.join(self.git_dir, 'seed', 'preseeded.kaem'), os.path.join(self.target_dir, 'kaem.x86')) else: - self.stage0_posix() + self.stage0_posix(kernel_bootstrap) self.seed() self.steps() @@ -109,10 +109,12 @@ def steps(self): shutil.copytree(os.path.join(self.git_dir, 'steps'), os.path.join(self.target_dir, 'steps')) - def stage0_posix(self): + def stage0_posix(self, kernel_bootstrap=False): """Copy in all of the stage0-posix""" stage0_posix_base_dir = os.path.join(self.git_dir, 'seed', 'stage0-posix') for entry in os.listdir(stage0_posix_base_dir): + if kernel_bootstrap and entry == 'bootstrap-seeds': + continue orig = os.path.join(stage0_posix_base_dir, entry) target = os.path.join(self.target_dir, entry) if os.path.isfile(orig): @@ -120,10 +122,12 @@ def stage0_posix(self): else: shutil.copytree(orig, target) - arch = stage0_arch_map.get(self.arch, self.arch) - kaem_optional_seed = os.path.join(self.git_dir, 'seed', 'stage0-posix', 'bootstrap-seeds', - 'POSIX', arch, 'kaem-optional-seed') - shutil.copy2(kaem_optional_seed, os.path.join(self.target_dir, 'init')) + if not kernel_bootstrap: + arch = stage0_arch_map.get(self.arch, self.arch) + kaem_optional_seed = os.path.join(self.git_dir, 'seed', 'stage0-posix', + 'bootstrap-seeds', 'POSIX', arch, + 'kaem-optional-seed') + shutil.copy2(kaem_optional_seed, os.path.join(self.target_dir, 'init')) def seed(self): """Copy in extra seed files""" @@ -193,17 +197,32 @@ def append_srcfs(self, image_file): self.output_tree(image_file, '.') # Add commands to kick off stage0-posix + cmd = ' '.join(['src', + '0', + '/bootstrap-seeds\n']) + image_file.write(cmd.encode()) + cmd = ' '.join(['src', + '0', + '/bootstrap-seeds/POSIX\n']) + image_file.write(cmd.encode()) + cmd = ' '.join(['src', + '0', + '/bootstrap-seeds/POSIX/x86\n']) + image_file.write(cmd.encode()) cmd = ' '.join(['hex0', - './bootstrap-seeds/POSIX/x86/hex0_x86.hex0', - './bootstrap-seeds/POSIX/x86/hex0-seed\n']) + '/x86/hex0_x86.hex0', + '/bootstrap-seeds/POSIX/x86/hex0-seed\n']) image_file.write(cmd.encode()) cmd = ' '.join(['hex0', - './bootstrap-seeds/POSIX/x86/kaem-minimal.hex0', - './bootstrap-seeds/POSIX/x86/kaem-optional-seed\n']) + '/x86/kaem-minimal.hex0', + '/bootstrap-seeds/POSIX/x86/kaem-optional-seed\n']) image_file.write(cmd.encode()) - cmd = ' '.join(['./bootstrap-seeds/POSIX/x86/kaem-optional-seed', './kaem.x86\n']) + cmd = ' '.join(['hex0', + '/x86/kaem-minimal.hex0', + '/init\n']) + image_file.write(cmd.encode()) + cmd = ' '.join(['/bootstrap-seeds/POSIX/x86/kaem-optional-seed', '/kaem.x86\n']) image_file.write(cmd.encode()) - os.chdir(save_cwd) def create_builder_hex0_disk_image(self, image_file_name, size):