Keep Hydra OS branding through disk installation
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
"""Run HydraOS from this checkout without installing a host package."""
|
"""Run Hydra OS from this checkout without installing a host package."""
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
"""HydraOS independent VM management."""
|
"""Hydra OS independent VM management."""
|
||||||
|
|||||||
+3
-3
@@ -432,7 +432,7 @@ def render_plan(request, target, root):
|
|||||||
'/boot/initramfs-<kernel>.img', '<kernel>'],
|
'/boot/initramfs-<kernel>.img', '<kernel>'],
|
||||||
grub_command(root), ['chroot', str(root), 'grub-mkconfig', '-o', '/boot/grub/grub.cfg'],
|
grub_command(root), ['chroot', str(root), 'grub-mkconfig', '-o', '/boot/grub/grub.cfg'],
|
||||||
]
|
]
|
||||||
lines = [f'HydraOS {"EXECUTION" if request.execute else "dry-run"}: erase all data on {target}.',
|
lines = [f'Hydra OS {"EXECUTION" if request.execute else "dry-run"}: erase all data on {target}.',
|
||||||
'GPT: exactly 1 GiB FAT32 ESP, remaining space ext4 root.',
|
'GPT: exactly 1 GiB FAT32 ESP, remaining space ext4 root.',
|
||||||
f'Prepared payload: {request.payload}; account: {request.user}; timezone: {request.timezone}.',
|
f'Prepared payload: {request.payload}; account: {request.user}; timezone: {request.timezone}.',
|
||||||
'Commands (UUIDs/kernel discovered after unpacking; no commands run in dry-run):']
|
'Commands (UUIDs/kernel discovered after unpacking; no commands run in dry-run):']
|
||||||
@@ -631,7 +631,7 @@ def install(request, runner, probe, root, password, log: TextIO):
|
|||||||
dbus_machine_id.unlink(missing_ok=True)
|
dbus_machine_id.unlink(missing_ok=True)
|
||||||
write_config(root, 'etc/dracut.conf.d/90-hydra-installed.conf',
|
write_config(root, 'etc/dracut.conf.d/90-hydra-installed.conf',
|
||||||
'hostonly="no"\nhostonly_cmdline="no"\nomit_dracutmodules+=" dmsquash-live "\n# No root=live: or rd.live arguments on the installed disk.\n')
|
'hostonly="no"\nhostonly_cmdline="no"\nomit_dracutmodules+=" dmsquash-live "\n# No root=live: or rd.live arguments on the installed disk.\n')
|
||||||
write_config(root, 'etc/default/grub', 'GRUB_DISTRIBUTOR="HydraOS"\nGRUB_CMDLINE_LINUX=""\nGRUB_TIMEOUT=3\n')
|
write_config(root, 'etc/default/grub', 'GRUB_DISTRIBUTOR="Hydra OS"\nGRUB_CMDLINE_LINUX=""\nGRUB_TIMEOUT=3\n')
|
||||||
write_config(root, 'etc/sudoers.d/90-hydra-admin', '%wheel ALL=(ALL:ALL) ALL\n', 0o440)
|
write_config(root, 'etc/sudoers.d/90-hydra-admin', '%wheel ALL=(ALL:ALL) ALL\n', 0o440)
|
||||||
mount(['mount', '--rbind', '/dev', str(root / 'dev')], root / 'dev', True)
|
mount(['mount', '--rbind', '/dev', str(root / 'dev')], root / 'dev', True)
|
||||||
run(['mount', '--make-rslave', str(root / 'dev')])
|
run(['mount', '--make-rslave', str(root / 'dev')])
|
||||||
@@ -711,7 +711,7 @@ def prompt_password():
|
|||||||
|
|
||||||
|
|
||||||
def main(argv=None):
|
def main(argv=None):
|
||||||
parser = argparse.ArgumentParser(description='HydraOS explicit whole-disk installer; dry-run by default')
|
parser = argparse.ArgumentParser(description='Hydra OS explicit whole-disk installer; dry-run by default')
|
||||||
parser.add_argument('--disk', help='explicit physical whole-disk target; never automatically selected')
|
parser.add_argument('--disk', help='explicit physical whole-disk target; never automatically selected')
|
||||||
parser.add_argument('--user', help='installed administrator username')
|
parser.add_argument('--user', help='installed administrator username')
|
||||||
parser.add_argument('--payload', default=DEFAULT_PAYLOAD, help='prepared live squashfs root payload')
|
parser.add_argument('--payload', default=DEFAULT_PAYLOAD, help='prepared live squashfs root payload')
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ class PipelineTests(unittest.TestCase):
|
|||||||
self.assertIn('hostonly_cmdline="no"', (self.root / 'etc/dracut.conf.d/90-hydra-installed.conf').read_text())
|
self.assertIn('hostonly_cmdline="no"', (self.root / 'etc/dracut.conf.d/90-hydra-installed.conf').read_text())
|
||||||
self.assertIn('omit_dracutmodules+=" dmsquash-live "', (self.root / 'etc/dracut.conf.d/90-hydra-installed.conf').read_text())
|
self.assertIn('omit_dracutmodules+=" dmsquash-live "', (self.root / 'etc/dracut.conf.d/90-hydra-installed.conf').read_text())
|
||||||
self.assertNotIn('root=live:', (self.root / 'etc/default/grub').read_text())
|
self.assertNotIn('root=live:', (self.root / 'etc/default/grub').read_text())
|
||||||
|
self.assertIn('GRUB_DISTRIBUTOR="Hydra OS"', (self.root / 'etc/default/grub').read_text())
|
||||||
dracut = next(c for c in runner.calls if 'dracut' in c)
|
dracut = next(c for c in runner.calls if 'dracut' in c)
|
||||||
self.assertIn('6.12.1', dracut)
|
self.assertIn('6.12.1', dracut)
|
||||||
self.assertEqual(runner.calls[-1], ['umount', str(self.root)])
|
self.assertEqual(runner.calls[-1], ['umount', str(self.root)])
|
||||||
|
|||||||
Reference in New Issue
Block a user