-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathinstaller-design
61 lines (61 loc) · 2.55 KB
/
installer-design
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
* ister
** Goals
- Installer will run without user interaction
- Will use a template to allow customization
- Template may be a local or remote file
*** Installer template system
- Template will have the following structure (key: {} object,
[] array, ! optional, || options):
{
DestinationType : |physical, virtual|
PartitionLayout : [ { disk : 'sda', partition : 1,
size : |rest, X|M, G, T|| type : |EFI, linux, swap| }, ... ],
FilesystemTypes : [ { disk : 'sda', partition : 1,
type : |vfat, ext4, btrfs, xfs, swap, ... |
!options : |mkfs options| }, ... ],
PartitionMountPoints : [ { disk : 'sda', partition : 1,
mount : '/' }, ... ],
!Users : [ { username : 'uname', !key : URI, !uid : 1000,
!sudo : |True, False| }, ... ],
Version : version-number,
Bundles : [ 'bundle1', ... ],
!PreSetupShell : [ "shellcmd --and args", ... ],
!PostNonChroot : [ '/path/to/script', ... ],
!PostNonChrootShell : [ "shellcmd --and args", ... ],
!PostChroot : [ '/path/to/script', ... ],
!PostChrootShell : [ 'shellcmd --and args', ... ],
//Future
!RaidSupport : |md lvm btrfs|,
!RaidSetup : [ { raid : 'md-raid0', rdisk : 'md0', rpartitions :
[ sda1, sda2, ... ] }, ... ],
}
- Use json as template format
** Installer image creation
- Done via bootstrap script using ister
** Installer programs
- One program that will be started via systemd
- Can be configured to use a local or remote install template
- Installer will parse and validate template, download and validate
source file if needed, either use the template for partitioning
and filesystem creation as well as mount point locations or
identify the first non installer disk and use a default
partition scheme and create filesystems on the disk, and then
install the os with software update
- partitions will be identified by UUID and used in gummiboot and
fstab configuration files
*** Installer dependencies
- python3 (installer runtime)
- parted (partition creation)
- e2fsprogs (filesystem creation)
- gummiboot (bootloader installation)
- dosfstools (filesystem creation)
- btrfs-progs (filesystem creation)
- xfsprogs (filesystem creation)
- util-linux (UUID verification, loop device management)
- qemu efi bios (testing)
- qemu-img (image file creation)
- partprobe (detect partitions)
- systemd (setting machine-id)
- swupd (install os)
- gptfdisk (set partition attributes)
- shadow (user additions)