getch 0.1.3 → 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 +75 -35
  4. data/assets/network-stack.conf +63 -0
  5. data/assets/system.conf +38 -0
  6. data/bin/getch +14 -4
  7. data/lib/clean.rb +149 -0
  8. data/lib/cmdline.rb +128 -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 +94 -124
  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 +11 -0
  37. data/lib/getch/config.rb +19 -53
  38. data/lib/getch/device.rb +67 -0
  39. data/lib/getch/filesystem/ext4/encrypt/config.rb +11 -68
  40. data/lib/getch/filesystem/ext4/encrypt/deps.rb +17 -25
  41. data/lib/getch/filesystem/ext4/encrypt/device.rb +13 -5
  42. data/lib/getch/filesystem/ext4/encrypt/format.rb +8 -15
  43. data/lib/getch/filesystem/ext4/encrypt/mount.rb +9 -13
  44. data/lib/getch/filesystem/ext4/encrypt/partition.rb +10 -82
  45. data/lib/getch/filesystem/ext4/encrypt/void.rb +63 -0
  46. data/lib/getch/filesystem/ext4/encrypt.rb +4 -0
  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/ext4/hybrid/void.rb +62 -0
  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} +8 -3
  62. data/lib/getch/filesystem/ext4/minimal/config.rb +25 -0
  63. data/lib/getch/filesystem/ext4/{device.rb → minimal/deps.rb} +4 -3
  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 +9 -6
  70. data/lib/getch/filesystem/zfs/encrypt/config.rb +12 -57
  71. data/lib/getch/filesystem/zfs/encrypt/deps.rb +7 -86
  72. data/lib/getch/filesystem/zfs/encrypt/device.rb +9 -45
  73. data/lib/getch/filesystem/zfs/encrypt/format.rb +8 -90
  74. data/lib/getch/filesystem/zfs/encrypt/mount.rb +16 -34
  75. data/lib/getch/filesystem/zfs/encrypt/partition.rb +8 -50
  76. data/lib/getch/filesystem/zfs/encrypt.rb +4 -0
  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 +3 -6
  85. data/lib/getch/filesystem.rb +2 -6
  86. data/lib/getch/gentoo/bootloader.rb +47 -0
  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 +82 -52
  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 +11 -12
  96. data/lib/getch/gentoo/use_flag.rb +74 -52
  97. data/lib/getch/gentoo.rb +11 -63
  98. data/lib/getch/guard.rb +71 -0
  99. data/lib/getch/helpers.rb +128 -48
  100. data/lib/getch/log.rb +91 -26
  101. data/lib/getch/options.rb +79 -40
  102. data/lib/getch/states.rb +37 -10
  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/tarball.rb +89 -0
  111. data/lib/getch/void/terraform.rb +28 -0
  112. data/lib/getch/void/update.rb +33 -0
  113. data/lib/getch/void.rb +15 -0
  114. data/lib/getch.rb +104 -92
  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 +140 -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 +96 -45
  124. metadata.gz.sig +0 -0
  125. data/.gitignore +0 -2
  126. data/CHANGELOG.md +0 -90
  127. data/Rakefile +0 -21
  128. data/bin/setup.sh +0 -90
  129. data/getch.gemspec +0 -25
  130. data/lib/getch/filesystem/clean.rb +0 -51
  131. data/lib/getch/filesystem/device.rb +0 -61
  132. data/lib/getch/filesystem/ext4/config.rb +0 -58
  133. data/lib/getch/filesystem/ext4/deps.rb +0 -22
  134. data/lib/getch/filesystem/ext4/format.rb +0 -28
  135. data/lib/getch/filesystem/ext4/mount.rb +0 -23
  136. data/lib/getch/filesystem/ext4/partition.rb +0 -52
  137. data/lib/getch/filesystem/lvm/config.rb +0 -59
  138. data/lib/getch/filesystem/lvm/deps.rb +0 -42
  139. data/lib/getch/filesystem/lvm/device.rb +0 -43
  140. data/lib/getch/filesystem/lvm/encrypt/config.rb +0 -71
  141. data/lib/getch/filesystem/lvm/encrypt/deps.rb +0 -46
  142. data/lib/getch/filesystem/lvm/encrypt/device.rb +0 -46
  143. data/lib/getch/filesystem/lvm/encrypt/format.rb +0 -32
  144. data/lib/getch/filesystem/lvm/encrypt/mount.rb +0 -25
  145. data/lib/getch/filesystem/lvm/encrypt/partition.rb +0 -80
  146. data/lib/getch/filesystem/lvm/encrypt.rb +0 -15
  147. data/lib/getch/filesystem/lvm/format.rb +0 -29
  148. data/lib/getch/filesystem/lvm/mount.rb +0 -23
  149. data/lib/getch/filesystem/lvm/partition.rb +0 -69
  150. data/lib/getch/filesystem/mount.rb +0 -56
  151. data/lib/getch/filesystem/partition.rb +0 -77
  152. data/lib/getch/filesystem/zfs/config.rb +0 -57
  153. data/lib/getch/filesystem/zfs/deps.rb +0 -95
  154. data/lib/getch/filesystem/zfs/device.rb +0 -58
  155. data/lib/getch/filesystem/zfs/format.rb +0 -114
  156. data/lib/getch/filesystem/zfs/mount.rb +0 -48
  157. data/lib/getch/filesystem/zfs/partition.rb +0 -64
  158. data/lib/getch/gentoo/boot.rb +0 -109
  159. data/lib/getch/gentoo/chroot.rb +0 -77
  160. data/lib/getch/gentoo/config.rb +0 -129
  161. data/lib/getch/gentoo/stage.rb +0 -74
