From 8f48e1ac697b00eff4d2d6e3cbcd7686ecc3bd3f Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Fri, 9 Apr 2021 09:55:16 -0400 Subject: Update README.md --- README.md | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 2f3881e1..8285d7e3 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,69 @@ This installer will perform the following: > **Creating your own ISO with this script on it:** Follow [ArchISO](https://wiki.archlinux.org/index.php/archiso)'s guide on how to create your own ISO or use a pre-built [guided ISO](https://hvornum.se/archiso/) to skip the python installation step, or to create auto-installing ISO templates. Further down are examples and cheat sheets on how to create different live ISO's. +## Unattended installation based on MAC address + +It is possible to add a file in the profiles directory that will automatically run when launching archinstall using the unattended mode if the MAC address of the system matches the profile name. In the following example, this profile would go into a file called `profiles/52-54-00-12-34-56.py`: + +``` +import archinstall +import json +import urllib.request +import git + +# Unmount and close previous runs (Mainly only used for re-runs, but won't hurt.) +archinstall.sys_command(f'umount -R /mnt', suppress_errors=True) +archinstall.sys_command(f'cryptsetup close /dev/mapper/luksloop', suppress_errors=True) + +# Select a harddrive and a disk password +harddrive = archinstall.all_disks()['/dev/sda'] +disk_password = '1234' + +with archinstall.Filesystem(harddrive, archinstall.GPT) as fs: + # Use the entire disk instead of setting up partitions on your own + fs.use_entire_disk('luks2') + + if harddrive.partition[1].size == '512M': + raise OSError('Trying to encrypt the boot partition for petes sake..') + harddrive.partition[0].format('fat32') + + with archinstall.luks2(harddrive.partition[1], 'luksloop', disk_password) as unlocked_device: + unlocked_device.format('btrfs') + + with archinstall.Installer( + unlocked_device, + boot_partition=harddrive.partition[0], + hostname="testmachine" + ) as installation: + if installation.minimal_installation(): + installation.add_bootloader() + + installation.add_additional_packages(['nano', 'wget', 'git']) + installation.install_profile('minimum') + + installation.user_create('devel', 'devel') + installation.user_set_pw('root', 'toor') + + repo = git.Repo('./') + commit = repo.head.commit.hexsha[:7] + + print(f'Submitting {commit}: success') + + conditions = { + "project": "archinstall", + "profile": "52-54-00-12-34-56", + "status": "success", + "commit": commit + } + req = urllib.request.Request("https://api.archlinux.life/build/success", + data=json.dumps(conditions).encode('utf8'), + headers={'content-type': 'application/json'}) + try: + urllib.request.urlopen(req, timeout=5) + except: + pass +``` + # Help Submit an issue on Github, or submit a post in the discord help channel.
-- cgit v1.2.3-54-g00ecf From 4904b70db69f3c4f155524e7ad1c95a15337ddca Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Fri, 9 Apr 2021 10:18:34 -0400 Subject: Update README.md --- README.md | 61 +------------------------------------------------------------ 1 file changed, 1 insertion(+), 60 deletions(-) (limited to 'README.md') diff --git a/README.md b/README.md index 8285d7e3..b569b8eb 100644 --- a/README.md +++ b/README.md @@ -68,66 +68,7 @@ This installer will perform the following: ## Unattended installation based on MAC address -It is possible to add a file in the profiles directory that will automatically run when launching archinstall using the unattended mode if the MAC address of the system matches the profile name. In the following example, this profile would go into a file called `profiles/52-54-00-12-34-56.py`: - -``` -import archinstall -import json -import urllib.request -import git - -# Unmount and close previous runs (Mainly only used for re-runs, but won't hurt.) -archinstall.sys_command(f'umount -R /mnt', suppress_errors=True) -archinstall.sys_command(f'cryptsetup close /dev/mapper/luksloop', suppress_errors=True) - -# Select a harddrive and a disk password -harddrive = archinstall.all_disks()['/dev/sda'] -disk_password = '1234' - -with archinstall.Filesystem(harddrive, archinstall.GPT) as fs: - # Use the entire disk instead of setting up partitions on your own - fs.use_entire_disk('luks2') - - if harddrive.partition[1].size == '512M': - raise OSError('Trying to encrypt the boot partition for petes sake..') - harddrive.partition[0].format('fat32') - - with archinstall.luks2(harddrive.partition[1], 'luksloop', disk_password) as unlocked_device: - unlocked_device.format('btrfs') - - with archinstall.Installer( - unlocked_device, - boot_partition=harddrive.partition[0], - hostname="testmachine" - ) as installation: - if installation.minimal_installation(): - installation.add_bootloader() - - installation.add_additional_packages(['nano', 'wget', 'git']) - installation.install_profile('minimum') - - installation.user_create('devel', 'devel') - installation.user_set_pw('root', 'toor') - - repo = git.Repo('./') - commit = repo.head.commit.hexsha[:7] - - print(f'Submitting {commit}: success') - - conditions = { - "project": "archinstall", - "profile": "52-54-00-12-34-56", - "status": "success", - "commit": commit - } - req = urllib.request.Request("https://api.archlinux.life/build/success", - data=json.dumps(conditions).encode('utf8'), - headers={'content-type': 'application/json'}) - try: - urllib.request.urlopen(req, timeout=5) - except: - pass -``` +It is possible to automatically run a custom profile when launching archinstall in unattended mode based on the MAC address of the system. There is an example in the docs which would go into a file called `profiles/52-54-00-12-34-56.py`, and would be run on a sytem where the MAC address matched this profile name. # Help -- cgit v1.2.3-54-g00ecf From 1f1f269e933628233c1b25787ae449c51b7d66bd Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Fri, 9 Apr 2021 16:23:06 +0200 Subject: Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index b569b8eb..1d96886f 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ This installer will perform the following: ## Unattended installation based on MAC address -It is possible to automatically run a custom profile when launching archinstall in unattended mode based on the MAC address of the system. There is an example in the docs which would go into a file called `profiles/52-54-00-12-34-56.py`, and would be run on a sytem where the MAC address matched this profile name. +Archinstall comes with a [unattended](examples/unattended.py) example which will look for a matching profile for the machine it is being run on, based on any local MAC address. For instance, if the machine that [unattended](examples/unattended.py) is run on has the MAC address `52:54:00:12:34:56` it will look for a profile called [profiles/52-54-00-12-34-56.py](profiles/52-54-00-12-34-56.py). If it's found, the unattended installation will commence and source that profile as it's installation proceedure. # Help -- cgit v1.2.3-54-g00ecf