Merge branch 'master' into post-installation-scripts
This commit is contained in:
commit
9c8d55dd76
|
|
@ -1,9 +1,10 @@
|
||||||
<!-- <div align="center"> -->
|
<!-- <div align="center"> -->
|
||||||
<img src="https://github.com/archlinux/archinstall/raw/master/docs/logo.png" alt="drawing" width="200"/>
|
<img src="https://github.com/archlinux/archinstall/raw/master/docs/logo.png" alt="drawing" width="200"/>
|
||||||
|
|
||||||
# Arch Installer
|
[](https://github.com/archlinux/archinstall/actions/workflows/lint-python.yaml)
|
||||||
|
|
||||||
<!-- </div> -->
|
<!-- </div> -->
|
||||||
|
# Arch Installer
|
||||||
|
|
||||||
Just another guided/automated [Arch Linux](https://wiki.archlinux.org/index.php/Arch_Linux) installer with a twist.
|
Just another guided/automated [Arch Linux](https://wiki.archlinux.org/index.php/Arch_Linux) installer with a twist.
|
||||||
The installer also doubles as a python library to install Arch Linux and manage services, packages and other things inside the installed system *(Usually from a live medium)*.
|
The installer also doubles as a python library to install Arch Linux and manage services, packages and other things inside the installed system *(Usually from a live medium)*.
|
||||||
|
|
@ -27,14 +28,14 @@ Assuming you are on an Arch Linux live-ISO and booted into EFI mode.
|
||||||
# python -m archinstall --script guided
|
# python -m archinstall --script guided
|
||||||
|
|
||||||
|
|
||||||
## Running from a declarative [config](examples/base-config.json)
|
## Running from a declarative configuration file or URL
|
||||||
|
|
||||||
Prequisites:
|
Prequisites:
|
||||||
1. Edit the [config](examples/base-config.json) according to your requirements.
|
1. Edit the [configuration file](examples/config-sample.json) according to your requirements.
|
||||||
|
|
||||||
Assuming you are on a Arch Linux live-ISO and booted into EFI mode.
|
Assuming you are on a Arch Linux live-ISO and booted into EFI mode.
|
||||||
|
|
||||||
# python -m archinstall --config <path to config file> --vars '<space_seperated KEY=VALUE pairs>'
|
# python -m archinstall --config <path to config file or URL> --vars '<space_seperated KEY=VALUE pairs>'
|
||||||
|
|
||||||
# Help?
|
# Help?
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ def initialize_arguments():
|
||||||
with open(args.config) as file:
|
with open(args.config) as file:
|
||||||
config = json.load(file)
|
config = json.load(file)
|
||||||
else: # Attempt to load the configuration from the URL.
|
else: # Attempt to load the configuration from the URL.
|
||||||
with urllib.request.urlopen(args.config) as response:
|
with urllib.request.urlopen(urllib.request.Request(args.config, headers={'User-Agent': 'ArchInstall'})) as response:
|
||||||
config = json.loads(response.read())
|
config = json.loads(response.read())
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
|
|
|
||||||
|
|
@ -365,4 +365,4 @@ def pid_exists(pid: int):
|
||||||
try:
|
try:
|
||||||
return any(subprocess.check_output(['/usr/bin/ps', '--no-headers', '-o', 'pid', '-p', str(pid)]).strip())
|
return any(subprocess.check_output(['/usr/bin/ps', '--no-headers', '-o', 'pid', '-p', str(pid)]).strip())
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ from .general import SysCommand
|
||||||
from .output import log
|
from .output import log
|
||||||
from .storage import storage
|
from .storage import storage
|
||||||
|
|
||||||
|
|
||||||
def get_hw_addr(ifname):
|
def get_hw_addr(ifname):
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||||||
info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', bytes(ifname, 'utf-8')[:15]))
|
info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', bytes(ifname, 'utf-8')[:15]))
|
||||||
|
|
@ -35,6 +36,7 @@ def check_mirror_reachable():
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
def enrich_iface_types(interfaces: dict):
|
def enrich_iface_types(interfaces: dict):
|
||||||
result = {}
|
result = {}
|
||||||
for iface in interfaces:
|
for iface in interfaces:
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ storage = {
|
||||||
'PROFILE_PATH': [
|
'PROFILE_PATH': [
|
||||||
'./profiles',
|
'./profiles',
|
||||||
'~/.config/archinstall/profiles',
|
'~/.config/archinstall/profiles',
|
||||||
os.path.join(os.path.dirname(os.path.abspath(__file__)), 'profiles'),
|
os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'profiles'),
|
||||||
# os.path.abspath(f'{os.path.dirname(__file__)}/../examples')
|
# os.path.abspath(f'{os.path.dirname(__file__)}/../examples')
|
||||||
],
|
],
|
||||||
'UPSTREAM_URL': 'https://raw.githubusercontent.com/archlinux/archinstall/master/profiles',
|
'UPSTREAM_URL': 'https://raw.githubusercontent.com/archlinux/archinstall/master/profiles',
|
||||||
|
|
|
||||||
|
|
@ -180,8 +180,6 @@ def ask_user_questions():
|
||||||
# Ask for archinstall-specific profiles (such as desktop environments etc)
|
# Ask for archinstall-specific profiles (such as desktop environments etc)
|
||||||
if not archinstall.arguments.get('profile', None):
|
if not archinstall.arguments.get('profile', None):
|
||||||
archinstall.arguments['profile'] = archinstall.select_profile(archinstall.list_profiles(filter_top_level_profiles=True))
|
archinstall.arguments['profile'] = archinstall.select_profile(archinstall.list_profiles(filter_top_level_profiles=True))
|
||||||
else:
|
|
||||||
archinstall.arguments['profile'] = archinstall.list_profiles()[archinstall.arguments['profile']]
|
|
||||||
|
|
||||||
# Check the potentially selected profiles preparations to get early checks if some additional questions are needed.
|
# Check the potentially selected profiles preparations to get early checks if some additional questions are needed.
|
||||||
if archinstall.arguments['profile'] and archinstall.arguments['profile'].has_prep_function():
|
if archinstall.arguments['profile'] and archinstall.arguments['profile'].has_prep_function():
|
||||||
|
|
@ -415,8 +413,6 @@ else:
|
||||||
# Temporarily disabling keep_partitions if config file is loaded
|
# Temporarily disabling keep_partitions if config file is loaded
|
||||||
archinstall.arguments['harddrive'].keep_partitions = False
|
archinstall.arguments['harddrive'].keep_partitions = False
|
||||||
# Temporary workaround to make Desktop Environments work
|
# Temporary workaround to make Desktop Environments work
|
||||||
archinstall.storage['_desktop_profile'] = archinstall.arguments.get('desktop', None)
|
archinstall.arguments['profile'] = archinstall.Profile(None, archinstall.arguments.get('desktop', None))
|
||||||
if archinstall.arguments.get('profile', None):
|
|
||||||
archinstall.arguments['profile'] = archinstall.list_profiles()[archinstall.arguments['profile']]
|
|
||||||
|
|
||||||
perform_installation_steps()
|
perform_installation_steps()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue