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.
Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +35 -29
  4. data/bin/getch +8 -6
  5. data/lib/clean.rb +149 -0
  6. data/lib/cryptsetup.rb +132 -0
  7. data/lib/devs.rb +199 -0
  8. data/lib/dracut/encrypt.rb +36 -0
  9. data/lib/dracut/hybrid.rb +15 -0
  10. data/lib/dracut/lvm.rb +14 -0
  11. data/lib/dracut/minimal.rb +11 -0
  12. data/lib/dracut/root.rb +45 -0
  13. data/lib/dracut/zfs.rb +35 -0
  14. data/lib/dracut.rb +11 -0
  15. data/lib/fstab/encrypt.rb +44 -0
  16. data/lib/fstab/hybrid.rb +34 -0
  17. data/lib/fstab/lvm.rb +25 -0
  18. data/lib/fstab/minimal.rb +6 -0
  19. data/lib/fstab/root.rb +93 -0
  20. data/lib/fstab/zfs.rb +23 -0
  21. data/lib/fstab.rb +11 -0
  22. data/lib/getch/assembly.rb +150 -0
  23. data/lib/getch/command.rb +88 -128
  24. data/lib/getch/config/account.rb +39 -0
  25. data/lib/getch/config/dhcp.rb +104 -0
  26. data/lib/getch/config/grub.rb +42 -0
  27. data/lib/getch/config/iwd.rb +60 -0
  28. data/lib/getch/config/keymap.rb +78 -0
  29. data/lib/getch/config/locale.rb +96 -0
  30. data/lib/getch/config/portage.rb +90 -0
  31. data/lib/getch/config/pre_network.rb +37 -0
  32. data/lib/getch/config/timezone.rb +52 -0
  33. data/lib/getch/config/void.rb +0 -36
  34. data/lib/getch/config.rb +16 -37
  35. data/lib/getch/device.rb +67 -0
  36. data/lib/getch/filesystem/ext4/encrypt/config.rb +9 -71
  37. data/lib/getch/filesystem/ext4/encrypt/deps.rb +15 -25
  38. data/lib/getch/filesystem/ext4/encrypt/device.rb +11 -5
  39. data/lib/getch/filesystem/ext4/encrypt/format.rb +6 -15
  40. data/lib/getch/filesystem/ext4/encrypt/mount.rb +7 -11
  41. data/lib/getch/filesystem/ext4/encrypt/partition.rb +10 -76
  42. data/lib/getch/filesystem/ext4/encrypt/void.rb +0 -38
  43. data/lib/getch/filesystem/ext4/encrypt.rb +2 -1
  44. data/lib/getch/filesystem/ext4/hybrid/config.rb +27 -0
  45. data/lib/getch/filesystem/ext4/hybrid/deps.rb +55 -0
  46. data/lib/getch/filesystem/ext4/hybrid/device.rb +24 -0
  47. data/lib/getch/filesystem/ext4/hybrid/format.rb +23 -0
  48. data/lib/getch/filesystem/ext4/hybrid/mount.rb +21 -0
  49. data/lib/getch/filesystem/ext4/hybrid/partition.rb +27 -0
  50. data/lib/getch/filesystem/{lvm/encrypt → ext4/hybrid}/void.rb +0 -39
  51. data/lib/getch/filesystem/ext4/hybrid.rb +19 -0
  52. data/lib/getch/filesystem/ext4/lvm/config.rb +25 -0
  53. data/lib/getch/filesystem/ext4/lvm/deps.rb +56 -0
  54. data/lib/getch/filesystem/ext4/lvm/device.rb +28 -0
  55. data/lib/getch/filesystem/ext4/lvm/format.rb +21 -0
  56. data/lib/getch/filesystem/ext4/lvm/mount.rb +21 -0
  57. data/lib/getch/filesystem/ext4/lvm/partition.rb +28 -0
  58. data/lib/getch/filesystem/{lvm.rb → ext4/lvm.rb} +6 -4
  59. data/lib/getch/filesystem/ext4/minimal/config.rb +25 -0
  60. data/lib/getch/filesystem/ext4/{device.rb → minimal/deps.rb} +3 -1
  61. data/lib/getch/filesystem/ext4/minimal/device.rb +22 -0
  62. data/lib/getch/filesystem/ext4/minimal/format.rb +23 -0
  63. data/lib/getch/filesystem/ext4/minimal/mount.rb +21 -0
  64. data/lib/getch/filesystem/ext4/minimal/partition.rb +28 -0
  65. data/lib/getch/filesystem/ext4/minimal.rb +19 -0
  66. data/lib/getch/filesystem/ext4.rb +7 -7
  67. data/lib/getch/filesystem/zfs/encrypt/config.rb +10 -39
  68. data/lib/getch/filesystem/zfs/encrypt/deps.rb +4 -55
  69. data/lib/getch/filesystem/zfs/encrypt/device.rb +7 -51
  70. data/lib/getch/filesystem/zfs/encrypt/format.rb +6 -90
  71. data/lib/getch/filesystem/zfs/encrypt/mount.rb +16 -35
  72. data/lib/getch/filesystem/zfs/encrypt/partition.rb +6 -54
  73. data/lib/getch/filesystem/zfs/encrypt.rb +2 -1
  74. data/lib/getch/filesystem/zfs/minimal/config.rb +37 -0
  75. data/lib/getch/filesystem/zfs/minimal/deps.rb +126 -0
  76. data/lib/getch/filesystem/zfs/minimal/device.rb +24 -0
  77. data/lib/getch/filesystem/zfs/minimal/format.rb +23 -0
  78. data/lib/getch/filesystem/zfs/minimal/mount.rb +23 -0
  79. data/lib/getch/filesystem/zfs/minimal/partition.rb +23 -0
  80. data/lib/getch/filesystem/zfs/minimal.rb +19 -0
  81. data/lib/getch/filesystem/zfs.rb +1 -7
  82. data/lib/getch/filesystem.rb +0 -6
  83. data/lib/getch/gentoo/bootloader.rb +23 -44
  84. data/lib/getch/gentoo/finalize.rb +25 -0
  85. data/lib/getch/gentoo/post_config.rb +75 -0
  86. data/lib/getch/gentoo/pre_config.rb +37 -0
  87. data/lib/getch/gentoo/services.rb +18 -0
  88. data/lib/getch/gentoo/sources.rb +39 -33
  89. data/lib/getch/gentoo/tarball.rb +91 -0
  90. data/lib/getch/gentoo/terraform.rb +34 -0
  91. data/lib/getch/gentoo/update.rb +54 -0
  92. data/lib/getch/gentoo/use.rb +9 -6
  93. data/lib/getch/gentoo/use_flag.rb +17 -20
  94. data/lib/getch/gentoo.rb +9 -75
  95. data/lib/getch/guard.rb +2 -2
  96. data/lib/getch/helpers.rb +63 -115
  97. data/lib/getch/log.rb +87 -25
  98. data/lib/getch/options.rb +41 -11
  99. data/lib/getch/states.rb +28 -8
  100. data/lib/getch/tree.rb +56 -0
  101. data/lib/getch/version.rb +1 -1
  102. data/lib/getch/void/bootloader.rb +18 -0
  103. data/lib/getch/void/finalize.rb +31 -0
  104. data/lib/getch/void/post_config.rb +19 -0
  105. data/lib/getch/void/pre_config.rb +18 -0
  106. data/lib/getch/void/services.rb +18 -0
  107. data/lib/getch/void/{stage.rb → tarball.rb} +34 -14
  108. data/lib/getch/void/terraform.rb +28 -0
  109. data/lib/getch/void/update.rb +33 -0
  110. data/lib/getch/void.rb +9 -59
  111. data/lib/getch.rb +58 -90
  112. data/lib/luks.rb +239 -0
  113. data/lib/lvm2.rb +112 -0
  114. data/lib/mkfs/zfs.rb +167 -0
  115. data/lib/mkfs.rb +140 -0
  116. data/lib/mountfs.rb +154 -0
  117. data/lib/nito.rb +131 -0
  118. data/lib/sgdisk.rb +160 -0
  119. data.tar.gz.sig +0 -0
  120. metadata +83 -47
  121. metadata.gz.sig +0 -0
  122. data/lib/getch/config/gentoo.rb +0 -58
  123. data/lib/getch/filesystem/clean.rb +0 -58
  124. data/lib/getch/filesystem/device.rb +0 -63
  125. data/lib/getch/filesystem/ext4/config.rb +0 -62
  126. data/lib/getch/filesystem/ext4/deps.rb +0 -24
  127. data/lib/getch/filesystem/ext4/format.rb +0 -31
  128. data/lib/getch/filesystem/ext4/mount.rb +0 -26
  129. data/lib/getch/filesystem/ext4/partition.rb +0 -55
  130. data/lib/getch/filesystem/ext4/void.rb +0 -44
  131. data/lib/getch/filesystem/lvm/config.rb +0 -44
  132. data/lib/getch/filesystem/lvm/deps.rb +0 -44
  133. data/lib/getch/filesystem/lvm/device.rb +0 -45
  134. data/lib/getch/filesystem/lvm/encrypt/config.rb +0 -74
  135. data/lib/getch/filesystem/lvm/encrypt/deps.rb +0 -49
  136. data/lib/getch/filesystem/lvm/encrypt/device.rb +0 -48
  137. data/lib/getch/filesystem/lvm/encrypt/format.rb +0 -35
  138. data/lib/getch/filesystem/lvm/encrypt/mount.rb +0 -27
  139. data/lib/getch/filesystem/lvm/encrypt/partition.rb +0 -84
  140. data/lib/getch/filesystem/lvm/encrypt.rb +0 -18
  141. data/lib/getch/filesystem/lvm/format.rb +0 -32
  142. data/lib/getch/filesystem/lvm/mount.rb +0 -26
  143. data/lib/getch/filesystem/lvm/partition.rb +0 -72
  144. data/lib/getch/filesystem/lvm/void.rb +0 -46
  145. data/lib/getch/filesystem/mount.rb +0 -63
  146. data/lib/getch/filesystem/partition.rb +0 -85
  147. data/lib/getch/filesystem/zfs/config.rb +0 -43
  148. data/lib/getch/filesystem/zfs/deps.rb +0 -67
  149. data/lib/getch/filesystem/zfs/device.rb +0 -66
  150. data/lib/getch/filesystem/zfs/encrypt/void.rb +0 -97
  151. data/lib/getch/filesystem/zfs/format.rb +0 -117
  152. data/lib/getch/filesystem/zfs/mount.rb +0 -47
  153. data/lib/getch/filesystem/zfs/partition.rb +0 -69
  154. data/lib/getch/filesystem/zfs/void.rb +0 -81
  155. data/lib/getch/gentoo/boot.rb +0 -64
  156. data/lib/getch/gentoo/chroot.rb +0 -75
  157. data/lib/getch/gentoo/config.rb +0 -167
  158. data/lib/getch/gentoo/stage.rb +0 -73
  159. data/lib/getch/void/boot.rb +0 -84
  160. data/lib/getch/void/chroot.rb +0 -56
  161. 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 < 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
@@ -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 Lvm
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/void'
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
@@ -3,7 +3,9 @@
3
3
  module Getch
4
4
  module FileSystem
5
5
  module Ext4
6
- class Device < Getch::FileSystem::Device
6
+ module Minimal
7
+ class Deps
8
+ end
7
9
  end
8
10
  end
9
11
  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