commit: 6ecd0a79ef03302f346ea2fb1de552341ff66675
parent 34cb6758d241b92c3c59e61f0a1d62f86f0c36c1
Author: Gábor Stefanik <netrolller.3d@gmail.com>
Date: Tue, 13 Feb 2024 18:23:58 +0100
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.
Diffstat:
1 file changed, 31 insertions(+), 12 deletions(-)
diff --git a/lib/generator.py b/lib/generator.py
@@ -78,7 +78,7 @@ class Generator():
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 @@ class Generator():
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 @@ class Generator():
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 @@ class Generator():
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):