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,86 +1,93 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'cmdline'
4
+ require 'nito'
4
5
 
5
6
  module Getch
6
7
  module Gentoo
7
8
  class Sources
9
+ include NiTo
10
+
8
11
  def initialize
12
+ @log = Log.new
9
13
  @lsmod = `lsmod`.chomp
10
- @class_fs = Getch::select_fs
11
- @filesystem = @class_fs::Deps.new
14
+ x
15
+ end
16
+
17
+ protected
18
+
19
+ def x
20
+ bask
21
+ gen_cmdline
22
+ grub_mkconfig
23
+ use_flags
24
+ make
12
25
  end
13
26
 
14
27
  def bask
15
- puts ' ==> Hardening kernel...'
28
+ @log.info "Kernel hardening...\n"
16
29
  #Getch::Bask.new('10_kspp.config').cp
17
30
  Getch::Bask.new('11-kspp-gcc.config').cp
18
31
  Getch::Bask.new('12-kspp-x86_64.config').cp
19
32
  #Getch::Bask.new('20-clipos.config').cp
20
- #Getch::Bask.new('30-grsecurity.config').cp
33
+ Getch::Bask.new('30-grsecurity.config').cp
21
34
  #Getch::Bask.new('40-kconfig-hardened.config').cp
22
35
  Getch::Bask.new('50-blacklist.config').cp
23
36
  Getch::Bask.new('51-blacklist-madaidans.config').cp
24
37
  end
25
38
 
26
- def configs
27
- gen_cmdline
28
- grub_mkconfig unless Helpers.efi?
29
- end
30
-
31
39
  def gen_cmdline
32
40
  cmdline = CmdLine::Kernel.new(workdir: "#{MOUNTPOINT}/etc/kernel")
33
41
  cmdline.main
34
42
  end
35
43
 
36
44
  def grub_mkconfig
37
- file = "#{MOUNTPOINT}/etc/kernel/install.d/90-mkconfig.install"
45
+ return if Helpers.systemd? and Helpers.efi?
46
+
47
+ file = "#{OPTIONS[:mountpoint]}/etc/kernel/postinst.d/90-mkconfig.install"
38
48
  content = <<~SHELL
39
49
  #!/usr/bin/env sh
40
50
  set -o errexit
51
+
52
+ if ! hash grub-mkconfig ; then
53
+ exit 0
54
+ fi
41
55
  grub-mkconfig -o /boot/grub/grub.cfg
42
- exit 0
43
56
  SHELL
57
+ mkdir "#{OPTIONS[:mountpoint]}/etc/kernel/postinst.d"
44
58
  File.write file, content
45
59
  File.chmod 0755, file
46
60
  end
47
61
 
62
+ def use_flags
63
+ use = Getch::Gentoo::Use.new('sys-kernel/gentoo-kernel')
64
+ use.add('hardened')
65
+ end
66
+
67
+ # https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel#Alternative:_Using_distribution_kernels
48
68
  def make
49
- if Getch::OPTIONS[:fs] == 'lvm' ||
50
- Getch::OPTIONS[:fs] == 'zfs' ||
51
- Getch::OPTIONS[:encrypt]
52
- @filesystem.make
53
- else
54
- make_kernel
55
- end
69
+ Helpers.systemd? ?
70
+ Install.new('sys-kernel/installkernel-systemd-boot') :
71
+ Install.new('sys-kernel/installkernel-gentoo')
72
+
73
+ #Install.new 'sys-kernel/gentoo-kernel'
74
+ Install.new 'sys-kernel/gentoo-kernel-bin'
56
75
  end
57
76
 
58
77
  def load_modules
59
- install_wifi
78
+ wifi
60
79
  flash_mod
61
80
  end
62
81
 
63
82
  private
64
83
 
65
- def make_kernel
66
- puts 'Compiling kernel sources'
67
- Getch::Emerge.new('sys-kernel/gentoo-kernel').pkg!
68
- is_kernel = Dir.glob("#{MOUNTPOINT}/boot/vmlinuz-*")
69
- raise 'No kernel installed, compiling source fail...' if is_kernel == []
70
- end
71
-
72
84
  def ismatch?(arg)
