getch 0.1.9 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +35 -29
- data/bin/getch +8 -6
- data/lib/clean.rb +149 -0
- data/lib/cryptsetup.rb +132 -0
- data/lib/devs.rb +199 -0
- data/lib/dracut/encrypt.rb +36 -0
- data/lib/dracut/hybrid.rb +15 -0
- data/lib/dracut/lvm.rb +14 -0
- data/lib/dracut/minimal.rb +11 -0
- data/lib/dracut/root.rb +45 -0
- data/lib/dracut/zfs.rb +35 -0
- data/lib/dracut.rb +11 -0
- data/lib/fstab/encrypt.rb +44 -0
- data/lib/fstab/hybrid.rb +34 -0
- data/lib/fstab/lvm.rb +25 -0
- data/lib/fstab/minimal.rb +6 -0
- data/lib/fstab/root.rb +93 -0
- data/lib/fstab/zfs.rb +23 -0
- data/lib/fstab.rb +11 -0
- data/lib/getch/assembly.rb +150 -0
- data/lib/getch/command.rb +88 -128
- data/lib/getch/config/account.rb +39 -0
- data/lib/getch/config/dhcp.rb +104 -0
- data/lib/getch/config/grub.rb +42 -0
- data/lib/getch/config/iwd.rb +60 -0
- data/lib/getch/config/keymap.rb +78 -0
- data/lib/getch/config/locale.rb +96 -0
- data/lib/getch/config/portage.rb +90 -0
- data/lib/getch/config/pre_network.rb +37 -0
- data/lib/getch/config/timezone.rb +52 -0
- data/lib/getch/config/void.rb +0 -36
- data/lib/getch/config.rb +16 -37
- data/lib/getch/device.rb +67 -0
- data/lib/getch/filesystem/ext4/encrypt/config.rb +9 -71
- data/lib/getch/filesystem/ext4/encrypt/deps.rb +15 -25
- data/lib/getch/filesystem/ext4/encrypt/device.rb +11 -5
- data/lib/getch/filesystem/ext4/encrypt/format.rb +6 -15
- data/lib/getch/filesystem/ext4/encrypt/mount.rb +7 -11
- data/lib/getch/filesystem/ext4/encrypt/partition.rb +10 -76
- data/lib/getch/filesystem/ext4/encrypt/void.rb +0 -38
- data/lib/getch/filesystem/ext4/encrypt.rb +2 -1
- data/lib/getch/filesystem/ext4/hybrid/config.rb +27 -0
- data/lib/getch/filesystem/ext4/hybrid/deps.rb +55 -0
- data/lib/getch/filesystem/ext4/hybrid/device.rb +24 -0
- data/lib/getch/filesystem/ext4/hybrid/format.rb +23 -0
- data/lib/getch/filesystem/ext4/hybrid/mount.rb +21 -0
- data/lib/getch/filesystem/ext4/hybrid/partition.rb +27 -0
- data/lib/getch/filesystem/{lvm/encrypt → ext4/hybrid}/void.rb +0 -39
- data/lib/getch/filesystem/ext4/hybrid.rb +19 -0
- data/lib/getch/filesystem/ext4/lvm/config.rb +25 -0
- data/lib/getch/filesystem/ext4/lvm/deps.rb +56 -0
- data/lib/getch/filesystem/ext4/lvm/device.rb +28 -0
- data/lib/getch/filesystem/ext4/lvm/format.rb +21 -0
- data/lib/getch/filesystem/ext4/lvm/mount.rb +21 -0
- data/lib/getch/filesystem/ext4/lvm/partition.rb +28 -0
- data/lib/getch/filesystem/{lvm.rb → ext4/lvm.rb} +6 -4
- data/lib/getch/filesystem/ext4/minimal/config.rb +25 -0
- data/lib/getch/filesystem/ext4/{device.rb → minimal/deps.rb} +3 -1
- data/lib/getch/filesystem/ext4/minimal/device.rb +22 -0
- data/lib/getch/filesystem/ext4/minimal/format.rb +23 -0
- data/lib/getch/filesystem/ext4/minimal/mount.rb +21 -0
- data/lib/getch/filesystem/ext4/minimal/partition.rb +28 -0
- data/lib/getch/filesystem/ext4/minimal.rb +19 -0
- data/lib/getch/filesystem/ext4.rb +7 -7
- data/lib/getch/filesystem/zfs/encrypt/config.rb +10 -39
- data/lib/getch/filesystem/zfs/encrypt/deps.rb +4 -55
- data/lib/getch/filesystem/zfs/encrypt/device.rb +7 -51
- data/lib/getch/filesystem/zfs/encrypt/format.rb +6 -90
- data/lib/getch/filesystem/zfs/encrypt/mount.rb +16 -35
- data/lib/getch/filesystem/zfs/encrypt/partition.rb +6 -54
- data/lib/getch/filesystem/zfs/encrypt.rb +2 -1
- data/lib/getch/filesystem/zfs/minimal/config.rb +37 -0
- data/lib/getch/filesystem/zfs/minimal/deps.rb +126 -0
- data/lib/getch/filesystem/zfs/minimal/device.rb +24 -0
- data/lib/getch/filesystem/zfs/minimal/format.rb +23 -0
- data/lib/getch/filesystem/zfs/minimal/mount.rb +23 -0
- data/lib/getch/filesystem/zfs/minimal/partition.rb +23 -0
- data/lib/getch/filesystem/zfs/minimal.rb +19 -0
- data/lib/getch/filesystem/zfs.rb +1 -7
- data/lib/getch/filesystem.rb +0 -6
- data/lib/getch/gentoo/bootloader.rb +23 -44
- data/lib/getch/gentoo/finalize.rb +25 -0
- data/lib/getch/gentoo/post_config.rb +75 -0
- data/lib/getch/gentoo/pre_config.rb +37 -0
- data/lib/getch/gentoo/services.rb +18 -0
- data/lib/getch/gentoo/sources.rb +39 -33
- data/lib/getch/gentoo/tarball.rb +91 -0
- data/lib/getch/gentoo/terraform.rb +34 -0
- data/lib/getch/gentoo/update.rb +54 -0
- data/lib/getch/gentoo/use.rb +9 -6
- data/lib/getch/gentoo/use_flag.rb +17 -20
- data/lib/getch/gentoo.rb +9 -75
- data/lib/getch/guard.rb +2 -2
- data/lib/getch/helpers.rb +63 -115
- data/lib/getch/log.rb +87 -25
- data/lib/getch/options.rb +41 -11
- data/lib/getch/states.rb +28 -8
- data/lib/getch/tree.rb +56 -0
- data/lib/getch/version.rb +1 -1
- data/lib/getch/void/bootloader.rb +18 -0
- data/lib/getch/void/finalize.rb +31 -0
- data/lib/getch/void/post_config.rb +19 -0
- data/lib/getch/void/pre_config.rb +18 -0
- data/lib/getch/void/services.rb +18 -0
- data/lib/getch/void/{stage.rb → tarball.rb} +34 -14
- data/lib/getch/void/terraform.rb +28 -0
- data/lib/getch/void/update.rb +33 -0
- data/lib/getch/void.rb +9 -59
- data/lib/getch.rb +58 -90
- data/lib/luks.rb +239 -0
- data/lib/lvm2.rb +112 -0
- data/lib/mkfs/zfs.rb +167 -0
- data/lib/mkfs.rb +140 -0
- data/lib/mountfs.rb +154 -0
- data/lib/nito.rb +131 -0
- data/lib/sgdisk.rb +160 -0
- data.tar.gz.sig +0 -0
- metadata +83 -47
- metadata.gz.sig +0 -0
- data/lib/getch/config/gentoo.rb +0 -58
- data/lib/getch/filesystem/clean.rb +0 -58
- data/lib/getch/filesystem/device.rb +0 -63
- data/lib/getch/filesystem/ext4/config.rb +0 -62
- data/lib/getch/filesystem/ext4/deps.rb +0 -24
- data/lib/getch/filesystem/ext4/format.rb +0 -31
- data/lib/getch/filesystem/ext4/mount.rb +0 -26
- data/lib/getch/filesystem/ext4/partition.rb +0 -55
- data/lib/getch/filesystem/ext4/void.rb +0 -44
- data/lib/getch/filesystem/lvm/config.rb +0 -44
- data/lib/getch/filesystem/lvm/deps.rb +0 -44
- data/lib/getch/filesystem/lvm/device.rb +0 -45
- data/lib/getch/filesystem/lvm/encrypt/config.rb +0 -74
- data/lib/getch/filesystem/lvm/encrypt/deps.rb +0 -49
- data/lib/getch/filesystem/lvm/encrypt/device.rb +0 -48
- data/lib/getch/filesystem/lvm/encrypt/format.rb +0 -35
- data/lib/getch/filesystem/lvm/encrypt/mount.rb +0 -27
- data/lib/getch/filesystem/lvm/encrypt/partition.rb +0 -84
- data/lib/getch/filesystem/lvm/encrypt.rb +0 -18
- data/lib/getch/filesystem/lvm/format.rb +0 -32
- data/lib/getch/filesystem/lvm/mount.rb +0 -26
- data/lib/getch/filesystem/lvm/partition.rb +0 -72
- data/lib/getch/filesystem/lvm/void.rb +0 -46
- data/lib/getch/filesystem/mount.rb +0 -63
- data/lib/getch/filesystem/partition.rb +0 -85
- data/lib/getch/filesystem/zfs/config.rb +0 -43
- data/lib/getch/filesystem/zfs/deps.rb +0 -67
- data/lib/getch/filesystem/zfs/device.rb +0 -66
- data/lib/getch/filesystem/zfs/encrypt/void.rb +0 -97
- data/lib/getch/filesystem/zfs/format.rb +0 -117
- data/lib/getch/filesystem/zfs/mount.rb +0 -47
- data/lib/getch/filesystem/zfs/partition.rb +0 -69
- data/lib/getch/filesystem/zfs/void.rb +0 -81
- data/lib/getch/gentoo/boot.rb +0 -64
- data/lib/getch/gentoo/chroot.rb +0 -75
- data/lib/getch/gentoo/config.rb +0 -167
- data/lib/getch/gentoo/stage.rb +0 -73
- data/lib/getch/void/boot.rb +0 -84
- data/lib/getch/void/chroot.rb +0 -56
- data/lib/getch/void/config.rb +0 -90
|
@@ -1,88 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'sgdisk'
|
|
4
|
+
require 'cryptsetup'
|
|
5
|
+
|
|
1
6
|
module Getch
|
|
2
7
|
module FileSystem
|
|
3
8
|
module Ext4
|
|
4
9
|
module Encrypt
|
|
5
|
-
class Partition
|
|
6
|
-
include Helpers::Cryptsetup
|
|
7
|
-
|
|
10
|
+
class Partition
|
|
8
11
|
def initialize
|
|
9
|
-
|
|
10
|
-
@state = Getch::States.new
|
|
11
|
-
@partition = Getch::FileSystem::Partition.new
|
|
12
|
-
@clean = Getch::FileSystem::Clean
|
|
13
|
-
@log = Log.new
|
|
14
|
-
run_partition
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def run_partition
|
|
18
|
-
return if STATES[:partition ]
|
|
19
|
-
|
|
20
|
-
@clean.hdd(@disk)
|
|
21
|
-
@clean.external_disk(@disk, @boot_disk, @cache_disk, @home_disk)
|
|
22
|
-
if Helpers.efi?
|
|
23
|
-
partition_efi
|
|
24
|
-
else
|
|
25
|
-
partition_bios
|
|
26
|
-
end
|
|
27
|
-
encrypting
|
|
28
|
-
@state.partition
|
|
12
|
+
x
|
|
29
13
|
end
|
|
30
14
|
|
|
31
15
|
private
|
|
32
16
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
# swap - Linux Swap - size of the ram
|
|
37
|
-
# / - Root
|
|
38
|
-
# /home - Home
|
|
39
|
-
@partition.efi(@dev_esp)
|
|
40
|
-
@partition.swap(@dev_swap)
|
|
41
|
-
@partition.root(@dev_root, '8309')
|
|
42
|
-
@partition.home(@dev_home, '8309') if @dev_home
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def encrypting
|
|
46
|
-
@log.info('Cryptsetup')
|
|
47
|
-
encrypt(@dev_root)
|
|
48
|
-
open_crypt(@dev_root, 'cryptroot')
|
|
49
|
-
encrypt_home
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def encrypt_home
|
|
53
|
-
return unless @dev_home
|
|
54
|
-
|
|
55
|
-
create_secret_keys
|
|
56
|
-
@log.info("Format home with #{@key_path}")
|
|
57
|
-
Helpers.sys("cryptsetup luksFormat #{@dev_home} #{@key_path}")
|
|
58
|
-
@log.debug("Open home with key #{@key_path}")
|
|
59
|
-
exec("cryptsetup open --type luks -d #{@key_path} #{@dev_home} crypthome")
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def create_secret_keys
|
|
63
|
-
return unless @dev_home
|
|
64
|
-
|
|
65
|
-
@log.info('Creating secret keys')
|
|
66
|
-
keys_dir = '/root/secretkeys'
|
|
67
|
-
key_name = 'crypto_keyfile.bin'
|
|
68
|
-
@key_path = "#{keys_dir}/#{key_name}"
|
|
69
|
-
FileUtils.mkdir keys_dir, mode: 0700 unless Dir.exist? keys_dir
|
|
70
|
-
exec("dd bs=512 count=4 if=/dev/urandom of=#{@key_path}")
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def partition_bios
|
|
74
|
-
# None - Bios Boot Partition - 1MiB
|
|
75
|
-
# swap - Linux Swap - size of the ram
|
|
76
|
-
# / - Root
|
|
77
|
-
# /home - Home
|
|
78
|
-
@partition.gpt(@dev_gpt)
|
|
79
|
-
@partition.swap(@dev_swap)
|
|
80
|
-
@partition.root(@dev_root, '8309')
|
|
81
|
-
@partition.home(@dev_home, '8309') if @dev_home
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def exec(cmd)
|
|
85
|
-
Getch::Command.new(cmd).run!
|
|
17
|
+
def x
|
|
18
|
+
Sgdisk::Encrypt.new(DEVS)
|
|
19
|
+
CryptSetup.new(DEVS, OPTIONS).format
|
|
86
20
|
end
|
|
87
21
|
end
|
|
88
22
|
end
|
|
@@ -24,17 +24,6 @@ module Getch
|
|
|
24
24
|
#command "chmod -R g-rwx,o-rwx /boot"
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def fstab
|
|
28
|
-
conf = "#{MOUNTPOINT}/etc/fstab"
|
|
29
|
-
File.write(conf, "\n", mode: 'w', chmod: 0644)
|
|
30
|
-
line_fstab(@dev_esp, '/efi vfat noauto,rw,relatime 0 0') if @dev_esp
|
|
31
|
-
line_fstab(@dev_boot, '/boot ext4 noauto,rw,relatime 0 0') if @dev_boot
|
|
32
|
-
add_line(conf, "#{@luks_swap} none swap sw 0 0") if @dev_swap
|
|
33
|
-
add_line(conf, "#{@luks_home} /home ext4 rw,discard 0 0") if @home_disk
|
|
34
|
-
add_line(conf, "#{@luks_root} / ext4 rw,relatime 0 1")
|
|
35
|
-
add_line(conf, 'tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0')
|
|
36
|
-
end
|
|
37
|
-
|
|
38
27
|
def crypttab
|
|
39
28
|
conf = "#{MOUNTPOINT}/etc/crypttab"
|
|
40
29
|
File.write(conf, "\n", mode: 'w', chmod: 0644)
|
|
@@ -43,33 +32,6 @@ module Getch
|
|
|
43
32
|
line_crypttab('crypthome', @dev_home, '/boot/home.key', 'luks') if @home_disk
|
|
44
33
|
end
|
|
45
34
|
|
|
46
|
-
def config_grub
|
|
47
|
-
conf = "#{MOUNTPOINT}/etc/default/grub"
|
|
48
|
-
content = 'GRUB_ENABLE_CRYPTODISK=y'
|
|
49
|
-
unless search(conf, content)
|
|
50
|
-
File.write(conf, "#{content}\n", mode: 'a')
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def config_dracut
|
|
55
|
-
conf = "#{MOUNTPOINT}/etc/dracut.conf.d/ext4.conf"
|
|
56
|
-
content = [
|
|
57
|
-
'hostonly="yes"',
|
|
58
|
-
'omit_dracutmodules+=" btrfs lvm "',
|
|
59
|
-
'install_items+=" /boot/volume.key /etc/crypttab "',
|
|
60
|
-
]
|
|
61
|
-
File.write(conf, content.join("\n"), mode: 'w', chmod: 0644)
|
|
62
|
-
#add_line(conf, "install_items+=\" /boot/home.key \"") if @home_disk
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def kernel_cmdline_dracut
|
|
66
|
-
conf = "#{MOUNTPOINT}/etc/dracut.conf.d/cmdline.conf"
|
|
67
|
-
root_uuid = b_uuid(@dev_root)
|
|
68
|
-
args = "rd.luks.uuid=#{root_uuid} rootfstype=ext4 rootflags=rw,relatime"
|
|
69
|
-
line = "kernel_cmdline=\"#{args}\""
|
|
70
|
-
File.write(conf, "#{line}\n", mode: 'w', chmod: 0644)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
35
|
def finish
|
|
74
36
|
puts '+ Enter in your system: chroot /mnt /bin/bash'
|
|
75
37
|
puts '+ Reboot with: shutdown -r now'
|
|
@@ -4,6 +4,8 @@ module Getch
|
|
|
4
4
|
module FileSystem
|
|
5
5
|
module Ext4
|
|
6
6
|
module Encrypt
|
|
7
|
+
def self.end
|
|
8
|
+
end
|
|
7
9
|
end
|
|
8
10
|
end
|
|
9
11
|
end
|
|
@@ -15,4 +17,3 @@ require_relative 'encrypt/format'
|
|
|
15
17
|
require_relative 'encrypt/mount'
|
|
16
18
|
require_relative 'encrypt/config'
|
|
17
19
|
require_relative 'encrypt/deps'
|
|
18
|
-
require_relative 'encrypt/void'
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'fstab'
|
|
4
|
+
require 'dracut'
|
|
5
|
+
require 'cryptsetup'
|
|
6
|
+
|
|
7
|
+
module Getch
|
|
8
|
+
module FileSystem
|
|
9
|
+
module Ext4
|
|
10
|
+
module Hybrid
|
|
11
|
+
class Config
|
|
12
|
+
def initialize
|
|
13
|
+
x
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def x
|
|
19
|
+
Fstab::Hybrid.new(DEVS, OPTIONS).generate
|
|
20
|
+
Dracut::Hybrid.new(DEVS, OPTIONS).generate
|
|
21
|
+
CryptSetup.new(DEVS, OPTIONS).configs
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Getch
|
|
4
|
+
module FileSystem
|
|
5
|
+
module Ext4
|
|
6
|
+
module Hybrid
|
|
7
|
+
class Deps
|
|
8
|
+
def initialize
|
|
9
|
+
x
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
protected
|
|
13
|
+
|
|
14
|
+
def x
|
|
15
|
+
install
|
|
16
|
+
service
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def install
|
|
20
|
+
case OPTIONS[:os]
|
|
21
|
+
when 'gentoo' then Install.new('sys-fs/cryptsetup sys-fs/lvm2')
|
|
22
|
+
when 'void' then Install.new('cryptsetup lvm2')
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def service
|
|
27
|
+
systemd
|
|
28
|
+
openrc
|
|
29
|
+
runit
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def systemd
|
|
33
|
+
Helpers.systemd? || return
|
|
34
|
+
|
|
35
|
+
exec('systemctl enable lvm2-monitor')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def openrc
|
|
39
|
+
Helpers.openrc? || return
|
|
40
|
+
|
|
41
|
+
exec('rc-update add lvm boot')
|
|
42
|
+
exec('rc-update add dmcrypt boot')
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def runit
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def exec(cmd)
|
|
49
|
+
Getch::Chroot.new(cmd)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'devs'
|
|
4
|
+
|
|
5
|
+
module Getch
|
|
6
|
+
module FileSystem
|
|
7
|
+
module Ext4
|
|
8
|
+
module Hybrid
|
|
9
|
+
class Device
|
|
10
|
+
def initialize
|
|
11
|
+
@args = { start: true, boot: true, root: true }
|
|
12
|
+
x
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def x
|
|
18
|
+
Devs::Settings.new(@args, OPTIONS)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'mkfs'
|
|
4
|
+
|
|
5
|
+
module Getch
|
|
6
|
+
module FileSystem
|
|
7
|
+
module Ext4
|
|
8
|
+
module Hybrid
|
|
9
|
+
class Format
|
|
10
|
+
def initialize
|
|
11
|
+
x
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def x
|
|
17
|
+
Mkfs::Hybrid.new(DEVS, OPTIONS)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'mountfs'
|
|
4
|
+
|
|
5
|
+
module Getch
|
|
6
|
+
module FileSystem
|
|
7
|
+
module Ext4
|
|
8
|
+
module Hybrid
|
|
9
|
+
class Mount
|
|
10
|
+
def initialize
|
|
11
|
+
x
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def x
|
|
15
|
+
MountFs::Hybrid.new(DEVS, OPTIONS)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'sgdisk'
|
|
4
|
+
require 'cryptsetup'
|
|
5
|
+
require 'lvm2'
|
|
6
|
+
|
|
7
|
+
module Getch
|
|
8
|
+
module FileSystem
|
|
9
|
+
module Ext4
|
|
10
|
+
module Hybrid
|
|
11
|
+
class Partition
|
|
12
|
+
def initialize
|
|
13
|
+
x
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def x
|
|
19
|
+
Sgdisk::Encrypt.new(DEVS)
|
|
20
|
+
CryptSetup.new(DEVS, OPTIONS).format
|
|
21
|
+
Lvm2::Hybrid.new(DEVS, OPTIONS).x
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -24,17 +24,6 @@ module Getch
|
|
|
24
24
|
#command "chmod -R g-rwx,o-rwx /boot"
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
def fstab
|
|
28
|
-
conf = "#{MOUNTPOINT}/etc/fstab"
|
|
29
|
-
File.write(conf, "\n", mode: 'w', chmod: 0644)
|
|
30
|
-
line_fstab(@dev_esp, '/efi vfat noauto,rw,relatime 0 0') if @dev_esp
|
|
31
|
-
line_fstab(@dev_boot, '/boot ext4 noauto,rw,relatime 0 0') if @dev_boot
|
|
32
|
-
add_line(conf, '/dev/mapper/cryptswap none swap sw 0 0')
|
|
33
|
-
add_line(conf, "#{@lv_home} /home ext4 rw,discard 0 0") if @home_disk
|
|
34
|
-
add_line(conf, "#{@lv_root} / ext4 rw,relatime 0 1")
|
|
35
|
-
add_line(conf, 'tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0')
|
|
36
|
-
end
|
|
37
|
-
|
|
38
27
|
def crypttab
|
|
39
28
|
conf = "#{MOUNTPOINT}/etc/crypttab"
|
|
40
29
|
File.write(conf, "\n", mode: 'w', chmod: 0644)
|
|
@@ -43,34 +32,6 @@ module Getch
|
|
|
43
32
|
line_crypttab("crypthome", @dev_home, "/boot/home.key", "luks") if @home_disk
|
|
44
33
|
end
|
|
45
34
|
|
|
46
|
-
def config_grub
|
|
47
|
-
conf = "#{MOUNTPOINT}/etc/default/grub"
|
|
48
|
-
content = 'GRUB_ENABLE_CRYPTODISK=y'
|
|
49
|
-
unless search(conf, content)
|
|
50
|
-
File.write(conf, "#{content}\n", mode: 'a')
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def config_dracut
|
|
55
|
-
conf = "#{MOUNTPOINT}/etc/dracut.conf.d/lvm.conf"
|
|
56
|
-
content = [
|
|
57
|
-
'hostonly="yes"',
|
|
58
|
-
'omit_dracutmodules+=" btrfs "',
|
|
59
|
-
'install_items+=" /boot/volume.key /etc/crypttab "',
|
|
60
|
-
''
|
|
61
|
-
]
|
|
62
|
-
File.write(conf, content.join("\n"), mode: 'w', chmod: 0644)
|
|
63
|
-
#add_line(conf, "install_items+=\" /boot/home.key \"") if @home_disk
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def kernel_cmdline_dracut
|
|
67
|
-
conf = "#{MOUNTPOINT}/etc/dracut.conf.d/cmdline.conf"
|
|
68
|
-
root_uuid = b_uuid(@dev_root)
|
|
69
|
-
args = "rd.lvm.vg=#{@vg} rd.luks.uuid=#{root_uuid} rootflags=rw,relatime"
|
|
70
|
-
line = "kernel_cmdline=\"#{args}\""
|
|
71
|
-
File.write(conf, "#{line}\n", mode: 'w', chmod: 0644)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
35
|
def finish
|
|
75
36
|
puts '+ Enter in your system: chroot /mnt /bin/bash'
|
|
76
37
|
puts '+ Reboot with: shutdown -r now'
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Getch
|
|
4
|
+
module FileSystem
|
|
5
|
+
module Ext4
|
|
6
|
+
module Hybrid
|
|
7
|
+
def self.end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
require_relative 'hybrid/device'
|
|
15
|
+
require_relative 'hybrid/partition'
|
|
16
|
+
require_relative 'hybrid/format'
|
|
17
|
+
require_relative 'hybrid/mount'
|
|
18
|
+
require_relative 'hybrid/deps'
|
|
19
|
+
require_relative 'hybrid/config'
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'fstab'
|
|
4
|
+
require 'dracut'
|
|
5
|
+
|
|
6
|
+
module Getch
|
|
7
|
+
module FileSystem
|
|
8
|
+
module Ext4
|
|
9
|
+
module Lvm
|
|
10
|
+
class Config
|
|
11
|
+
def initialize
|
|
12
|
+
x
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def x
|
|
18
|
+
Fstab::Lvm.new(DEVS, OPTIONS).generate
|
|
19
|
+
Dracut::Lvm.new(DEVS, OPTIONS).generate
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Getch
|
|
4
|
+
module FileSystem
|
|
5
|
+
module Ext4
|
|
6
|
+
module Lvm
|
|
7
|
+
class Deps
|
|
8
|
+
def initialize
|
|
9
|
+
x
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
protected
|
|
13
|
+
|
|
14
|
+
def x
|
|
15
|
+
install
|
|
16
|
+
service
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def install
|
|
22
|
+
case OPTIONS[:os]
|
|
23
|
+
when 'gentoo' then Install.new('sys-fs/lvm2')
|
|
24
|
+
when 'void' then Install.new('lvm2')
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def service
|
|
29
|
+
systemd
|
|
30
|
+
openrc
|
|
31
|
+
runit
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def systemd
|
|
35
|
+
Helpers.systemd? || return
|
|
36
|
+
|
|
37
|
+
exec('systemctl enable lvm2-monitor')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def openrc
|
|
41
|
+
Helpers.openrc? || return
|
|
42
|
+
|
|
43
|
+
exec('rc-update add lvm boot')
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def runit
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def exec(cmd)
|
|
50
|
+
Getch::Chroot.new(cmd)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'devs'
|
|
4
|
+
|
|
5
|
+
module Getch
|
|
6
|
+
module FileSystem
|
|
7
|
+
module Ext4
|
|
8
|
+
module Lvm
|
|
9
|
+
class Device
|
|
10
|
+
def initialize
|
|
11
|
+
@args = { start: true, root: true }
|
|
12
|
+
@vg = OPTIONS[:vg_name] ||= 'vg0'
|
|
13
|
+
@lv_root = "/dev/#{@vg}/root"
|
|
14
|
+
@lv_swap = "/dev/#{@vg}/swap"
|
|
15
|
+
@lv_home = @home_disk ? "/dev/#{@vg}/home" : nil
|
|
16
|
+
x
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def x
|
|
22
|
+
Devs::Settings.new(@args, OPTIONS)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'mkfs'
|
|
4
|
+
|
|
5
|
+
module Getch
|
|
6
|
+
module FileSystem
|
|
7
|
+
module Ext4
|
|
8
|
+
module Lvm
|
|
9
|
+
class Format
|
|
10
|
+
def initialize
|
|
11
|
+
x
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def x
|
|
15
|
+
Mkfs::Lvm.new(DEVS, OPTIONS)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'mountfs'
|
|
4
|
+
|
|
5
|
+
module Getch
|
|
6
|
+
module FileSystem
|
|
7
|
+
module Ext4
|
|
8
|
+
module Lvm
|
|
9
|
+
class Mount
|
|
10
|
+
def initialize
|
|
11
|
+
x
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def x
|
|
15
|
+
MountFs::Lvm.new(DEVS, OPTIONS)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'sgdisk'
|
|
4
|
+
require 'lvm2'
|
|
5
|
+
|
|
6
|
+
module Getch
|
|
7
|
+
module FileSystem
|
|
8
|
+
module Ext4
|
|
9
|
+
module Lvm
|
|
10
|
+
class Partition
|
|
11
|
+
def initialize
|
|
12
|
+
x
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
# Follow https://wiki.archlinux.org/index.php/Partitioning
|
|
18
|
+
# 1 - Efi or GPT
|
|
19
|
+
# 2 - Root
|
|
20
|
+
def x
|
|
21
|
+
Sgdisk::Lvm.new(DEVS)
|
|
22
|
+
Lvm2::Root.new(DEVS, OPTIONS).x
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
module Getch
|
|
4
4
|
module FileSystem
|
|
5
|
-
module
|
|
5
|
+
module Ext4
|
|
6
|
+
module Lvm
|
|
7
|
+
def self.end
|
|
8
|
+
end
|
|
9
|
+
end
|
|
6
10
|
end
|
|
7
11
|
end
|
|
8
12
|
end
|
|
@@ -11,7 +15,5 @@ require_relative 'lvm/device'
|
|
|
11
15
|
require_relative 'lvm/partition'
|
|
12
16
|
require_relative 'lvm/format'
|
|
13
17
|
require_relative 'lvm/mount'
|
|
14
|
-
require_relative 'lvm/config'
|
|
15
18
|
require_relative 'lvm/deps'
|
|
16
|
-
require_relative 'lvm/
|
|
17
|
-
require_relative 'lvm/encrypt'
|
|
19
|
+
require_relative 'lvm/config'
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'fstab'
|
|
4
|
+
require 'dracut'
|
|
5
|
+
|
|
6
|
+
module Getch
|
|
7
|
+
module FileSystem
|
|
8
|
+
module Ext4
|
|
9
|
+
module Minimal
|
|
10
|
+
class Config
|
|
11
|
+
def initialize
|
|
12
|
+
x
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def x
|
|
18
|
+
Fstab::Minimal.new(DEVS, OPTIONS).generate
|
|
19
|
+
Dracut::Minimal.new(DEVS, OPTIONS).generate
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'devs'
|
|
4
|
+
|
|
5
|
+
module Getch
|
|
6
|
+
module FileSystem
|
|
7
|
+
module Ext4
|
|
8
|
+
module Minimal
|
|
9
|
+
class Device
|
|
10
|
+
def initialize
|
|
11
|
+
@args = { start: true, swap: true, root: true }
|
|
12
|
+
x
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def x
|
|
16
|
+
Devs::Settings.new(@args, OPTIONS)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|