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,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