73
85
  @lsmod.match?(/#{arg}/)
74
86
  end
75
87
 
76
- def install_wifi
88
+ def wifi
77
89
  return unless ismatch?('cfg80211')
78
90
 
79
- wifi_drivers
80
- Getch::Emerge.new('net-wireless/iwd').pkg!
81
- end
82
-
83
- def wifi_drivers
84
91
  conf = "#{MOUNTPOINT}/etc/modules-load.d/wifi.conf"
85
92
  File.delete(conf) if File.exist? conf
86
93
 
@@ -101,7 +108,6 @@ SHELL
101
108
  end
102
109
 
103
110
  def module_load(name, file)
104
- return unless name
105
111
  return unless ismatch?(name)
106
112
 
107
113
  File.write(file, "#{name}\n", mode: 'a')
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open-uri'
4
+ require 'open3'
5
+
6
+ module Getch
7
+ module Gentoo
8
+ class Tarball
9
+ def initialize
10
+ @log = Log.new
11
+ @mirror = 'https://mirror.rackspace.com/gentoo'
12
+ @release = release
13
+ @stage_file = OPTIONS[:musl] ?
14
+ "stage3-amd64-musl-#{@release}.tar.xz" :
15
+ "stage3-amd64-systemd-#{@release}.tar.xz"
16
+ end
17
+
18
+ def x
19
+ get_stage3
20
+ control_files
21
+ checksum
22
+ install
23
+ end
24
+
25
+ protected
26
+
27
+ def stage3
28
+ OPTIONS[:musl] ?
29
+ @mirror + '/releases/amd64/autobuilds/latest-stage3-amd64-musl.txt' :
30
+ @mirror + '/releases/amd64/autobuilds/latest-stage3-amd64-systemd.txt'
31
+ end
32
+
33
+ def release
34
+ URI.open(stage3) do |file|
35
+ file.read.match(/^[[:alnum:]]+/)
36
+ end
37
+ rescue Net::OpenTimeout => e
38
+ @log.fatal "Problem with DNS? #{e}"
39
+ end
40
+
41
+ def file
42
+ "#{@release}/#{@stage_file}"
43
+ end
44
+
45
+ def get_stage3
46
+ Dir.chdir OPTIONS[:mountpoint]
47
+ return if File.exist? @stage_file
48
+
49
+ @log.info "wget #{@stage_file}, please wait...\n"
50
+ Helpers.get_file_online(@mirror + '/releases/amd64/autobuilds/' + file, @stage_file)
51
+ end
52
+
53
+ def control_files
54
+ @log.info "Download other files..."
55
+ ['DIGESTS', 'asc', 'CONTENTS.gz'].each do |f|
56
+ Helpers.get_file_online("#{@mirror}/releases/amd64/autobuilds/#{file}.#{f}", "#{@stage_file}.#{f}")
57
+ end
58
+ @log.result_ok
59
+ end
60
+
61
+ def checksum
62
+ @log.info 'Checking SHA512 checksum...'
63
+ command = "awk '/SHA512 HASH/{getline;print}' #{@stage_file}.DIGESTS | sha512sum --check"
64
+ _, stderr, status = Open3.capture3(command)
65
+ if status.success? then
66
+ @log.result_ok
67
+ else
68
+ cleaning
69
+ @log.fatal "Problem with the checksum, stderr\n#{stderr}"
70
+ end
71
+ end
72
+
73
+ def install
74
+ decompress
75
+ cleaning
76
+ end
77
+
78
+ private
79
+
80
+ # https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Stage
81
+ def decompress
82
+ cmd = "tar xpf #{@stage_file} --xattrs-include=\'*.*\' --numeric-owner"
83
+ Getch::Command.new(cmd)
84
+ end
85
+
86
+ def cleaning
87
+ Dir.glob('stage3-amd64-*').each { |f| File.delete(f) }
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,34 @@
1
+ module Getch
2
+ module Gentoo
3
+ class Terraform
4
+ def initialize
5
+ x
6
+ end
7
+
8
+ protected
9
+
10
+ def x
11
+ Gentoo::Sources.new
12
+ install_pkgs
13
+ emerge_deep
14
+ end
15
+
16
+ def install_pkgs
17
+ @pkgs = 'app-portage/gentoolkit'
18
+ @pkgs << ' app-admin/sudo'
19
+ @pkgs << ' app-editors/vim'
20
+ @pkgs << ' net-firewall/iptables'
21
+ @pkgs << ' net-wireless/iwd'
22
+ @pkgs << ' net-misc/dhcpcd' unless Helpers.systemd?
23
+ @pkgs << ' sys-kernel/linux-firmware'
24
+ @pkgs << ' sys-firmware/intel-microcode'
25
+ @pkgs << ' sys-fs/dosfstools' if Helpers.efi?
26
+ Install.new(@pkgs)
27
+ end
28
+
29
+ def emerge_deep
30
+ ChrootOutput.new('emerge --deep --newuse @world')
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nito'
4
+
5
+ module Getch
6
+ module Gentoo
7
+ class Update
8
+ include NiTo
9
+
10
+ def initialize
11
+ @log = Log.new
12
+ x
13
+ end
14
+
15
+ protected
16
+
17
+ def x
18
+ sync
19
+ add_musl_repo if OPTIONS[:musl]
20
+ update
21
+ end
22
+
23
+ private
24
+
25
+ def sync
26
+ gentoo_conf = "#{OPTIONS[:mountpoint]}/etc/portage/repos.conf/gentoo.conf"
27
+ @log.info "Synchronize index, please waiting...\n"
28
+ ChrootOutput.new('emaint sync --auto')
29
+ sed gentoo_conf, /^sync-type/, 'sync-type = rsync'
30
+ end
31
+
32
+ def add_musl_repo
33
+ Install.new('dev-vcs/git')
34
+
35
+ file = "#{OPTIONS[:mountpoint]}/etc/portage/repos.conf/musl.conf"
36
+ content = <<~CONF
37
+ [musl]
38
+ location = /var/db/repos/musl
39
+ sync-type = git
40
+ sync-uri = https://github.com/gentoo/musl.git
41
+ auto-sync = Yes
42
+ CONF
43
+ File.write file, "#{content}\n"
44
+
45
+ ChrootOutput.new('emaint sync -r musl')
46
+ end
47
+
48
+ def update
49
+ cmd = 'emerge --update --deep --newuse @world'
50
+ ChrootOutput.new(cmd)
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,13 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'nito'
4
+
3
5
  module Getch
4
6
  module Gentoo
5
7
  class Use
8
+ include NiTo
9
+
6
10
  def initialize(pkg = nil)
7
- @use_dir = "#{MOUNTPOINT}/etc/portage/package.use"
11
+ @use_dir = "#{OPTIONS[:mountpoint]}/etc/portage/package.use"
8
12
  @pkg = pkg
9
13
  @file = @pkg ? @pkg.match(/[\w]+$/) : nil
10
- @make = "#{MOUNTPOINT}/etc/portage/make.conf"
14
+ @make = "#{OPTIONS[:mountpoint]}/etc/portage/make.conf"
11
15
  end
12
16
 
13
17
  def add(*flags)
@@ -24,15 +28,14 @@ module Getch
24
28
 
25
29
  def write
26
30
  content = "#{@pkg} #{@flags}\n"
27
- File.write("#{@use_dir}/#{@file}", content, mode: 'w')
31
+ echo "#{@use_dir}/#{@file}", content
28
32
  end
29
33
 
30
34
  def write_global
31
35
  list = []
32
- @flags.each { |f| list << f unless Helpers.grep?(@make, /#{f}/) }
36
+ @flags.each { |f| list << f unless grep?(@make, f) }
33
37
  use = list.join(' ')
34
- line = "USE=\"${USE} #{use}\"\n"
35
- File.write(@make, line, mode: 'a')
38
+ echo_a @make, "USE=\"${USE} #{use}\""
36
39
  end
37
40
  end
38
41
  end
@@ -4,13 +4,15 @@ module Getch
4
4
  module Gentoo
5
5
  class UseFlag
6
6
  def initialize
7
- @efi = Helpers.efi?
7
+ x
8
8
  end
9
9
 
10
- def apply
10
+ protected
11
+
12
+ def x
13
+ dist_kernel
11
14
  systemd
12
15
  pam
13
- kernel
14
16
  kmod
15
17
  grub
16
18
  zfs
@@ -20,41 +22,40 @@ module Getch
20
22
 
21
23
  private
22
24
 
25
+ # https://wiki.gentoo.org/wiki/Project:Distribution_Kernel#Trying_it_out
26
+ def dist_kernel
27
+ use = Getch::Gentoo::Use.new
28
+ use.add_global('dist-kernel')
29
+ end
30
+
23
31
  def systemd
32
+ return unless Helpers.systemd?
33
+
24
34
  flags = []
25
35
  use = Getch::Gentoo::Use.new('sys-apps/systemd')
26
36
  flags << 'dns-over-tls'
27
- flags << 'gnuefi' if @efi
37
+ flags << 'gnuefi' if Helpers.efi?
28
38
  use.add(flags)
29
39
  end
30
40
 
31
41
  def pam
32
42
  flags = []
33
43
  use = Getch::Gentoo::Use.new('sys-auth/pambase')
34
- flags << '-passwdqc'
35
- flags << 'pwquality'
36
44
  flags << 'sha512'
37
45
  use.add(flags)
38
46
  end
39
47
 
40
- def kernel
41
- use = Getch::Gentoo::Use.new('sys-kernel/gentoo-kernel')
42
- use.add('hardened')
43
- end
44
-
45
48
  def kmod
46
49
  use = Getch::Gentoo::Use.new('sys-apps/kmod')
47
50
  use.add('zstd', 'lzma')
48
51
  end
49
52
 
50
53
  def grub
51
- return if @efi
52
-
53
54
  flags = []
54
55
  use = Getch::Gentoo::Use.new('sys-boot/grub')
55
- flags << '-grub_platforms_efi-64'
56
- flags << 'libzfs' if Getch::OPTIONS[:fs] == 'zfs'
57
- flags << 'device-mapper' if Getch::OPTIONS[:fs] == 'lvm'
56
+ flags << '-grub_platforms_efi-64' unless Helpers.efi?
57
+ flags << 'libzfs' if OPTIONS[:fs] == 'zfs'
58
+ flags << 'device-mapper' if OPTIONS[:fs] == 'lvm' or OPTIONS[:encrypt]
58
59
  use.add(flags)
59
60
  end
60
61
 
@@ -65,10 +66,6 @@ module Getch
65
66
  use.add('rootfs')
66
67
  use = Getch::Gentoo::Use.new('sys-fs/zfs')
67
68
  use.add('rootfs')
68
-
69
- # https://wiki.gentoo.org/wiki/Project:Distribution_Kernel
70
- use = Getch::Gentoo::Use.new
71
- use.add_global('dist-kernel')
72
69
  end
73
70
 
74
71
  def lvm
data/lib/getch/gentoo.rb CHANGED
@@ -1,85 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'gentoo/stage'
4
- require_relative 'gentoo/config'
5
- require_relative 'gentoo/chroot'
6
- require_relative 'gentoo/bootloader'
7
3
  require_relative 'gentoo/sources'
8
- require_relative 'gentoo/boot'
9
4
  require_relative 'gentoo/use'
10
5
  require_relative 'gentoo/use_flag'
11
6
 
12
7
  module Getch
13
8
  module Gentoo
14
- class Main
15
- def initialize
16
- @state = Getch::States.new
17
- end
18
-
19
- def stage3
20
- return if STATES[:gentoo_base]
21
-
22
- stage = Getch::Gentoo::Stage.new
23
- stage.get_stage3
24
- stage.control_files
25
- stage.checksum
26
- @state.stage3
27
- end
28
-
29
- def config
30
- return if STATES[:gentoo_config]
31
-
32
- config = Getch::Gentoo::Config.new
33
- config.portage
34
- config.portage_fs
35
- config.portage_bashrc
36
- config.repo
37
- config.network
38
- config.systemd
39
- config.hostname
40
- @state.config
41
- end
42
-
43
- def chroot
44
- return if STATES[:gentoo_update]
45
-
46
- chroot = Getch::Gentoo::Chroot.new
47
- chroot.update
48
- chroot.cpuflags
49
- chroot.systemd
50
-
51
- flags = Getch::Gentoo::UseFlag.new
52
- flags.apply
53
-
54
- chroot.world
55
- chroot.kernel_license
56
- chroot.install_pkgs
57
- @state.update
58
- end
59
-
60
- def bootloader
61
- return if STATES[:gentoo_bootloader]
62
-
63
- bootloader = Getch::Gentoo::Bootloader.new
64
- bootloader.start
65
- @state.bootloader
66
- end
67
-
68
- def kernel
69
- return if STATES[:gentoo_kernel]
70
-
71
- source = Getch::Gentoo::Sources.new
72
- source.bask
73
- source.configs
74
- source.make
75
- source.load_modules
76
- @state.kernel
77
- end
78
-
79
- def boot
80
- boot = Getch::Gentoo::Boot.new
81
- boot.start
82
- end
83
- end
84
9
  end
85
10
  end
11
+
12
+ require_relative 'gentoo/tarball'
13
+ require_relative 'gentoo/pre_config'
14
+ require_relative 'gentoo/update'
15
+ require_relative 'gentoo/post_config'
16
+ require_relative 'gentoo/terraform'
17
+ require_relative 'gentoo/services'
18
+ require_relative 'gentoo/bootloader'
19
+ require_relative 'gentoo/finalize'
data/lib/getch/guard.rb CHANGED
@@ -16,7 +16,7 @@ module Getch
16
16
  module Guard
17
17
  def self.disk(name)
18
18
  raise InvalidDisk, 'No disk.' unless name
19
- raise InvalidDisk, "Bad device name #{name}." unless name.match(/^sd[a-z]{1}$/)
19
+ raise InvalidDisk, "Bad device name #{name}." unless name.match(/^?d[a-z]{1}$/)
20
20
  raise InvalidDisk, "Disk /dev/#{name} no found." unless File.exist? "/dev/#{name}"
21
21
 
22
22
  name
@@ -27,8 +27,8 @@ module Getch
27
27
 
28
28
  def self.format(name)
29
29
  raise InvalidFormat, 'No format specified.' unless name
30
- raise InvalidFormat, "Format #{name} not yet available." if name.match(/btrfs/)
31
- raise InvalidFormat, "Format #{name} not supported." unless name.match(/zfs|lvm|ext4/)
30
+ raise InvalidFormat, "Format #{name} not yet available." if name.match(/btrfs|xfs/)
31
+ raise InvalidFormat, "Format #{name} not supported." unless name.match(/zfs|ext4/)
32
32
 
33
33
  name
34
34
  rescue InvalidFormat => e