gtk4 installer adaptations

This commit is contained in:
Ward from fusion-voyager-3 2024-01-24 16:01:01 +03:00
parent 47453ac03c
commit 92018895eb
2 changed files with 31 additions and 56 deletions

View File

@ -1,4 +1,4 @@
pikainstall (1.0.8-100pika2) pikauwu; urgency=medium pikainstall (1.1.0-100pika1) pikauwu; urgency=medium
* Initial release. * Initial release.

View File

@ -6,7 +6,7 @@ import subprocess
import os import os
# Version # Version
version="1.0.8" version="1.1.0"
dist="PikaOS 3" dist="PikaOS 3"
image="/cdrom/casper/filesystem.squashfs" image="/cdrom/casper/filesystem.squashfs"
@ -64,9 +64,7 @@ parser = argparse.ArgumentParser()
parser.add_argument("-r", "--root", help="The Path where root is mounted to.", metavar="/mnt/root", default=argparse.SUPPRESS, required=True, nargs=1) parser.add_argument("-r", "--root", help="The Path where root is mounted to.", metavar="/mnt/root", default=argparse.SUPPRESS, required=True, nargs=1)
parser.add_argument("-l", "--locale", help="Choose what locale/language to use.", metavar="en_US.UTF-8", default=argparse.SUPPRESS, required=True, nargs=1) parser.add_argument("-l", "--locale", help="Choose what locale/language to use.", metavar="en_US.UTF-8", default=argparse.SUPPRESS, required=True, nargs=1)
parser.add_argument("-k", "--keyboard", help="Choose what keyboard layout to use.", metavar="us", default=argparse.SUPPRESS, required=True, nargs=1) parser.add_argument("-k", "--keyboard", help="Choose what keyboard layout to use.", metavar="us", default=argparse.SUPPRESS, required=True, nargs=1)
parser.add_argument("-b", "--boot", help="The Path where boot is mounted to.", metavar="/mnt/root/boot", default=argparse.SUPPRESS, required=True, nargs=1) parser.add_argument("-c", "--cryptkey", help="Luks passkey to /home.", metavar="password123", default=None, nargs=1)
parser.add_argument("-e", "--efi", help="The Path where EFI is mounted to.", metavar="/mnt/root/boot/efi", default=argparse.SUPPRESS, required=True, nargs=1)
parser.add_argument("-H", "--home", help="The Path where home is mounted to.", metavar="/mnt/root/home", default=None, nargs=1)
parser.add_argument("-t", "--timezone", help="Choose what timezone to use.", metavar="America/New_York", default=argparse.SUPPRESS, required=True, nargs=1) parser.add_argument("-t", "--timezone", help="Choose what timezone to use.", metavar="America/New_York", default=argparse.SUPPRESS, required=True, nargs=1)
args = parser.parse_args() args = parser.parse_args()
@ -92,26 +90,28 @@ else:
print("Root Encryption UUID: {}".format(root_uuid_encrypt)) print("Root Encryption UUID: {}".format(root_uuid_encrypt))
# Get Boot info # Get Boot info
## Boot UUID ## Boot UUID
boot_uuid_command= subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'uuid'] + args.boot, stdout=subprocess.PIPE, stderr=subprocess.PIPE) boot_uuid_command= subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'uuid'] + args.root + "/boot" , stdout=subprocess.PIPE, stderr=subprocess.PIPE)
## Print Boot ## Print Boot
boot_uuid = boot_uuid_command.stdout.readline().decode("utf-8").strip() boot_uuid = boot_uuid_command.stdout.readline().decode("utf-8").strip()
print("\nBoot UUID: {}".format(boot_uuid)) print("\nBoot UUID: {}".format(boot_uuid))
# Get EFI info # Get EFI info
## EFI UUID ## EFI UUID
efi_uuid_command= subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'uuid'] + args.efi, stdout=subprocess.PIPE, stderr=subprocess.PIPE) efi_uuid_command= subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'uuid'] + args.root + "/boot/efi", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
efi_uuid = efi_uuid_command.stdout.readline().decode("utf-8").strip() efi_uuid = efi_uuid_command.stdout.readline().decode("utf-8").strip()
## Print EFI Info ## Print EFI Info
print("\nEFI UUID: {}".format(efi_uuid)) print("\nEFI UUID: {}".format(efi_uuid))
# Get Home info is exists
if args.home is not None:
## Home UUID ## Home UUID
home_uuid_command = subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'uuid'] + args.home, stdout=subprocess.PIPE, stderr=subprocess.PIPE) home_uuid_command = subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'uuid'] + args.root + "/home", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
home_uuid = home_uuid_command.stdout.readline().decode("utf-8").strip() home_uuid = home_uuid_command.stdout.readline().decode("utf-8").strip()
# Get Home info is exists
if root_uuid != home_uuid:
## Home Encryption Partition ## Home Encryption Partition
home_part_encrypt_command = subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'encrypt-part'] + args.home, stdout=subprocess.PIPE, stderr=subprocess.PIPE) home_part_encrypt_command = subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'encrypt-part'] + args.root + "/home", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
home_part_encrypt = home_part_encrypt_command.stdout.readline().decode("utf-8").strip() home_part_encrypt = home_part_encrypt_command.stdout.readline().decode("utf-8").strip()
## Home Encryption UUID ## Home Encryption UUID
home_uuid_encrypt_command = subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'encrypt-uuid'] + args.home, stdout=subprocess.PIPE, stderr=subprocess.PIPE) home_uuid_encrypt_command = subprocess.Popen(['/usr/lib/pika/pikainstall/partition-helper.sh', 'encrypt-uuid'] + args.root + "/home", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
home_uuid_encrypt = home_uuid_encrypt_command.stdout.readline().decode("utf-8").strip() home_uuid_encrypt = home_uuid_encrypt_command.stdout.readline().decode("utf-8").strip()
print("\nHome UUID: {}".format(home_uuid)) print("\nHome UUID: {}".format(home_uuid))
if home_part_encrypt == "luks_none": if home_part_encrypt == "luks_none":
@ -120,6 +120,9 @@ if args.home is not None:
else: else:
print("Home Encryption Partition: {}".format(home_part_encrypt)) print("Home Encryption Partition: {}".format(home_part_encrypt))
print("Home Encryption UUID: {}".format(home_uuid_encrypt)) print("Home Encryption UUID: {}".format(home_uuid_encrypt))
if args.cryptkey is not None:
home_passwd = args.cryptkey
else:
## Ask user for Home luks partition password for the key-filing process ## Ask user for Home luks partition password for the key-filing process
print("\nPlease enter the LUKS password for the device" + home_part_encrypt + " :") print("\nPlease enter the LUKS password for the device" + home_part_encrypt + " :")
home_passwd = input("Warning: Do not enter this incorrectly or late installation will fail! ") home_passwd = input("Warning: Do not enter this incorrectly or late installation will fail! ")
@ -128,50 +131,21 @@ if args.home is not None:
# Checks # Checks
# Make sure mountpoints are not /dev prefixes # Make sure mountpoints are not /dev prefixes
if args.root[0].startswith('/dev'): if args.root[0].startswith('/dev'):
print("Error: Root mount point is pointed a device, please use a mountpoint.") print("Error: mountpoint is pointed a device, please use a mountpoint.")
exit(1) exit(1)
if args.boot[0].startswith('/dev'): # Make sure to have all mounts pointing at the same partition
print("Error: Boot mount point is pointed a device, please use a mountpoint.")
exit(1)
if args.efi[0].startswith('/dev'):
print("Error: EFI mount point is pointed a device, please use a mountpoint.")
exit(1)
if args.home is not None:
if args.home[0].startswith('/dev'):
print("Error: Home mount point is pointed a device, please use a mountpoint.")
exit(1)
# Make sure All mounts are in the correct place releative to chroot
if args.boot[0] == f"{args.root[0]}/boot":
print("Boot Partition Check: OK!")
else:
print(f"Error: Boot mount point is not in a correct place relative to chroot, please mount it in {args.root[0]}/boot and supply the new mountpoint!")
exit(1)
if args.efi[0] == f"{args.root[0]}/boot/efi":
print("EFI Partition Check: OK!")
else:
print(f"Error: EFI mount point is not in a correct place relative to chroot, please mount it in {args.root[0]}/boot/efi and supply the new mountpoint!")
exit(1)
if args.home is not None:
if args.home[0] == f"{args.root[0]}/home":
print("Home Partition Check: OK!")
else:
print(f"Error: Home mount point is not in a correct place relative to chroot, please mount it in {args.root[0]}/home and supply the new mountpoint!")
exit(1)
# Make sure to avoid any mounts pointing at the same partition
if root_uuid == boot_uuid: if root_uuid == boot_uuid:
print("Error: Root and Boot are mounted on the same drive, please place boot on it's own partition.") print("Error: Boot partition not found in chroot.")
exit(1) exit(1)
elif root_uuid == efi_uuid: elif root_uuid == efi_uuid:
print("Error: Root and EFI are mounted on the same drive, please place EFI on it's own partition.") print("Error: EFI partition not found in chroot.")
exit(1) exit(1)
# Make sure to avoid any mounts pointing at the same partition
elif boot_uuid == efi_uuid: elif boot_uuid == efi_uuid:
print("Error: Boot and EFI are mounted on the same drive, please place each on it's own partition.") print("Error: Boot and EFI are mounted on the same drive, please place each on it's own partition.")
exit(1) exit(1)
elif args.home is not None: elif root_uuid != home_uuid:
if root_uuid == home_uuid: if boot_uuid == home_uuid:
print("Error: Root and Home are mounted on the same drive, consider removing the -H/--home argument.")
exit(1)
elif boot_uuid == home_uuid:
print("Error: Boot and Home are mounted on the same drive, consider removing the -H/--home argument.") print("Error: Boot and Home are mounted on the same drive, consider removing the -H/--home argument.")
exit(1) exit(1)
elif efi_uuid == home_uuid: elif efi_uuid == home_uuid:
@ -183,15 +157,15 @@ elif args.home is not None:
## extract the squashfs image to root from casper ## extract the squashfs image to root from casper
squashfs_cmd = ['unsquashfs', '-f', '-d', listToString(args.root), image] squashfs_cmd = ['unsquashfs', '-f', '-d', listToString(args.root), image]
subprocess.run(squashfs_cmd) subprocess.run(squashfs_cmd)
subprocess.run(['touch', '/tmp/pika-installer-gtk4-status-parting.txt']) subprocess.run(['touch', '/tmp/pika-installer-gtk4-status-image.txt'])
## Enable bls_boot on boot partiton ## Enable bls_boot on boot partiton
boot_flag_cmd = ['/usr/lib/pika/pikainstall/partition-helper.sh', 'flag', listToString(args.boot), 'bls_boot', 'on'] boot_flag_cmd = ['/usr/lib/pika/pikainstall/partition-helper.sh', 'flag', listToString(args.root + "/boot" ), 'bls_boot', 'on']
subprocess.run(boot_flag_cmd) subprocess.run(boot_flag_cmd)
subprocess.run(['touch', '/tmp/pika-installer-gtk4-status-flag1.txt']) subprocess.run(['touch', '/tmp/pika-installer-gtk4-status-flag1.txt'])
## Enable esp on EFI partiton ## Enable esp on EFI partiton
efi_flag_cmd = ['/usr/lib/pika/pikainstall/partition-helper.sh', 'flag', listToString(args.efi), 'esp', 'on'] efi_flag_cmd = ['/usr/lib/pika/pikainstall/partition-helper.sh', 'flag', listToString(args.root + "/boot/efi"), 'esp', 'on']
subprocess.run(efi_flag_cmd) subprocess.run(efi_flag_cmd)
subprocess.run(['touch', '/tmp/pika-installer-gtk4-status-flag2.txt']) subprocess.run(['touch', '/tmp/pika-installer-gtk4-status-flag2.txt'])
@ -211,8 +185,9 @@ if root_part_encrypt != "luks_none":
file.write(albius_crypttab_root_file) file.write(albius_crypttab_root_file)
# Write crypttab script if system has encryption # Write crypttab script if system has encryption
if args.home is not None: if args.root + "/home" is not None:
if home_part_encrypt != "luks_none": if home_part_encrypt != "luks_none":
subprocess.run(['touch', '/tmp/pika-installer-gtk4-status-crypt.txt'])
CRYPTTAB_FILE_PATH = '/var/albius-crypttab.sh' CRYPTTAB_FILE_PATH = '/var/albius-crypttab.sh'
CHROOT_CRYPTTAB_FILE_PATH = CHROOT_PATH+CRYPTTAB_FILE_PATH CHROOT_CRYPTTAB_FILE_PATH = CHROOT_PATH+CRYPTTAB_FILE_PATH
print("writing to:") print("writing to:")