getch 0.1.9 → 0.3.3

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.
Files changed (164) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +132 -0
  4. data/LICENSE +10 -0
  5. data/README.md +35 -29
  6. data/bin/getch +8 -6
  7. data/getch.gemspec +31 -0
  8. data/lib/clean.rb +149 -0
  9. data/lib/cryptsetup.rb +132 -0
  10. data/lib/devs.rb +199 -0
  11. data/lib/dracut/encrypt.rb +36 -0
  12. data/lib/dracut/hybrid.rb +15 -0
  13. data/lib/dracut/lvm.rb +14 -0
  14. data/lib/dracut/minimal.rb +11 -0
  15. data/lib/dracut/root.rb +45 -0
  16. data/lib/dracut/zfs.rb +35 -0
  17. data/lib/dracut.rb +11 -0
  18. data/lib/fstab/encrypt.rb +44 -0
  19. data/lib/fstab/hybrid.rb +34 -0
  20. data/lib/fstab/lvm.rb +25 -0
  21. data/lib/fstab/minimal.rb +6 -0
  22. data/lib/fstab/root.rb +93 -0
  23. data/lib/fstab/zfs.rb +23 -0
  24. data/lib/fstab.rb +11 -0
  25. data/lib/getch/assembly.rb +150 -0
  26. data/lib/getch/command.rb +88 -128
  27. data/lib/getch/config/account.rb +39 -0
  28. data/lib/getch/config/dhcp.rb +104 -0
  29. data/lib/getch/config/grub.rb +42 -0
  30. data/lib/getch/config/iwd.rb +60 -0
  31. data/lib/getch/config/keymap.rb +78 -0
  32. data/lib/getch/config/locale.rb +96 -0
  33. data/lib/getch/config/portage.rb +90 -0
  34. data/lib/getch/config/pre_network.rb +37 -0
  35. data/lib/getch/config/timezone.rb +52 -0
  36. data/lib/getch/config/void.rb +0 -36
  37. data/lib/getch/config.rb +16 -37
  38. data/lib/getch/device.rb +67 -0
  39. data/lib/getch/filesystem/ext4/encrypt/config.rb +9 -71
  40. data/lib/getch/filesystem/ext4/encrypt/deps.rb +15 -25
  41. data/lib/getch/filesystem/ext4/encrypt/device.rb +11 -5
  42. data/lib/getch/filesystem/ext4/encrypt/format.rb +6 -15
  43. data/lib/getch/filesystem/ext4/encrypt/mount.rb +7 -11
  44. data/lib/getch/filesystem/ext4/encrypt/partition.rb +10 -76
  45. data/lib/getch/filesystem/ext4/encrypt/void.rb +0 -38
  46. data/lib/getch/filesystem/ext4/encrypt.rb +2 -1
  47. data/lib/getch/filesystem/ext4/hybrid/config.rb +27 -0
  48. data/lib/getch/filesystem/ext4/hybrid/deps.rb +55 -0
  49. data/lib/getch/filesystem/ext4/hybrid/device.rb +24 -0
  50. data/lib/getch/filesystem/ext4/hybrid/format.rb +23 -0
  51. data/lib/getch/filesystem/ext4/hybrid/mount.rb +21 -0
  52. data/lib/getch/filesystem/ext4/hybrid/partition.rb +27 -0
  53. data/lib/getch/filesystem/{lvm/encrypt → ext4/hybrid}/void.rb +0 -39
  54. data/lib/getch/filesystem/ext4/hybrid.rb +19 -0
  55. data/lib/getch/filesystem/ext4/lvm/config.rb +25 -0
  56. data/lib/getch/filesystem/ext4/lvm/deps.rb +56 -0
  57. data/lib/getch/filesystem/ext4/lvm/device.rb +28 -0
  58. data/lib/getch/filesystem/ext4/lvm/format.rb +21 -0
  59. data/lib/getch/filesystem/ext4/lvm/mount.rb +21 -0
  60. data/lib/getch/filesystem/ext4/lvm/partition.rb +28 -0
  61. data/lib/getch/filesystem/{lvm.rb → ext4/lvm.rb} +6 -4
  62. data/lib/getch/filesystem/ext4/minimal/config.rb +25 -0
  63. data/lib/getch/filesystem/ext4/{device.rb → minimal/deps.rb} +3 -1
  64. data/lib/getch/filesystem/ext4/minimal/device.rb +22 -0
  65. data/lib/getch/filesystem/ext4/minimal/format.rb +23 -0
  66. data/lib/getch/filesystem/ext4/minimal/mount.rb +21 -0
  67. data/lib/getch/filesystem/ext4/minimal/partition.rb +28 -0
  68. data/lib/getch/filesystem/ext4/minimal.rb +19 -0
  69. data/lib/getch/filesystem/ext4.rb +7 -7
  70. data/lib/getch/filesystem/zfs/encrypt/config.rb +10 -39
  71. data/lib/getch/filesystem/zfs/encrypt/deps.rb +4 -55
  72. data/lib/getch/filesystem/zfs/encrypt/device.rb +7 -51
  73. data/lib/getch/filesystem/zfs/encrypt/format.rb +6 -90
  74. data/lib/getch/filesystem/zfs/encrypt/mount.rb +16 -35
  75. data/lib/getch/filesystem/zfs/encrypt/partition.rb +6 -54
  76. data/lib/getch/filesystem/zfs/encrypt.rb +2 -1
  77. data/lib/getch/filesystem/zfs/minimal/config.rb +37 -0
  78. data/lib/getch/filesystem/zfs/minimal/deps.rb +126 -0
  79. data/lib/getch/filesystem/zfs/minimal/device.rb +24 -0
  80. data/lib/getch/filesystem/zfs/minimal/format.rb +23 -0
  81. data/lib/getch/filesystem/zfs/minimal/mount.rb +23 -0
  82. data/lib/getch/filesystem/zfs/minimal/partition.rb +23 -0
  83. data/lib/getch/filesystem/zfs/minimal.rb +19 -0
  84. data/lib/getch/filesystem/zfs.rb +1 -7
  85. data/lib/getch/filesystem.rb +0 -6
  86. data/lib/getch/gentoo/bootloader.rb +23 -44
  87. data/lib/getch/gentoo/finalize.rb +25 -0
  88. data/lib/getch/gentoo/post_config.rb +75 -0
  89. data/lib/getch/gentoo/pre_config.rb +37 -0
  90. data/lib/getch/gentoo/services.rb +18 -0
  91. data/lib/getch/gentoo/sources.rb +39 -33
  92. data/lib/getch/gentoo/tarball.rb +91 -0
  93. data/lib/getch/gentoo/terraform.rb +34 -0
  94. data/lib/getch/gentoo/update.rb +54 -0
  95. data/lib/getch/gentoo/use.rb +9 -6
  96. data/lib/getch/gentoo/use_flag.rb +17 -20
  97. data/lib/getch/gentoo.rb +9 -75
  98. data/lib/getch/guard.rb +3 -3
  99. data/lib/getch/helpers.rb +63 -115
  100. data/lib/getch/log.rb +87 -25
  101. data/lib/getch/options.rb +41 -11
  102. data/lib/getch/states.rb +28 -8
  103. data/lib/getch/tree.rb +56 -0
  104. data/lib/getch/version.rb +1 -1
  105. data/lib/getch/void/bootloader.rb +18 -0
  106. data/lib/getch/void/finalize.rb +31 -0
  107. data/lib/getch/void/post_config.rb +19 -0
  108. data/lib/getch/void/pre_config.rb +18 -0
  109. data/lib/getch/void/services.rb +18 -0
  110. data/lib/getch/void/{stage.rb → tarball.rb} +34 -14
  111. data/lib/getch/void/terraform.rb +28 -0
  112. data/lib/getch/void/update.rb +33 -0
  113. data/lib/getch/void.rb +9 -59
  114. data/lib/getch.rb +58 -90
  115. data/lib/luks.rb +239 -0
  116. data/lib/lvm2.rb +112 -0
  117. data/lib/mkfs/zfs.rb +167 -0
  118. data/lib/mkfs.rb +144 -0
  119. data/lib/mountfs.rb +154 -0
  120. data/lib/nito.rb +131 -0
  121. data/lib/sgdisk.rb +160 -0
  122. data.tar.gz.sig +0 -0
  123. metadata +113 -74
  124. metadata.gz.sig +0 -0
  125. data/lib/getch/config/gentoo.rb +0 -58
  126. data/lib/getch/filesystem/clean.rb +0 -58
  127. data/lib/getch/filesystem/device.rb +0 -63
  128. data/lib/getch/filesystem/ext4/config.rb +0 -62
  129. data/lib/getch/filesystem/ext4/deps.rb +0 -24
  130. data/lib/getch/filesystem/ext4/format.rb +0 -31
  131. data/lib/getch/filesystem/ext4/mount.rb +0 -26
  132. data/lib/getch/filesystem/ext4/partition.rb +0 -55
  133. data/lib/getch/filesystem/ext4/void.rb +0 -44
  134. data/lib/getch/filesystem/lvm/config.rb +0 -44
  135. data/lib/getch/filesystem/lvm/deps.rb +0 -44
  136. data/lib/getch/filesystem/lvm/device.rb +0 -45
  137. data/lib/getch/filesystem/lvm/encrypt/config.rb +0 -74
  138. data/lib/getch/filesystem/lvm/encrypt/deps.rb +0 -49
  139. data/lib/getch/filesystem/lvm/encrypt/device.rb +0 -48
  140. data/lib/getch/filesystem/lvm/encrypt/format.rb +0 -35
  141. data/lib/getch/filesystem/lvm/encrypt/mount.rb +0 -27
  142. data/lib/getch/filesystem/lvm/encrypt/partition.rb +0 -84
  143. data/lib/getch/filesystem/lvm/encrypt.rb +0 -18
  144. data/lib/getch/filesystem/lvm/format.rb +0 -32
  145. data/lib/getch/filesystem/lvm/mount.rb +0 -26
  146. data/lib/getch/filesystem/lvm/partition.rb +0 -72
  147. data/lib/getch/filesystem/lvm/void.rb +0 -46
  148. data/lib/getch/filesystem/mount.rb +0 -63
  149. data/lib/getch/filesystem/partition.rb +0 -85
  150. data/lib/getch/filesystem/zfs/config.rb +0 -43
  151. data/lib/getch/filesystem/zfs/deps.rb +0 -67
  152. data/lib/getch/filesystem/zfs/device.rb +0 -66
  153. data/lib/getch/filesystem/zfs/encrypt/void.rb +0 -97
  154. data/lib/getch/filesystem/zfs/format.rb +0 -117
  155. data/lib/getch/filesystem/zfs/mount.rb +0 -47
  156. data/lib/getch/filesystem/zfs/partition.rb +0 -69
  157. data/lib/getch/filesystem/zfs/void.rb +0 -81
  158. data/lib/getch/gentoo/boot.rb +0 -64
  159. data/lib/getch/gentoo/chroot.rb +0 -75
  160. data/lib/getch/gentoo/config.rb +0 -167
  161. data/lib/getch/gentoo/stage.rb +0 -73
  162. data/lib/getch/void/boot.rb +0 -84
  163. data/lib/getch/void/chroot.rb +0 -56
  164. data/lib/getch/void/config.rb +0 -90
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module Config
5
- class Gentoo
6
- def initialize
7
- @systemd_net_dir = "#{MOUNTPOINT}/etc/systemd"
8
- end
9
-
10
- def ethernet
11
- conf = "#{@systemd_net_dir}/network/20-ethernet.network"
12
- datas = [
13
- '[Match]',
14
- 'Name=en*',
15
- 'Name=eth*',
16
- '[Network]',
17
- 'DHCP=yes',
18
- 'IPv6PrivacyExtensions=yes',
19
- '[DHCP]',
20
- 'RouteMetric=512',
21
- ]
22
- File.write(conf, datas.join("\n"), mode: 'w')
23
- end
24
-
25
- def wifi
26
- conf = "#{@systemd_net_dir}/network/20-wireless.network"
27
- datas = [
28
- '[Match]',
29
- 'Name=wlp*',
30
- 'Name=wlan*',
31
- '[Network]',
32
- 'DHCP=yes',
33
- 'IPv6PrivacyExtensions=yes',
34
- '[DHCP]',
35
- 'RouteMetric=1024',
36
- ]
37
- File.write(conf, datas.join("\n"), mode: 'w')
38
- end
39
-
40
- def dns
41
- conf = "#{@systemd_net_dir}/resolved.conf.d/dns_over_tls.conf"
42
- datas = [
43
- '[Resolve]',
44
- 'DNS=9.9.9.9#dns.quad9.net',
45
- 'DNSOverTLS=yes',
46
- ]
47
- Helpers.create_dir("#{@systemd_net_dir}/resolved.conf.d")
48
- File.write(conf, datas.join("\n"), mode: 'w')
49
-
50
- Getch::Chroot.new('systemctl enable systemd-networkd').run!
51
- Getch::Chroot.new('systemctl enable systemd-resolved').run!
52
- end
53
-
54
- def shell
55
- end
56
- end
57
- end
58
- end
@@ -1,58 +0,0 @@
1
- module Getch
2
- module FileSystem
3
- module Clean
4
- def self.clean_hdd(disk)
5
- return unless disk
6
- raise ArgumentError, "Disk #{disk} is no found." if ! File.exist? "/dev/#{disk}"
7
-
8
- puts
9
- print "Cleaning data on #{disk}, can be long, avoid this on Flash Memory (SSD,USB,...) ? [y,N] "
10
- case gets.chomp
11
- when /^y|^Y/
12
- bloc=`blockdev --getbsz /dev/#{disk}`.chomp
13
- Helpers.sys("dd if=/dev/urandom of=/dev/#{disk} bs=#{bloc} status=progress")
14
- end
15
- end
16
-
17
- def self.clean_struct(disk)
18
- return unless disk
19
- raise ArgumentError, "Disk #{disk} is no found." unless File.exist? "/dev/#{disk}"
20
-
21
- Helpers.sys("sgdisk -Z /dev/#{disk}")
22
- Helpers.sys("wipefs -a /dev/#{disk}")
23
- end
24
-
25
- def self.hdd(*disks)
26
- disks.each { |d|
27
- clean_struct(d)
28
- clean_hdd(d)
29
- }
30
- end
31
- # See https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing
32
- # for SSD
33
- def self.sdd
34
- end
35
-
36
- def self.external_disk(root_disk, *disks)
37
- disks.each do |d|
38
- unless d && d != '' && d != nil && d == root_disk
39
- hdd(d)
40
- end
41
- end
42
- end
43
-
44
- def self.old_vg(disk, vg)
45
- oldvg = `vgdisplay | grep #{vg}`.chomp
46
- Helpers.sys("vgremove -f #{vg}") if oldvg != ''
47
- Helpers.sys("pvremove -f #{disk}") if oldvg != '' and File.exist? disk
48
- end
49
-
50
- def self.old_zpool
51
- oldzpool = `zpool status | grep pool:`.gsub(/pool: /, '').delete(' ').split("\n")
52
- if oldzpool[0] != '' and $?.success?
53
- oldzpool.each { |p| Helpers.sys("zpool destroy #{p}") if p }
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- class Device
6
- def initialize
7
- @efi = Helpers.efi?
8
- @root_part = 1
9
- @user = Getch::OPTIONS[:username]
10
-
11
- @disk = Getch::OPTIONS[:disk]
12
- @boot_disk = Getch::OPTIONS[:boot_disk]
13
- @cache_disk = Getch::OPTIONS[:cache_disk]
14
- @home_disk = Getch::OPTIONS[:home_disk]
15
-
16
- search_boot
17
- search_swap
18
- search_root
19
- search_home
20
- end
21
-
22
- private
23
- def search_boot
24
- if @efi
25
- if @boot_disk
26
- @dev_esp = "/dev/#{@boot_disk}#{@root_part}"
27
- else
28
- @dev_esp = "/dev/#{@disk}#{@root_part}"
29
- @root_part += 1
30
- end
31
- else
32
- if @boot_disk
33
- @dev_gpt = "/dev/#{@boot_disk}#{@root_part}"
34
- @dev_grub = "/dev/#{@boot_disk}"
35
- else
36
- @dev_gpt = "/dev/#{@disk}#{@root_part}"
37
- @dev_grub = "/dev/#{@disk}"
38
- @root_part += 1
39
- end
40
- end
41
- end
42
-
43
- def search_swap
44
- if @cache_disk
45
- @dev_swap = "/dev/#{@cache_disk}1"
46
- else
47
- @dev_swap = "/dev/#{@disk}#{@root_part}"
48
- @root_part += 1
49
- end
50
- end
51
-
52
- def search_root
53
- @dev_root = "/dev/#{@disk}#{@root_part}"
54
- end
55
-
56
- def search_home
57
- if @home_disk
58
- @dev_home = "/dev/#{@home_disk}1"
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Ext4
6
- class Config < Getch::FileSystem::Ext4::Device
7
- def initialize
8
- super
9
- gen_uuid
10
- @root_dir = MOUNTPOINT
11
- @init = '/usr/lib/systemd/systemd'
12
- end
13
-
14
- def fstab
15
- file = "#{@root_dir}/etc/fstab"
16
- datas = data_fstab
17
- File.write(file, datas.join("\n"))
18
- end
19
-
20
- def systemd_boot
21
- return unless Helpers.efi?
22
-
23
- esp = '/efi'
24
- dir = "#{@root_dir}/#{esp}/loader/entries/"
25
- datas_gentoo = [
26
- 'title Gentoo Linux',
27
- 'linux /vmlinuz',
28
- "options root=PARTUUID=#{@partuuid_root} init=#{@init} rw"
29
- ]
30
- File.write("#{dir}/gentoo.conf", datas_gentoo.join("\n"))
31
- end
32
-
33
- def grub
34
- return if Helpers.efi?
35
-
36
- file = "#{@root_dir}/etc/default/grub"
37
- cmdline = "GRUB_CMDLINE_LINUX=\"resume=PARTUUID=#{@partuuid_swap} root=PARTUUID=#{@partuuid_root} init=#{@init} rw slub_debug=P page_poison=1 slab_nomerge pti=on vsyscall=none spectre_v2=on spec_store_bypass_disable=seccomp iommu=force\"\n"
38
- File.write(file, cmdline, mode: 'a')
39
- end
40
-
41
- private
42
-
43
- def gen_uuid
44
- @partuuid_root = Helpers.partuuid(@dev_root)
45
- @partuuid_swap = Helpers.partuuid(@dev_swap)
46
- @uuid_root = `lsblk -o "UUID" #{@dev_root} | tail -1`.chomp() if @dev_root
47
- @uuid_esp = `lsblk -o "UUID" #{@dev_esp} | tail -1`.chomp() if @dev_esp
48
- @uuid_home = `lsblk -o "UUID" #{@dev_home} | tail -1`.chomp() if @dev_home
49
- end
50
-
51
- def data_fstab
52
- esp = @dev_esp ? "UUID=#{@uuid_esp} /efi vfat noauto,noatime 1 2" : ''
53
- swap = @dev_swap ? "PARTUUID=#{@partuuid_swap} none swap discard 0 0" : ''
54
- root = @dev_root ? "UUID=#{@uuid_root} / ext4 defaults 0 1" : ''
55
- home = @dev_home ? "UUID=#{@uuid_home} /home/#{@user} ext4 defaults 0 2" : ''
56
-
57
- [ esp, swap, root, home ]
58
- end
59
- end
60
- end
61
- end
62
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Ext4
6
- class Deps
7
- def initialize
8
- if Helpers.efi?
9
- install_efi
10
- else
11
- install_bios
12
- end
13
- end
14
-
15
- private
16
- def install_efi
17
- end
18
-
19
- def install_bios
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Ext4
6
- class Format < Getch::FileSystem::Ext4::Device
7
- def initialize
8
- super
9
- @state = Getch::States.new
10
- format
11
- end
12
-
13
- def format
14
- return if STATES[:format]
15
-
16
- exec("mkfs.fat -F32 #{@dev_esp}") if @dev_esp
17
- exec("mkswap -f #{@dev_swap}")
18
- exec("mkfs.ext4 -F #{@dev_root}")
19
- exec("mkfs.ext4 -F #{@dev_home}") if @dev_home
20
- @state.format
21
- end
22
-
23
- private
24
-
25
- def exec(cmd)
26
- Getch::Command.new(cmd).run!
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Ext4
6
- class Mount < Getch::FileSystem::Ext4::Device
7
- def initialize
8
- super
9
- @mount = Getch::FileSystem::Mount.new
10
- @state = Getch::States.new
11
- end
12
-
13
- def run
14
- return if STATES[:mount]
15
-
16
- @mount.swap(@dev_swap)
17
- @mount.root(@dev_root)
18
- @mount.boot(@dev_boot)
19
- @mount.esp(@dev_esp)
20
- @mount.home(@dev_home)
21
- @state.mount
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Ext4
6
- class Partition < Getch::FileSystem::Ext4::Device
7
- def initialize
8
- super
9
- @state = Getch::States.new
10
- @clean = Getch::FileSystem::Clean
11
- @partition = Getch::FileSystem::Partition.new
12
- run_partition
13
- end
14
-
15
- def run_partition
16
- return if STATES[:partition ]
17
-
18
- @clean.hdd(@disk)
19
- @clean.external_disk(@disk, @boot_disk, @cache_disk, @home_disk)
20
- if Helpers.efi?
21
- partition_efi
22
- else
23
- partition_bios
24
- end
25
- @state.partition
26
- end
27
-
28
- private
29
-
30
- # Follow https://wiki.archlinux.org/index.php/Partitioning
31
- def partition_efi
32
- # /efi - EFI system partition - 260MB
33
- # swap - Linux Swap - size of the ram
34
- # / - Root
35
- # /home - Home
36
- @partition.efi(@dev_esp)
37
- @partition.swap(@dev_swap)
38
- @partition.root(@dev_root, '8304')
39
- @partition.home(@dev_home, '8302') if @dev_home
40
- end
41
-
42
- def partition_bios
43
- # None - Bios Boot Partition - 1MiB
44
- # / - Root
45
- # swap - Linux Swap - size of the ram
46
- # /home - Home
47
- @partition.gpt(@dev_gpt)
48
- @partition.swap(@dev_swap)
49
- @partition.root(@dev_root, '8304')
50
- @partition.home(@dev_home, '8302') if @dev_home
51
- end
52
- end
53
- end
54
- end
55
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Ext4
6
- class Void < Device
7
- include Helpers::Void
8
-
9
- attr_reader :boot_disk
10
-
11
- def fstab
12
- conf = "#{MOUNTPOINT}/etc/fstab"
13
- File.write(conf, "\n", mode: 'w', chmod: 0644)
14
- line_fstab(@dev_esp, '/efi vfat noauto,rw,relatime 0 0') if @dev_esp
15
- line_fstab(@dev_swap, 'swap swap rw,noatime,discard 0 0') if @dev_swap
16
- line_fstab(@dev_root, '/ ext4 rw,relatime 0 1')
17
- add_line(conf, 'tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0')
18
- end
19
-
20
- def config_dracut
21
- conf = "#{MOUNTPOINT}/etc/dracut.conf.d/ext4.conf"
22
- # dracut: value+= should be surrounding by white space
23
- content = [
24
- "hostonly=\"yes\"",
25
- "omit_dracutmodules+=\" btrfs lvm \"",
26
- ""
27
- ]
28
- File.write(conf, content.join("\n"), mode: 'w', chmod: 0644)
29
- end
30
-
31
- def kernel_cmdline_dracut
32
- conf = "#{MOUNTPOINT}/etc/dracut.conf.d/cmdline.conf"
33
- c="kernel_cmdline=\"root=#{@dev_root} rootfstype=ext4 rootflags=rw,relatime\""
34
- File.write(conf, "#{c}\n", mode: 'w', chmod: 0644)
35
- end
36
-
37
- def finish
38
- puts '+ Enter in your system: chroot /mnt /bin/bash'
39
- puts '+ Reboot with: shutdown -r now'
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Lvm
6
- class Config < Getch::FileSystem::Lvm::Device
7
- def initialize
8
- super
9
- gen_uuid
10
- @init = '/usr/lib/systemd/systemd'
11
- end
12
-
13
- def fstab
14
- file = "#{MOUNTPOINT}/etc/fstab"
15
- datas = data_fstab
16
- File.write(file, datas.join("\n"))
17
- end
18
-
19
- def cmdline
20
- conf = "#{MOUNTPOINT}/etc/dracut.conf.d/cmdline.conf"
21
- line = "resume=#{@lv_swap} rd.lvm.vg=#{@vg} init=#{@init}"
22
- File.write conf, "kernel_cmdline=\"#{line}\"\n"
23
- end
24
-
25
- private
26
-
27
- def gen_uuid
28
- @uuid_boot = `lsblk -o "UUID" #{@dev_boot} | tail -1`.chomp() if @dev_boot
29
- @uuid_esp = `lsblk -o "UUID" #{@dev_esp} | tail -1`.chomp() if @dev_esp
30
- end
31
-
32
- def data_fstab
33
- efi = @dev_esp ? "UUID=#{@uuid_esp} /efi vfat noauto,noatime 1 2" : ''
34
- boot = @dev_boot ? "UUID=#{@uuid_boot} /boot ext4 noauto,noatime 1 2" : ''
35
- swap = "#{@lv_swap} none swap discard 0 0"
36
- root = "#{@lv_root} / ext4 defaults 0 1"
37
- home = @lv_home ? "#{@lv_home} /home/#{@user} ext4 defaults 0 2" : ''
38
-
39
- [ efi, boot, swap, root, home ]
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Lvm
6
- class Deps
7
- def make
8
- install_bios unless Helpers.efi?
9
- install_deps
10
- options_make
11
- Getch::Make.new('genkernel --kernel-config=/usr/src/linux/.config all').run!
12
- end
13
-
14
- private
15
- def options_make
16
- grub = Helpers.efi? ? 'BOOTLOADER="no"' : 'BOOTLOADER="grub2"'
17
- datas = [
18
- '',
19
- grub,
20
- 'INSTALL="yes"',
21
- 'MENUCONFIG="no"',
22
- 'CLEAN="yes"',
23
- 'SAVE_CONFIG="yes"',
24
- 'MOUNTBOOT="yes"',
25
- 'MRPROPER="no"',
26
- 'LVM="yes"',
27
- ]
28
- file = "#{MOUNTPOINT}/etc/genkernel.conf"
29
- File.write(file, datas.join("\n"), mode: 'a')
30
- end
31
-
32
- def install_deps
33
- Getch::Bask.new('-a lvm').run!
34
- Getch::Emerge.new('sys-fs/lvm2 genkernel').pkg!
35
- exec('systemctl enable lvm2-monitor')
36
- end
37
-
38
- def exec(cmd)
39
- Getch::Chroot.new(cmd).run!
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Lvm
6
- class Device < Getch::FileSystem::Device
7
- def initialize
8
- super
9
- @vg = 'vg0'
10
- @lv_root = "/dev/#{@vg}/root"
11
- @lv_swap = "/dev/#{@vg}/swap"
12
- @lv_home = @home_disk ? "/dev/#{@vg}/home" : nil
13
- end
14
-
15
- private
16
-
17
- def search_boot
18
- if @efi
19
- if @boot_disk
20
- @dev_esp = "/dev/#{@boot_disk}1"
21
- else
22
- @dev_esp = "/dev/#{@disk}1"
23
- @root_part += 1
24
- end
25
- else
26
- if @boot_disk
27
- @dev_gpt = "/dev/#{@boot_disk}1"
28
- @dev_boot = "/dev/#{@boot_disk}2"
29
- @dev_grub = "/dev/#{@boot_disk}"
30
- else
31
- @dev_gpt = "/dev/#{@disk}1"
32
- @dev_boot = "/dev/#{@disk}2"
33
- @dev_grub = "/dev/#{@disk}"
34
- @root_part += 2
35
- end
36
- end
37
- end
38
-
39
- # The swap is a part of the LVM volume, so we clean the func
40
- def search_swap
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Lvm
6
- module Encrypt
7
- class Config < Getch::FileSystem::Lvm::Encrypt::Device
8
- def initialize
9
- super
10
- gen_uuid
11
- @init = '/usr/lib/systemd/systemd'
12
- crypttab
13
- end
14
-
15
- def fstab
16
- file = "#{MOUNTPOINT}/etc/fstab"
17
- datas = data_fstab
18
- File.write file, datas.join("\n")
19
- end
20
-
21
- def systemd_boot
22
- return unless Helpers.efi?
23
-
24
- esp = '/efi'
25
- dir = "#{MOUNTPOINT}/#{esp}/loader/entries/"
26
- datas_gentoo = [
27
- 'title Gentoo Linux',
28
- 'linux /vmlinuz',
29
- 'initrd /initramfs',
30
- "options crypt_root=UUID=#{@uuid_dev_root} root=/dev/mapper/root real_root=#{@lv_root} init=#{@init} keymap=#{Getch::OPTIONS[:keymap]} dolvm rw"
31
- ]
32
- File.write("#{dir}/gentoo.conf", datas_gentoo.join("\n"))
33
- end
34
-
35
- def crypttab
36
- datas = [
37
- "cryptswap #{@lv_swap} /dev/urandom swap,cipher=aes-xts-plain64:sha256,size=512"
38
- ]
39
- File.write("#{MOUNTPOINT}/etc/crypttab", datas.join("\n"))
40
- end
41
-
42
- def grub
43
- return if Helpers.efi?
44
-
45
- file = "#{MOUNTPOINT}/etc/default/grub"
46
- cmdline = [
47
- "GRUB_CMDLINE_LINUX=\"crypt_root=UUID=#{@uuid_dev_root} root=/dev/mapper/root real_root=#{@lv_root} init=#{@init} dolvm rw slub_debug=P page_poison=1 slab_nomerge pti=on vsyscall=none spectre_v2=on spec_store_bypass_disable=seccomp iommu=force keymap=#{Getch::OPTIONS[:keymap]}\"",
48
- "GRUB_ENABLE_CRYPTODISK=y"
49
- ]
50
- File.write(file, cmdline.join("\n"), mode: 'a')
51
- end
52
-
53
- private
54
-
55
- def gen_uuid
56
- @uuid_dev_root = `lsblk -d -o "UUID" #{@dev_root} | tail -1`.chomp() if @dev_root
57
- @uuid_boot = `lsblk -o "UUID" #{@dev_boot} | tail -1`.chomp() if @dev_boot
58
- @uuid_esp = `lsblk -o "UUID" #{@dev_esp} | tail -1`.chomp() if @dev_esp
59
- end
60
-
61
- def data_fstab
62
- boot_efi = @dev_esp ? "UUID=#{@uuid_esp} /efi vfat noauto,noatime 1 2" : ''
63
- boot = @dev_boot ? "UUID=#{@uuid_boot} /boot ext4 noauto,noatime 1 2" : ''
64
- swap = "/dev/mapper/cryptswap none swap discard 0 0"
65
- root = "#{@lv_root} / ext4 defaults 0 1"
66
- home = @lv_home ? "#{@lv_home} /home/#{@user} ext4 defaults 0 2" : ''
67
-
68
- [ boot_efi, boot, swap, root, home ]
69
- end
70
- end
71
- end
72
- end
73
- end
74
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Getch
4
- module FileSystem
5
- module Lvm
6
- module Encrypt
7
- class Deps
8
- def make
9
- install_deps
10
- options_make
11
- Getch::Make.new('genkernel --kernel-config=/usr/src/linux/.config all').run!
12
- end
13
-
14
- private
15
-
16
- def options_make
17
- grub = Helpers.efi? ? 'BOOTLOADER="no"' : 'BOOTLOADER="grub2"'
18
- datas = [
19
- '',
20
- grub,
21
- 'INSTALL="yes"',
22
- 'MENUCONFIG="no"',
23
- 'CLEAN="yes"',
24
- 'KEYMAP="yes"',
25
- 'SAVE_CONFIG="yes"',
26
- 'MOUNTBOOT="yes"',
27
- 'MRPROPER="no"',
28
- 'LVM="yes"',
29
- 'LUKS="yes"',
30
- ]
31
- file = "#{MOUNTPOINT}/etc/genkernel.conf"
32
- File.write(file, datas.join("\n"), mode: 'a')
33
- end
34
-
35
- def install_deps
36
- # lvm2, cryptsetup alrealy installed
37
- Getch::Bask.new('-a lvm').run!
38
- Getch::Emerge.new('genkernel').pkg!
39
- exec('systemctl enable lvm2-monitor')
40
- end
41
-
42
- def exec(cmd)
43
- Getch::Chroot.new(cmd).run!
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end