Keep Hydra OS branding through disk installation

This commit is contained in:
Codex
2026-10-13 15:15:31 +03:00
parent e6dc59b567
commit b547d6c535
4 changed files with 6 additions and 5 deletions
+1 -1
View File
@@ -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
View File
@@ -1 +1 @@
"""HydraOS independent VM management.""" """Hydra OS independent VM management."""
+3 -3
View File
@@ -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')
+1
View File
@@ -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)])