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.
This commit is contained in:
Gábor Stefanik 2024-02-13 18:23:58 +01:00
parent 34cb6758d2
commit 6ecd0a79ef
1 changed files with 32 additions and 13 deletions

View File

@ -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(['hex0',
'./bootstrap-seeds/POSIX/x86/hex0_x86.hex0',
'./bootstrap-seeds/POSIX/x86/hex0-seed\n'])
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/kaem-minimal.hex0',
'./bootstrap-seeds/POSIX/x86/kaem-optional-seed\n'])
'/x86/hex0_x86.hex0',
'/bootstrap-seeds/POSIX/x86/hex0-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',
'/bootstrap-seeds/POSIX/x86/kaem-optional-seed\n'])
image_file.write(cmd.encode())
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):