@@ -1,62 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sgdisk'
4
+
1
5
  module Getch
2
6
  module FileSystem
3
7
  module Zfs
4
8
  module Encrypt
5
- class Partition < Getch::FileSystem::Zfs::Encrypt::Device
9
+ class Partition
6
10
  def initialize
7
- super
8
- @state = Getch::States.new()
9
- @clean = Getch::FileSystem::Clean
10
- @partition = Getch::FileSystem::Partition.new
11
- @log = Getch::Log.new()
12
- run
13
- end
14
-
15
- def run
16
- return if STATES[:partition ]
17
- @clean.old_zpool
18
- @clean.struct(@disk, @cache_disk, @home_disk)
19
- @clean.hdd(@disk, @cache_disk, @home_disk)
20
- partition
21
- cache
22
- @state.partition
11
+ x
23
12
  end
24
13
 
25
14
  private
26
15
 
27
- def partition
28
- if Helpers::efi?
29
- @partition.efi(@dev_esp)
30
- @partition.swap(@dev_swap)
31
- @partition.root(@dev_root, "BF00") if @root_part != 1
32
- else
33
- @partition.gpt(@dev_gpt)
34
- @partition.boot(@dev_boot)
35
- @partition.swap(@dev_swap)
36
- @partition.root(@dev_root, "BF00") if @root_part != 1
37
- end
38
- end
39
-
40
- def cache
41
- if @dev_log
42
- exec("sgdisk -n2:0:+4G -t2:BF07 #{cache_disk}")
43
- end
44
- if @dev_cache
45
- exec("sgdisk -n3:0:0 -t3:BF08 #{cache_disk}")
46
- end
47
- end
48
-
49
- # Partition_efi
50
- # /efi - EFI system partition - 260MB
51
- # / - Root
52
-
53
- # Partition_bios
54
- # None - Bios Boot Partition - 1MiB
55
- # /boot - Boot - 8300
56
- # / - Root
57
-
58
- def exec(cmd)
59
- Helpers::sys(cmd)
16
+ def x
17
+ Sgdisk::Zfs.new(DEVS)
60
18
  end
