Fix password setting using chpasswd -R and improve screen wake lock

This commit is contained in:
2026-02-05 17:39:01 +01:00
parent ee83411333
commit 23b5f017d4
2 changed files with 23 additions and 17 deletions

View File

@@ -239,21 +239,6 @@ UUID={efi_uuid} /boot vfat defaults 0 2
# Ensure changes to /etc/passwd and /etc/shadow are flushed
run_command(["sync"])
# Set password using passwd --stdin
try:
logger.info("Setting user password...")
p = subprocess.run(
["chroot", mount_root, "passwd", "--stdin", user_info["username"]],
input=f"{user_info['password']}\n",
text=True,
check=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
except subprocess.CalledProcessError as e:
logger.error(f"Failed to set password: {e.stderr}")
raise e
# Ensure wheel group has sudo privileges
sudoers_dir = os.path.join(mount_root, "etc/sudoers.d")
os.makedirs(sudoers_dir, exist_ok=True)
@@ -261,6 +246,21 @@ UUID={efi_uuid} /boot vfat defaults 0 2
f.write("%wheel ALL=(ALL) ALL\n")
os.chmod(os.path.join(sudoers_dir, "wheel"), 0o440)
# Set user and root password using chpasswd -R (from host side)
try:
logger.info(f"Setting passwords for {user_info['username']} and root...")
# We set both to the same password for convenience in this minimal install
pass_data = f"{user_info['username']}:{user_info['password']}\nroot:{user_info['password']}\n"
subprocess.run(
["chpasswd", "-R", mount_root],
input=pass_data,
text=True,
check=True
)
except subprocess.CalledProcessError as e:
logger.error("Failed to set passwords using chpasswd -R")
raise e
# Set hostname
with open(os.path.join(mount_root, "etc/hostname"), "w") as f:
f.write(user_info["hostname"] + "\n")

View File

@@ -231,6 +231,12 @@ class InstallerWindow(Adw.ApplicationWindow):
logging.getLogger().removeHandler(self.log_handler)
self.log_handler = None
# Release wake lock if held
if hasattr(self, "inhibit_cookie") and self.inhibit_cookie:
app = self.get_application()
app.uninhibit(self.inhibit_cookie)
self.inhibit_cookie = None
finish_page = Adw.StatusPage()
finish_page.set_title(message)
@@ -465,11 +471,11 @@ class InstallerWindow(Adw.ApplicationWindow):
# Show success in UI even in mock
self.show_finish_page("Mock Installation Complete!")
else:
# Inhibit logout/suspend
# Inhibit logout/suspend/idle
app = self.get_application()
self.inhibit_cookie = app.inhibit(
self,
Gtk.ApplicationInhibitFlags.LOGOUT | Gtk.ApplicationInhibitFlags.SUSPEND,
Gtk.ApplicationInhibitFlags.LOGOUT | Gtk.ApplicationInhibitFlags.SUSPEND | Gtk.ApplicationInhibitFlags.IDLE,
"Installing Operating System"
)