Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'archinstall/scripts')
-rw-r--r--archinstall/scripts/guided.py35
-rw-r--r--archinstall/scripts/minimal.py30
-rw-r--r--archinstall/scripts/only_hd.py29
-rw-r--r--archinstall/scripts/swiss.py50
-rw-r--r--archinstall/scripts/unattended.py9
5 files changed, 55 insertions, 98 deletions
diff --git a/archinstall/scripts/guided.py b/archinstall/scripts/guided.py
index 9906e0a9..37cc1cad 100644
--- a/archinstall/scripts/guided.py
+++ b/archinstall/scripts/guided.py
@@ -1,9 +1,10 @@
-import logging
import os
from pathlib import Path
from typing import Any, TYPE_CHECKING
import archinstall
+from archinstall import info, debug
+from archinstall import SysInfo
from archinstall.lib import disk
from archinstall.lib.global_menu import GlobalMenu
from archinstall.default_profiles.applications.pipewire import PipewireProfile
@@ -13,7 +14,7 @@ from archinstall.lib.menu import Menu
from archinstall.lib.mirrors import use_mirrors
from archinstall.lib.models.bootloader import Bootloader
from archinstall.lib.models.network_configuration import NetworkConfigurationHandler
-from archinstall.lib.output import log
+from archinstall.lib.networking import check_mirror_reachable
from archinstall.lib.profile.profiles_handler import profile_handler
if TYPE_CHECKING:
@@ -24,20 +25,6 @@ if archinstall.arguments.get('help'):
print("See `man archinstall` for help.")
exit(0)
-if os.getuid() != 0:
- print(_("Archinstall requires root privileges to run. See --help for more."))
- exit(1)
-
-# Log various information about hardware before starting the installation. This might assist in troubleshooting
-archinstall.log(f"Hardware model detected: {archinstall.sys_vendor()} {archinstall.product_name()}; UEFI mode: {archinstall.has_uefi()}", level=logging.DEBUG)
-archinstall.log(f"Processor model detected: {archinstall.cpu_model()}", level=logging.DEBUG)
-archinstall.log(f"Memory statistics: {archinstall.mem_available()} available out of {archinstall.mem_total()} total installed", level=logging.DEBUG)
-archinstall.log(f"Virtualization detected: {archinstall.virtualization()}; is VM: {archinstall.is_vm()}", level=logging.DEBUG)
-archinstall.log(f"Graphics devices detected: {archinstall.graphics_devices().keys()}", level=logging.DEBUG)
-
-# For support reasons, we'll log the disk layout pre installation to match against post-installation layout
-archinstall.log(f"Disk states before installing: {disk.disk_layouts()}", level=logging.DEBUG)
-
def ask_user_questions():
"""
@@ -121,7 +108,7 @@ def perform_installation(mountpoint: Path):
Only requirement is that the block devices are
formatted and setup prior to entering this function.
"""
- log('Starting installation', level=logging.INFO)
+ info('Starting installation')
disk_config: disk.DiskLayoutConfiguration = archinstall.arguments['disk_config']
# Retrieve list of additional repositories and set boolean values appropriately
@@ -167,7 +154,7 @@ def perform_installation(mountpoint: Path):
if archinstall.arguments.get('swap'):
installation.setup_swap('zram')
- if archinstall.arguments.get("bootloader") == Bootloader.Grub and archinstall.has_uefi():
+ if archinstall.arguments.get("bootloader") == Bootloader.Grub and SysInfo.has_uefi():
installation.add_additional_packages("grub")
installation.add_bootloader(archinstall.arguments["bootloader"])
@@ -190,13 +177,13 @@ def perform_installation(mountpoint: Path):
installation.create_users(users)
if audio := archinstall.arguments.get('audio', None):
- log(f'Installing audio server: {audio}', level=logging.INFO)
+ info(f'Installing audio server: {audio}')
if audio == 'pipewire':
PipewireProfile().install(installation)
elif audio == 'pulseaudio':
installation.add_additional_packages("pulseaudio")
else:
- installation.log("No audio server will be installed.", level=logging.INFO)
+ info("No audio server will be installed")
if profile_config := archinstall.arguments.get('profile_config', None):
profile_handler.install_profile_config(installation, profile_config)
@@ -231,7 +218,7 @@ def perform_installation(mountpoint: Path):
installation.genfstab()
- installation.log("For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation", fg="yellow")
+ info("For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation")
if not archinstall.arguments.get('silent'):
prompt = str(_('Would you like to chroot into the newly created installation and perform post-installation configuration?'))
@@ -242,12 +229,12 @@ def perform_installation(mountpoint: Path):
except:
pass
- archinstall.log(f"Disk states after installing: {disk.disk_layouts()}", level=logging.DEBUG)
+ debug(f"Disk states after installing: {disk.disk_layouts()}")
-if archinstall.arguments.get('skip-mirror-check', False) is False and archinstall.check_mirror_reachable() is False:
+if archinstall.arguments.get('skip-mirror-check', False) is False and check_mirror_reachable() is False:
log_file = os.path.join(archinstall.storage.get('LOG_PATH', None), archinstall.storage.get('LOG_FILE', None))
- archinstall.log(f"Arch Linux mirrors are not reachable. Please check your internet connection and the log file '{log_file}'.", level=logging.INFO, fg="red")
+ info(f"Arch Linux mirrors are not reachable. Please check your internet connection and the log file '{log_file}'.")
exit(1)
if not archinstall.arguments.get('silent'):
diff --git a/archinstall/scripts/minimal.py b/archinstall/scripts/minimal.py
index 0cdbdcef..704759fc 100644
--- a/archinstall/scripts/minimal.py
+++ b/archinstall/scripts/minimal.py
@@ -2,23 +2,25 @@ from pathlib import Path
from typing import TYPE_CHECKING, Any, List
import archinstall
-from archinstall import ConfigurationOutput, Installer, ProfileConfiguration, profile_handler
+from archinstall import info
+from archinstall import Installer, ConfigurationOutput
from archinstall.default_profiles.minimal import MinimalProfile
-from archinstall import disk
-from archinstall import models
-from archinstall.lib.user_interaction.disk_conf import select_devices, suggest_single_disk_layout
+from archinstall.lib.interactions import suggest_single_disk_layout, select_devices
+from archinstall.lib.models import Bootloader, User
+from archinstall.lib.profile import ProfileConfiguration, profile_handler
+from archinstall.lib import disk
if TYPE_CHECKING:
_: Any
-archinstall.log("Minimal only supports:")
-archinstall.log(" * Being installed to a single disk")
+info("Minimal only supports:")
+info(" * Being installed to a single disk")
if archinstall.arguments.get('help', None):
- archinstall.log(" - Optional disk encryption via --!encryption-password=<password>")
- archinstall.log(" - Optional filesystem type via --filesystem=<fs type>")
- archinstall.log(" - Optional systemd network via --network")
+ info(" - Optional disk encryption via --!encryption-password=<password>")
+ info(" - Optional filesystem type via --filesystem=<fs type>")
+ info(" - Optional systemd network via --network")
def perform_installation(mountpoint: Path):
@@ -35,7 +37,7 @@ def perform_installation(mountpoint: Path):
# some other minor details as specified by this profile and user.
if installation.minimal_installation():
installation.set_hostname('minimal-arch')
- installation.add_bootloader(models.Bootloader.Systemd)
+ installation.add_bootloader(Bootloader.Systemd)
# Optionally enable networking:
if archinstall.arguments.get('network', None):
@@ -46,14 +48,14 @@ def perform_installation(mountpoint: Path):
profile_config = ProfileConfiguration(MinimalProfile())
profile_handler.install_profile_config(installation, profile_config)
- user = models.User('devel', 'devel', False)
+ user = User('devel', 'devel', False)
installation.create_users(user)
# Once this is done, we output some useful information to the user
# And the installation is complete.
- archinstall.log("There are two new accounts in your installation after reboot:")
- archinstall.log(" * root (password: airoot)")
- archinstall.log(" * devel (password: devel)")
+ info("There are two new accounts in your installation after reboot:")
+ info(" * root (password: airoot)")
+ info(" * devel (password: devel)")
def prompt_disk_layout():
diff --git a/archinstall/scripts/only_hd.py b/archinstall/scripts/only_hd.py
index a903c5fe..d0ee1e39 100644
--- a/archinstall/scripts/only_hd.py
+++ b/archinstall/scripts/only_hd.py
@@ -1,22 +1,18 @@
-import logging
import os
from pathlib import Path
import archinstall
-from archinstall import Installer
+from archinstall import info, debug
+from archinstall.lib.installer import Installer
from archinstall.lib.configuration import ConfigurationOutput
-from archinstall import disk
+from archinstall.lib import disk
+from archinstall.lib.networking import check_mirror_reachable
if archinstall.arguments.get('help'):
print("See `man archinstall` for help.")
exit(0)
-if os.getuid() != 0:
- print("Archinstall requires root privileges to run. See --help for more.")
- exit(1)
-
-
def ask_user_questions():
global_menu = archinstall.GlobalMenu(data_store=archinstall.arguments)
@@ -59,23 +55,12 @@ def perform_installation(mountpoint: Path):
target.parent.mkdir(parents=True)
# For support reasons, we'll log the disk layout post installation (crash or no crash)
- archinstall.log(f"Disk states after installing: {disk.disk_layouts()}", level=logging.DEBUG)
-
-
-# Log various information about hardware before starting the installation. This might assist in troubleshooting
-archinstall.log(f"Hardware model detected: {archinstall.sys_vendor()} {archinstall.product_name()}; UEFI mode: {archinstall.has_uefi()}", level=logging.DEBUG)
-archinstall.log(f"Processor model detected: {archinstall.cpu_model()}", level=logging.DEBUG)
-archinstall.log(f"Memory statistics: {archinstall.mem_available()} available out of {archinstall.mem_total()} total installed", level=logging.DEBUG)
-archinstall.log(f"Virtualization detected: {archinstall.virtualization()}; is VM: {archinstall.is_vm()}", level=logging.DEBUG)
-archinstall.log(f"Graphics devices detected: {archinstall.graphics_devices().keys()}", level=logging.DEBUG)
-
-# For support reasons, we'll log the disk layout pre installation to match against post-installation layout
-archinstall.log(f"Disk states before installing: {disk.disk_layouts()}", level=logging.DEBUG)
+ debug(f"Disk states after installing: {disk.disk_layouts()}")
-if archinstall.arguments.get('skip-mirror-check', False) is False and archinstall.check_mirror_reachable() is False:
+if archinstall.arguments.get('skip-mirror-check', False) is False and check_mirror_reachable() is False:
log_file = os.path.join(archinstall.storage.get('LOG_PATH', None), archinstall.storage.get('LOG_FILE', None))
- archinstall.log(f"Arch Linux mirrors are not reachable. Please check your internet connection and the log file '{log_file}'.", level=logging.INFO, fg="red")
+ info(f"Arch Linux mirrors are not reachable. Please check your internet connection and the log file '{log_file}'")
exit(1)
if not archinstall.arguments.get('silent'):
diff --git a/archinstall/scripts/swiss.py b/archinstall/scripts/swiss.py
index 3bf847b1..a49f568d 100644
--- a/archinstall/scripts/swiss.py
+++ b/archinstall/scripts/swiss.py
@@ -1,18 +1,18 @@
-import logging
import os
from enum import Enum
from pathlib import Path
from typing import TYPE_CHECKING, Any, Dict
import archinstall
+from archinstall import SysInfo, info, debug
from archinstall.lib.mirrors import use_mirrors
-from archinstall import models
-from archinstall import disk
+from archinstall.lib import models
+from archinstall.lib import disk
+from archinstall.lib.networking import check_mirror_reachable
from archinstall.lib.profile.profiles_handler import profile_handler
-from archinstall import menu
+from archinstall.lib import menu
from archinstall.lib.global_menu import GlobalMenu
-from archinstall.lib.output import log
-from archinstall import Installer
+from archinstall.lib.installer import Installer
from archinstall.lib.configuration import ConfigurationOutput
from archinstall.default_profiles.applications.pipewire import PipewireProfile
@@ -25,11 +25,6 @@ if archinstall.arguments.get('help'):
exit(0)
-if os.getuid() != 0:
- print("Archinstall requires root privileges to run. See --help for more.")
- exit(1)
-
-
class ExecutionMode(Enum):
Full = 'full'
Lineal = 'lineal'
@@ -76,7 +71,7 @@ class SetupMenu(GlobalMenu):
def exit_callback(self):
if self._data_store.get('mode', None):
archinstall.arguments['mode'] = self._data_store['mode']
- log(f"Archinstall will execute under {archinstall.arguments['mode']} mode")
+ info(f"Archinstall will execute under {archinstall.arguments['mode']} mode")
class SwissMainMenu(GlobalMenu):
@@ -124,7 +119,7 @@ class SwissMainMenu(GlobalMenu):
case ExecutionMode.Minimal:
pass
case _:
- archinstall.log(f' Execution mode {self._execution_mode} not supported')
+ info(f' Execution mode {self._execution_mode} not supported')
exit(1)
if self._execution_mode != ExecutionMode.Lineal:
@@ -219,7 +214,7 @@ def perform_installation(mountpoint: Path, exec_mode: ExecutionMode):
if archinstall.arguments.get('swap'):
installation.setup_swap('zram')
- if archinstall.arguments.get("bootloader") == models.Bootloader.Grub and archinstall.has_uefi():
+ if archinstall.arguments.get("bootloader") == models.Bootloader.Grub and SysInfo.has_uefi():
installation.add_additional_packages("grub")
installation.add_bootloader(archinstall.arguments["bootloader"])
@@ -242,13 +237,13 @@ def perform_installation(mountpoint: Path, exec_mode: ExecutionMode):
installation.create_users(users)
if audio := archinstall.arguments.get('audio', None):
- log(f'Installing audio server: {audio}', level=logging.INFO)
+ info(f'Installing audio server: {audio}')
if audio == 'pipewire':
PipewireProfile().install(installation)
elif audio == 'pulseaudio':
installation.add_additional_packages("pulseaudio")
else:
- installation.log("No audio server will be installed.", level=logging.INFO)
+ info("No audio server will be installed.")
if profile_config := archinstall.arguments.get('profile_config', None):
profile_handler.install_profile_config(installation, profile_config)
@@ -283,9 +278,7 @@ def perform_installation(mountpoint: Path, exec_mode: ExecutionMode):
installation.genfstab()
- installation.log(
- "For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation",
- fg="yellow")
+ info("For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation")
if not archinstall.arguments.get('silent'):
prompt = str(
@@ -297,23 +290,12 @@ def perform_installation(mountpoint: Path, exec_mode: ExecutionMode):
except:
pass
- archinstall.log(f"Disk states after installing: {disk.disk_layouts()}", level=logging.DEBUG)
-
-
-# Log various information about hardware before starting the installation. This might assist in troubleshooting
-archinstall.log(f"Hardware model detected: {archinstall.sys_vendor()} {archinstall.product_name()}; UEFI mode: {archinstall.has_uefi()}", level=logging.DEBUG)
-archinstall.log(f"Processor model detected: {archinstall.cpu_model()}", level=logging.DEBUG)
-archinstall.log(f"Memory statistics: {archinstall.mem_available()} available out of {archinstall.mem_total()} total installed", level=logging.DEBUG)
-archinstall.log(f"Virtualization detected: {archinstall.virtualization()}; is VM: {archinstall.is_vm()}", level=logging.DEBUG)
-archinstall.log(f"Graphics devices detected: {archinstall.graphics_devices().keys()}", level=logging.DEBUG)
-
-# For support reasons, we'll log the disk layout pre installation to match against post-installation layout
-archinstall.log(f"Disk states before installing: {disk.disk_layouts()}", level=logging.DEBUG)
+ debug(f"Disk states after installing: {disk.disk_layouts()}")
-if not archinstall.check_mirror_reachable():
+if not check_mirror_reachable():
log_file = os.path.join(archinstall.storage.get('LOG_PATH', None), archinstall.storage.get('LOG_FILE', None))
- archinstall.log(f"Arch Linux mirrors are not reachable. Please check your internet connection and the log file '{log_file}'.", level=logging.INFO, fg="red")
+ info(f"Arch Linux mirrors are not reachable. Please check your internet connection and the log file '{log_file}'")
exit(1)
param_mode = archinstall.arguments.get('mode', ExecutionMode.Full.value).lower()
@@ -321,7 +303,7 @@ param_mode = archinstall.arguments.get('mode', ExecutionMode.Full.value).lower()
try:
mode = ExecutionMode(param_mode)
except KeyError:
- log(f'Mode "{param_mode}" is not supported')
+ info(f'Mode "{param_mode}" is not supported')
exit(1)
if not archinstall.arguments.get('silent'):
diff --git a/archinstall/scripts/unattended.py b/archinstall/scripts/unattended.py
index 0a1c5160..5ae4ae3d 100644
--- a/archinstall/scripts/unattended.py
+++ b/archinstall/scripts/unattended.py
@@ -1,13 +1,14 @@
import time
import archinstall
-from archinstall.lib.profile.profiles_handler import profile_handler
+from archinstall import info
+from archinstall import profile
-for profile in profile_handler.get_mac_addr_profiles():
+for p in profile.profile_handler.get_mac_addr_profiles():
# Tailored means it's a match for this machine
# based on it's MAC address (or some other criteria
# that fits the requirements for this machine specifically).
- archinstall.log(f'Found a tailored profile for this machine called: "{profile.name}"')
+ info(f'Found a tailored profile for this machine called: "{p.name}"')
print('Starting install in:')
for i in range(10, 0, -1):
@@ -15,4 +16,4 @@ for profile in profile_handler.get_mac_addr_profiles():
time.sleep(1)
install_session = archinstall.storage['installation_session']
- profile.install(install_session)
+ p.install(install_session)