61
19
  end
62
20
  end
@@ -1,7 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Getch
2
4
  module FileSystem
3
5
  module Zfs
4
6
  module Encrypt
7
+ def self.end
8
+ end
5
9
  end
6
10
  end
7
11
  end
@@ -0,0 +1,37 @@
1
+ require 'fstab'
2
+ require 'dracut'
3
+
4
+ module Getch
5
+ module FileSystem
6
+ module Zfs
7
+ module Minimal
8
+ class Config
9
+ def initialize
10
+ @mountpoint = OPTIONS[:mountpoint]
11
+ @zfs = OPTIONS[:zfs_name] ||= 'pool'
12
+ @os = OPTIONS[:os]
13
+ x
14
+ end
15
+
16
+ private
17
+
18
+ def x
19
+ Fstab::Zfs.new(DEVS, OPTIONS).generate
20
+ Dracut::Zfs.new(DEVS, OPTIONS).generate
21
+ grub_broken_root
22
+ end
23
+
24
+ # https://wiki.archlinux.org/title/Install_Arch_Linux_on_ZFS#Using_GRUB_for_EFI/BIOS
25
+ def grub_broken_root
26
+ return unless Helpers.grub?
27
+
28
+ file = "#{@mountpoint}/etc/default/grub"
29
+ content = "GRUB_CMDLINE_LINUX=\"$GRUB_CMDLINE_LINUX"
30
+ content << " root=ZFS=r#{@zfs}/ROOT/#{@os}\""
31
+ NiTo.echo_a file, content
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nito'
4
+
5
+ module Getch
6
+ module FileSystem
7
+ module Zfs
8
+ module Minimal
9
+ class Deps
10
+ include NiTo
11
+
12
+ def initialize
13
+ @mountpoint = OPTIONS[:mountpoint]
14
+ @zfs = OPTIONS[:zfs_name] ||= 'pool'
15
+ @os = OPTIONS[:os]
16
+ x
17
+ end
18
+
19
+ protected
20
+
21
+ def x
22
+ unstable_zfs
23
+ install_deps
24
+ hostid
25
+ zfs_mountpoint
26
+ sleep 6
27
+ zfs_set
28
+ zed_update_path
29
+ Log.new.fatal('zed - no pool') unless grep?("#{@mountpoint}/etc/zfs/zfs-list.cache/r#{@zfs}", "r#{@zfs}")
30
+ end
31
+
32
+ private
33
+
34
+ def zfs_set
35
+ Command.new("zfs set canmount=noauto b#{@zfs}/BOOT/#{@os}") if DEVS[:boot]
36
+ Command.new("zfs set canmount=noauto r#{@zfs}/ROOT/#{@os}")
37
+ Command.new("zpool set bootfs=r#{@zfs}/ROOT/#{@os} r#{@zfs}")
38
+ end
39
+
40
+ def unstable_zfs
41
+ return unless OPTIONS[:os] == 'gentoo'
42
+
43
+ conf = "#{@mountpoint}/etc/portage/package.accept_keywords/zfs"
44
+ data = [
45
+ 'sys-fs/zfs-kmod',
46
+ 'sys-fs/zfs'
47
+ ]
48
+ File.write(conf, data.join("\n"), mode: 'w')
49
+ end
50
+
51
+ def install_deps
52
+ case OPTIONS[:os]
53
+ when 'gentoo' then Install.new('sys-fs/zfs')
54
+ when 'void' then Install.new('zfs')
55
+ end
56
+ end
57
+
58
+ # See: https://wiki.archlinux.org/index.php/ZFS#Using_zfs-mount-generator
59
+ def zfs_mountpoint
60
+ exec("zpool set cachefile=/etc/zfs/zpool.cache r#{@zfs}")
61
+ exec("zpool set cachefile=/etc/zfs/zpool.cache b#{@zfs}") if DEVS[:boot]
62
+ exec('ln -fs /usr/libexec/zfs/zed.d/history_event-zfs-list-cacher.sh /etc/zfs/zed.d/')
63
+ add_service
64
+ mkdir "#{@mountpoint}/etc/zfs/zfs-list.cache"
65
+ touch "#{@mountpoint}/etc/zfs/zfs-list.cache/b#{@zfs}" if DEVS[:boot]
66
+ touch "#{@mountpoint}/etc/zfs/zfs-list.cache/r#{@zfs}"
67
+ end
68
+
69
+ def zed_update_path
70
+ Dir.glob("#{@mountpoint}/etc/zfs/zfs-list.cache/*").each do |f|
71
+ Command.new('sed', '-Ei', "\"s|#{@mountpoint}/?|/|\"", f)
72
+ end
73
+ end
74
+
75
+ def hostid
76
+ exec 'zgenhostid -f $(hostid)'
77
+ end
78
+
79
+ def add_service
80
+ systemd
81
+ openrc
82
+ runit
83
+ end
84
+
85
+ def systemd
86
+ Helpers.systemd? || return
87
+
88
+ exec('systemctl enable zfs-import-cache')
89
+ exec('systemctl enable zfs-import.target')
90
+ exec('systemctl enable zfs-zed.service')
91
+ exec('systemctl enable zfs.target')
92
+ fork_d('zed -F')
93
+ end
94
+
95
+ def openrc
96
+ Helpers.openrc? || return
97
+
98
+ exec('rc-update add zfs-import boot')
99
+ exec('rc-update add zfs-mount boot')
100
+ exec('rc-update add zfs-zed default')
101
+ fork_d('zed -F')
102
+ end
103
+
104
+ def runit
105
+ Helpers.runit? || return
106
+
107
+ exec('ln -fs /etc/sv/zed /etc/runit/runsvdir/default/')
108
+ fork_d('/etc/sv/zed/run')
109
+ end
110
+
111
+ def fork_d(cmd)
112
+ job = fork do
113
+ Getch::Chroot.new(cmd)
114
+ end
115
+ Process.detach(job)
116
+ puts
117
+ end
118
+
119
+ def exec(cmd)
120
+ Getch::Chroot.new(cmd)
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'devs'
4
+
5
+ module Getch
6
+ module FileSystem
7
+ module Zfs
8
+ module Minimal
9
+ class Device
10
+ def initialize
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)
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 Zfs
8
+ module Minimal
9
+ class Format
10
+ def initialize
11
+ x
12
+ end
13
+
14
+ private
15
+
16
+ def x
17
+ Mkfs::Zfs.new(DEVS, OPTIONS)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mountfs'
4
+
5
+ module Getch
6
+ module FileSystem
7
+ module Zfs
8
+ module Minimal
9
+ class Mount
10
+ def initialize
11
+ x
12
+ end
13
+
14
+ def x
15
+ MountFs::Zfs.new(DEVS, OPTIONS)
16
+ #exec("zpool import -N -d #{@import} -R #{MOUNTPOINT} #{@pool_name}")
17
+ #exec("zpool import -f -N -d #{@import} -R #{MOUNTPOINT} #{@boot_pool_name}") if @dev_boot
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sgdisk'
4
+
5
+ module Getch
6
+ module FileSystem
7
+ module Zfs
8
+ module Minimal
9
+ class Partition
10
+ def initialize
11
+ x
12
+ end
13
+
14
+ private
15
+
16
+ def x
17
+ Sgdisk::Zfs.new(DEVS)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Getch
4
+ module FileSystem
5
+ module Zfs
6
+ module Minimal
7
+ def self.end
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+
14
+ require_relative 'minimal/device'
15
+ require_relative 'minimal/partition'
16
+ require_relative 'minimal/format'
17
+ require_relative 'minimal/mount'
18
+ require_relative 'minimal/config'
19
+ require_relative 'minimal/deps'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Getch
2
4
  module FileSystem
