getch 0.1.9 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
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,15 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'devs'
4
+
3
5
  module Getch
4
6
  module FileSystem
5
7
  module Ext4
6
8
  module Encrypt
7
- class Device < Getch::FileSystem::Device
9
+ class Device
8
10
  def initialize
9
- super
10
- @luks_root = '/dev/mapper/cryptroot'
11
- @luks_home = @home_disk ? '/dev/mapper/crypthome' : nil
12
- @luks_swap = '/dev/mapper/cryptswap'
11
+ @args = { start: true, boot: true, swap: true, root: true }
12
+ x
13
+ end
14
+
15
+ private
16
+
17
+ def x
18
+ Devs::Settings.new(@args, OPTIONS)
13
19
  end
14
20
  end
15
21
  end
@@ -1,29 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'mkfs'
4
+
3
5
  module Getch
4
6
  module FileSystem
5
7
  module Ext4
6
8
  module Encrypt
7
- class Format < Getch::FileSystem::Ext4::Encrypt::Device
9
+ class Format
8
10
  def initialize
9
- super
10
- @state = Getch::States.new
11
- format
12
- end
13
-
14
- def format
15
- return if STATES[:format]
16
-
17
- exec("mkfs.fat -F32 #{@dev_esp}") if @dev_esp
18
- exec("mkfs.ext4 -F #{@luks_root}")
19
- exec("mkfs.ext4 -F #{@luks_home}") if @dev_home
20
- @state.format
11
+ x
21
12
  end
22
13
 
23
14
  private
24
15
 
25
- def exec(cmd)
26
- Getch::Command.new(cmd).run!
16
+ def x
17
+ Mkfs::Encrypt.new(DEVS, OPTIONS)
27
18
  end
28
19
  end
29
20
  end
@@ -1,24 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'mountfs'
4
+
3
5
  module Getch
4
6
  module FileSystem
5
7
  module Ext4
6
8
  module Encrypt
7
- class Mount < Getch::FileSystem::Ext4::Encrypt::Device
9
+ class Mount
8
10
  def initialize
9
- super
10
- @mount = Getch::FileSystem::Mount.new
11
- @state = Getch::States.new
11
+ x
12
12
  end
13
13
 
14
- def run
15
- return if STATES[:mount]
14
+ private
16
15
 
17
- @mount.root(@luks_root)
18
- @mount.boot(@dev_boot)
19
- @mount.esp(@dev_esp)
20
- @mount.home(@luks_home)
21
- @state.mount
16
+ def x
17
+ MountFs::Encrypt.new(DEVS, OPTIONS)
22
18
  end
23
19
  end
24
20
  end
@@ -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 < Device
6
- include Helpers::Cryptsetup
7
-
10
+ class Partition
8
11
  def initialize
9
- super
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
- # Follow https://wiki.archlinux.org/index.php/Partitioning
34
- def partition_efi
35
- # /efi - EFI system partition - 260MB
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