5e09791e75d4c320ecb0a752f7090c9fa8e6a475
[automated-distro-installer] / README
1 Multi-boot/distro btrfs provisioning
2
3 Some things are specific to my home network, and uses files with secrets
4 that are not in this repo. Uses pxe or pxe-kexec (on libreboot, I have
5 not added a pxe rom, I use a minimal debian stable subvolume which acts
6 like a pxe rom). I use this for bare metal and vms, and two scripts
7 which can run post boot so I use them on vps distributed image as well.
8
9 Features people may find useful: installs encrypted trisquel belanos, ,
10 debian jessie, debian stretch, ubuntu 16.04, and arch (havne't done
11 recently, probably a bit broken), in a multi-boot setup using multiple
12 subvolumes of a single btrfs filesystem. Utilizes multiple disks, with
13 scripts to automatically decrypt on intentional reboots, but not after
14 shutdown or power loss.
15
16 The partititioning and filesystem script is at
17 fai/config/hooks/partition.DEFAULT. Other debian based distros at least
18 as new as ubuntu 14.04 should work fine, and I'm planning to add Fedora
19 support. Disks are grouped as ssd or hdd and raided in raid 1 or raid 0
20 per configuration. The base partitions are divided into boot, swap, and
21 root, (only boot is unencrypted). There are scripts to resize those
22 partitions post-provision and while the system is running.
23
24 People who use fai may find these things as useful examples: it uses
25 dnsmasq (on a openwrt machine) for dhcp instead of the isc
26 dhcp. fai-wrapper is a small script to use basic fai classes outside of
27 fai. It does not use the fai partitioning tool, but the script is
28 inspired from it and works outside of fai.
29
30 It also automates configuration of an openwrt router after manual
31 initial installation.
32
33 After provisionining is done, I sync files using btrfs, or unison for
34 vps, then automate further setup using a different set of scripts,
35 https://iankelling.org/git/?p=distro-setup;a=tree.
36
37 My network is a wndr3700v2 router with openwrt on it and a few pcs/laptops.
38
39 Since fai requires a debian server as the fai server, there are also
40 scripts to automate a debian install using pxe and preseeding, which can
41 be done from any distro.
42
43 Some of the scripts have dependencies for some simple obvious utility
44 scripts from https://iankelling.org/git, and of course there are some
45 hostnames that are specific to my network.
46
47 Main scripts meant to be called interactively:
48
49 arch-init-remote # install arch (after it's been booted into it's setup env)
50 chboot # Set grub to boot into a different distro (installed earlier)
51 install-chboot # reinstall chboot to /boot subvols, for when it changes
52 dsfull # install & setup a new fai distro (if data partition already synced)
53 eboot # reboot without automatic disk decryption
54 fai-kexec # kexec to fai tftp server that pxe would normally point to
55 fai-redep # Deploy fai configuration to host "faiserver"
56 fai-revm # test fai on a fresh vm
57 fai-wrapper # Evaluate and use fai classes outside of fai.
58 faiserver-revm # create a vm which is a fai server using pxe & preseed file
59 faiserver-uninstall # uninstall fai-server
60 faiserver-setup # install fai-server on the current machine
61 fresize # resize swap or boot partitions in a host
62 myfai-chboot # Sets up tftp pxe config on fai server
63 pxe-server # temporarily enable (usually) fai or arch boot server
64 wrt-setup-remote # setup my router
65 ubuntu-xenial-live-fai-kexec # do fai install from xenial live cd using kexec
66 myfai-chboot # use instead of pxe-server for fai kexec based install
67
68 License stuff:
69 The license for the project is GPLv2 or later, mostly because fai is
70 and I periodically rebase off their example setup for debian. Also,
71 there is a modified encrypt.upstream, which is from the cryptsetup
72 package in arch, which is under the same license.