3
5
  module Zfs
@@ -5,10 +7,5 @@ module Getch
5
7
  end
6
8
  end
7
9
 
8
- require_relative 'zfs/device'
9
- require_relative 'zfs/partition'
10
- require_relative 'zfs/format'
11
- require_relative 'zfs/mount'
12
- require_relative 'zfs/config'
13
- require_relative 'zfs/deps'
10
+ require_relative 'zfs/minimal'
14
11
  require_relative 'zfs/encrypt'
@@ -1,13 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Getch
2
4
  module FileSystem
3
5
  end
4
6
  end
5
7
 
6
- require_relative 'filesystem/device'
7
- require_relative 'filesystem/clean'
8
- require_relative 'filesystem/partition'
9
- require_relative 'filesystem/mount'
10
-
11
8
  require_relative 'filesystem/ext4'
12
- require_relative 'filesystem/lvm'
13
9
  require_relative 'filesystem/zfs'
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Getch
4
+ module Gentoo
5
+ class Bootloader
6
+ def initialize
7
+ @esp = '/efi'
8
+ @boot = DEVS[:boot] ||= nil
9
+ @encrypt = OPTIONS[:encrypt] ||= false
10
+ end
11
+
12
+ # Dracut is used by sys-kernel/gentoo-kernel
13
+ def dependencies
14
+ Install.new('app-shells/dash')
15
+ if Helpers.systemd? and Helpers.efi?
16
+ Log.new.info "Systemd-boot alrealy installed...\n"
17
+ else
18
+ ChrootOutput.new('emerge --update --newuse sys-boot/grub')
19
+ end
20
+ end
21
+
22
+ def install
23
+ Helpers.grub? ?
24
+ Config::Grub.new :
25
+ bootctl
26
+
27
+ #ChrootOutput.new('emerge --config sys-kernel/gentoo-kernel')
28
+ ChrootOutput.new('emerge --config sys-kernel/gentoo-kernel-bin')
29
+ end
30
+
31
+ def bootctl
32
+ @boot ?
33
+ with_boot :
34
+ Chroot.new("bootctl --path #{@esp} install")
35
+ end
36
+
37
+ # We need to umount the encrypted /boot first
38
+ # https://github.com/systemd/systemd/issues/16151
39
+ def with_boot
40
+ boot = @encrypt ? '/dev/mapper/boot-luks' : "/dev/#{DEVS[:boot]}"
41
+ NiTo.umount "#{OPTIONS[:mountpoint]}/boot"
42
+ Chroot.new("bootctl --path #{@esp} install")
43
+ NiTo.mount boot, "#{OPTIONS[:mountpoint]}/boot"
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Getch
4
+ module Gentoo
5
+ class Finalize
6
+ def initialize
7
+ x
8
+ end
9
+
10
+ protected
11
+
12
+ def x
13
+ accounts
14
+ end
15
+
16
+ private
17
+
18
+ def accounts
19
+ account = Config::Account.new
20
+ account.root
21
+ account.new_user
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nito'
4
+
5
+ module Getch
6
+ module Gentoo
7
+ class PostConfig
8
+ include NiTo
9
+
10
+ def initialize
11
+ @make = "#{OPTIONS[:mountpoint]}/etc/portage/make.conf"
12
+ x
13
+ end
14
+
15
+ protected
16
+
17
+ def x
18
+ Getch::Config::Locale.new
19
+ Getch::Config::Keymap.new
20
+ Getch::Config::TimeZone.new
21
+ cpuflags
22
+ Gentoo::UseFlag.new
23
+ grub
24
+ end
25
+
26
+ protected
27
+
28
+ def cpuflags
29
+ conf = "#{OPTIONS[:mountpoint]}/etc/portage/package.use/00cpuflags"
30
+ Install.new('app-portage/cpuid2cpuflags')
31
+ cpuflags = Chroot.new('cpuid2cpuflags')
32
+ File.write(conf, "*/* #{cpuflags}\n")
33
+ end
34
+
35
+ def grub
36
+ grub_pc = Helpers.efi? ? 'GRUB_PLATFORMS="efi-64"' : 'GRUB_PLATFORMS="pc"'
37
+ echo_a "#{OPTIONS[:mountpoint]}/etc/portage/make.conf", grub_pc
38
+ end
39
+
40
+ # https://wiki.gentoo.org/wiki/Signed_kernel_module_support
41
+ def portage_bashrc
42
+ conf = "#{MOUNTPOINT}/etc/portage/bashrc"
43
+ content = %q{
44
+ function pre_pkg_preinst() {
45
+ # This hook signs any out-of-tree kernel modules.
46
+ if [[ "$(type -t linux-mod_pkg_preinst)" != "function" ]]; then
47
+ # The package does not seem to install any kernel modules.
48
+ return
49
+ fi
50
+ # Get the signature algorithm used by the kernel.
51
+ local module_sig_hash="$(grep -Po '(?<=CONFIG_MODULE_SIG_HASH=").*(?=")' "${KERNEL_DIR}/.config")"
52
+ # Get the key file used by the kernel.
53
+ local module_sig_key="$(grep -Po '(?<=CONFIG_MODULE_SIG_KEY=").*(?=")' "${KERNEL_DIR}/.config")"
54
+ module_sig_key="${module_sig_key:-certs/signing_key.pem}"
55
+ # Path to the key file or PKCS11 URI
56
+ if [[ "${module_sig_key#pkcs11:}" == "${module_sig_key}" && "${module_sig_key#/}" == "${module_sig_key}" ]]; then
57
+ local key_path="${KERNEL_DIR}/${module_sig_key}"
58
+ else
59
+ local key_path="${module_sig_key}"
60
+ fi
61
+ # Certificate path
62
+ local cert_path="${KERNEL_DIR}/certs/signing_key.x509"
63
+ # Sign all installed modules before merging.
64
+ find "${D%/}/${INSDESTTREE#/}/" -name "*.ko" -exec "${KERNEL_DIR}/scripts/sign-file" "${module_sig_hash}" "${key_path}" "${cert_path}" '{}' \;
65
+ }
66
+ }
67
+
68
+ f = File.new(conf, 'w')
69
+ f.write("#{content}\n")
70
+ f.chmod(0700)
71
+ f.close
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nito'
4
+
5
+ module Getch
6
+ module Gentoo
7
+ class PreConfig
8
+ include NiTo
9
+
10
+ def initialize
11
+ x
12
+ end
13
+
14
+ private
15
+
16
+ def x
17
+ Getch::Config::Portage.new
18
+ Getch::Config::Locale.new
19
+ Getch::Config::PreNetwork.new
20
+ github
21
+ end
22
+
23
+ # Trouble to find host github
24
+ def github
25
+ github = check_ip 'github.com'
26
+ codeload = check_ip 'codeload.github.com'
27
+ echo_a "#{OPTIONS[:mountpoint]}/etc/hosts", "#{github} github.com"
28
+ echo_a "#{OPTIONS[:mountpoint]}/etc/hosts", "#{codeload} codeload.github.com"
29
+ end
30
+
31
+ def check_ip(host)
32
+ ip = `ping -c1 #{host}`.match(/\([0-9]*.[0-9]*.[0-9]*.[0-9]*\)/)
33
+ ip[0].tr('()','')
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Getch
4
+ module Gentoo
5
+ class Services
6
+ def initialize
7
+ x
8
+ end
9
+
10
+ protected
11
+
12
+ def x
13
+ Config::Iwd.new
14
+ Config::Dhcp.new
15
+ end
16
+ end
17
+ end
18
+ end