getch 0.1.0 → 0.1.6
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +95 -22
- data/assets/network-stack.conf +63 -0
- data/bin/getch +12 -4
- data/lib/getch.rb +116 -66
- data/lib/getch/command.rb +19 -5
- data/lib/getch/config.rb +42 -0
- data/lib/getch/config/gentoo.rb +59 -0
- data/lib/getch/config/void.rb +49 -0
- data/lib/getch/filesystem.rb +5 -0
- data/lib/getch/filesystem/.mount.rb.swp +0 -0
- data/lib/getch/filesystem/clean.rb +58 -0
- data/lib/getch/filesystem/device.rb +61 -0
- data/lib/getch/filesystem/ext4.rb +1 -0
- data/lib/getch/filesystem/ext4/config.rb +8 -9
- data/lib/getch/filesystem/ext4/device.rb +2 -7
- data/lib/getch/filesystem/ext4/encrypt.rb +1 -0
- data/lib/getch/filesystem/ext4/encrypt/config.rb +8 -9
- data/lib/getch/filesystem/ext4/encrypt/deps.rb +3 -19
- data/lib/getch/filesystem/ext4/encrypt/device.rb +3 -8
- data/lib/getch/filesystem/ext4/encrypt/format.rb +3 -6
- data/lib/getch/filesystem/ext4/encrypt/mount.rb +5 -43
- data/lib/getch/filesystem/ext4/encrypt/partition.rb +29 -54
- data/lib/getch/filesystem/ext4/encrypt/void.rb +100 -0
- data/lib/getch/filesystem/ext4/format.rb +4 -6
- data/lib/getch/filesystem/ext4/mount.rb +7 -46
- data/lib/getch/filesystem/ext4/partition.rb +16 -39
- data/lib/getch/filesystem/ext4/void.rb +43 -0
- data/lib/getch/filesystem/lvm.rb +1 -0
- data/lib/getch/filesystem/lvm/config.rb +11 -15
- data/lib/getch/filesystem/lvm/deps.rb +4 -19
- data/lib/getch/filesystem/lvm/device.rb +33 -9
- data/lib/getch/filesystem/lvm/encrypt.rb +1 -0
- data/lib/getch/filesystem/lvm/encrypt/config.rb +9 -12
- data/lib/getch/filesystem/lvm/encrypt/deps.rb +4 -21
- data/lib/getch/filesystem/lvm/encrypt/device.rb +33 -9
- data/lib/getch/filesystem/lvm/encrypt/format.rb +3 -4
- data/lib/getch/filesystem/lvm/encrypt/mount.rb +7 -47
- data/lib/getch/filesystem/lvm/encrypt/partition.rb +30 -38
- data/lib/getch/filesystem/lvm/encrypt/void.rb +100 -0
- data/lib/getch/filesystem/lvm/format.rb +12 -8
- data/lib/getch/filesystem/lvm/mount.rb +7 -46
- data/lib/getch/filesystem/lvm/partition.rb +19 -31
- data/lib/getch/filesystem/lvm/void.rb +45 -0
- data/lib/getch/filesystem/mount.rb +56 -0
- data/lib/getch/filesystem/partition.rb +77 -0
- data/lib/getch/filesystem/zfs.rb +1 -0
- data/lib/getch/filesystem/zfs/config.rb +7 -8
- data/lib/getch/filesystem/zfs/deps.rb +24 -12
- data/lib/getch/filesystem/zfs/device.rb +54 -9
- data/lib/getch/filesystem/zfs/encrypt.rb +1 -0
- data/lib/getch/filesystem/zfs/encrypt/.mount.rb.swp +0 -0
- data/lib/getch/filesystem/zfs/encrypt/config.rb +11 -11
- data/lib/getch/filesystem/zfs/encrypt/deps.rb +24 -14
- data/lib/getch/filesystem/zfs/encrypt/device.rb +54 -9
- data/lib/getch/filesystem/zfs/encrypt/format.rb +84 -3
- data/lib/getch/filesystem/zfs/encrypt/mount.rb +8 -28
- data/lib/getch/filesystem/zfs/encrypt/partition.rb +26 -109
- data/lib/getch/filesystem/zfs/encrypt/void.rb +96 -0
- data/lib/getch/filesystem/zfs/format.rb +97 -4
- data/lib/getch/filesystem/zfs/mount.rb +10 -32
- data/lib/getch/filesystem/zfs/partition.rb +25 -106
- data/lib/getch/filesystem/zfs/void.rb +81 -0
- data/lib/getch/gentoo.rb +20 -16
- data/lib/getch/gentoo/boot.rb +24 -16
- data/lib/getch/gentoo/chroot.rb +16 -25
- data/lib/getch/gentoo/config.rb +67 -15
- data/lib/getch/gentoo/sources.rb +55 -13
- data/lib/getch/gentoo/stage.rb +0 -1
- data/lib/getch/gentoo/use.rb +43 -0
- data/lib/getch/gentoo/use_flag.rb +63 -0
- data/lib/getch/guard.rb +64 -0
- data/lib/getch/helpers.rb +133 -0
- data/lib/getch/log.rb +3 -2
- data/lib/getch/options.rb +46 -24
- data/lib/getch/version.rb +1 -1
- data/lib/getch/void.rb +59 -0
- data/lib/getch/void/boot.rb +80 -0
- data/lib/getch/void/chroot.rb +55 -0
- data/lib/getch/void/config.rb +87 -0
- data/lib/getch/void/stage.rb +70 -0
- metadata +46 -25
- metadata.gz.sig +0 -0
- data/.gitignore +0 -2
- data/CHANGELOG.md +0 -60
- data/Rakefile +0 -21
- data/bin/setup.sh +0 -90
- data/getch.gemspec +0 -25
data/lib/getch/command.rb
CHANGED
|
@@ -59,7 +59,7 @@ module Getch
|
|
|
59
59
|
block.each do |f|
|
|
60
60
|
begin
|
|
61
61
|
data = f.read_nonblock(@block_size)
|
|
62
|
-
puts data if
|
|
62
|
+
puts data if OPTIONS[:verbose]
|
|
63
63
|
rescue EOFError
|
|
64
64
|
puts ""
|
|
65
65
|
rescue => e
|
|
@@ -127,19 +127,21 @@ module Getch
|
|
|
127
127
|
end
|
|
128
128
|
end
|
|
129
129
|
|
|
130
|
-
class
|
|
130
|
+
class Bask
|
|
131
131
|
def initialize(cmd)
|
|
132
132
|
@gentoo = MOUNTPOINT
|
|
133
133
|
@cmd = cmd
|
|
134
134
|
@log = Getch::Log.new
|
|
135
|
+
@version = "0.5"
|
|
135
136
|
end
|
|
136
137
|
|
|
137
138
|
def run!
|
|
138
|
-
|
|
139
|
+
download_bask if ! Dir.exist? "#{MOUNTPOINT}/root/bask-#{@version}"
|
|
140
|
+
@log.info "Running Bask: #{@cmd}"
|
|
139
141
|
cmd = "chroot #{@gentoo} /bin/bash -c \"source /etc/profile \
|
|
140
142
|
&& env-update \
|
|
141
|
-
&& cd /root/
|
|
142
|
-
&& ./
|
|
143
|
+
&& cd /root/bask-#{@version} \
|
|
144
|
+
&& ./bask.sh #{@cmd} -k /usr/src/linux\""
|
|
143
145
|
Open3.popen2e(cmd) do |stdin, stdout_err, wait_thr|
|
|
144
146
|
while line = stdout_err.gets
|
|
145
147
|
puts line
|
|
@@ -152,6 +154,18 @@ module Getch
|
|
|
152
154
|
end
|
|
153
155
|
end
|
|
154
156
|
end
|
|
157
|
+
|
|
158
|
+
private
|
|
159
|
+
|
|
160
|
+
def download_bask
|
|
161
|
+
@log.info "Installing Bask..."
|
|
162
|
+
url = "https://github.com/szorfein/bask/archive/v#{@version}.tar.gz"
|
|
163
|
+
file = "bask-#{@version}.tar.gz"
|
|
164
|
+
|
|
165
|
+
Dir.chdir("#{MOUNTPOINT}/root")
|
|
166
|
+
Helpers::get_file_online(url, file)
|
|
167
|
+
Getch::Command.new("tar xzf #{file}").run!
|
|
168
|
+
end
|
|
155
169
|
end
|
|
156
170
|
|
|
157
171
|
class Chroot < Command
|
data/lib/getch/config.rb
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require_relative 'config/gentoo'
|
|
2
|
+
require_relative 'config/void'
|
|
3
|
+
|
|
4
|
+
CONFIG_LOAD = {
|
|
5
|
+
gentoo: Getch::Config::Gentoo,
|
|
6
|
+
void: Getch::Config::Void
|
|
7
|
+
}.freeze
|
|
8
|
+
|
|
9
|
+
module Getch
|
|
10
|
+
module Config
|
|
11
|
+
class Main
|
|
12
|
+
def initialize
|
|
13
|
+
os = OPTIONS[:os].to_sym
|
|
14
|
+
@load = CONFIG_LOAD[os].new
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def ethernet
|
|
18
|
+
@load.ethernet
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def dns
|
|
22
|
+
@load.dns
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def wifi
|
|
26
|
+
@load.wifi
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def sysctl
|
|
30
|
+
pwd = File.expand_path(File.dirname(__FILE__))
|
|
31
|
+
dest = "#{Getch::MOUNTPOINT}/etc/sysctl.d/"
|
|
32
|
+
|
|
33
|
+
Helpers::mkdir dest
|
|
34
|
+
Helpers::cp("#{pwd}/../../assets/network-stack.conf", dest)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def shell
|
|
38
|
+
@load.shell
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
module Getch
|
|
2
|
+
module Config
|
|
3
|
+
class Gentoo
|
|
4
|
+
def initialize
|
|
5
|
+
@systemd_net_dir = "#{MOUNTPOINT}/etc/systemd"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def ethernet
|
|
9
|
+
conf = "#{@systemd_net_dir}/network/20-ethernet.network"
|
|
10
|
+
datas = [
|
|
11
|
+
"[Match]",
|
|
12
|
+
"Name=en*",
|
|
13
|
+
"Name=eth*",
|
|
14
|
+
"[Network]",
|
|
15
|
+
"DHCP=yes",
|
|
16
|
+
"IPv6PrivacyExtensions=yes",
|
|
17
|
+
"[DHCP]",
|
|
18
|
+
"RouteMetric=512",
|
|
19
|
+
"",
|
|
20
|
+
]
|
|
21
|
+
File.write(conf, datas.join("\n"), mode: 'w')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def wifi
|
|
25
|
+
conf = "#{@systemd_net_dir}/network/20-wireless.network"
|
|
26
|
+
datas = [
|
|
27
|
+
"[Match]",
|
|
28
|
+
"Name=wlp*",
|
|
29
|
+
"Name=wlan*",
|
|
30
|
+
"[Network]",
|
|
31
|
+
"DHCP=yes",
|
|
32
|
+
"IPv6PrivacyExtensions=yes",
|
|
33
|
+
"[DHCP]",
|
|
34
|
+
"RouteMetric=1024",
|
|
35
|
+
"",
|
|
36
|
+
]
|
|
37
|
+
File.write(conf, datas.join("\n"), mode: 'w')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def dns
|
|
41
|
+
conf = "#{@systemd_net_dir}/resolved.conf.d/dns_over_tls.conf"
|
|
42
|
+
datas = [
|
|
43
|
+
"[Resolve]",
|
|
44
|
+
"DNS=9.9.9.9#dns.quad9.net",
|
|
45
|
+
"DNSOverTLS=yes",
|
|
46
|
+
"",
|
|
47
|
+
]
|
|
48
|
+
Helpers::create_dir("#{@systemd_net_dir}/resolved.conf.d")
|
|
49
|
+
File.write(conf, datas.join("\n"), mode: 'w')
|
|
50
|
+
|
|
51
|
+
Getch::Chroot.new('systemctl enable systemd-networkd').run!
|
|
52
|
+
Getch::Chroot.new('systemctl enable systemd-resolved').run!
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def shell
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require_relative '../helpers'
|
|
2
|
+
|
|
3
|
+
module Getch
|
|
4
|
+
module Config
|
|
5
|
+
class Void
|
|
6
|
+
include Helpers::Void
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
@service_dir = "/etc/runit/runsvdir/default/"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Enable dhcpcd service
|
|
13
|
+
def ethernet
|
|
14
|
+
command "ln -fs /etc/sv/dhcpcd #{@service_dir}"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# with Quad9
|
|
18
|
+
# https://www.dnsknowledge.com/tutorials/how-to-setup-quad9-dns-on-a-linux/
|
|
19
|
+
def dns
|
|
20
|
+
conf = "#{MOUNTPOINT}/etc/resolv.conf"
|
|
21
|
+
content = [
|
|
22
|
+
"nameserver 9.9.9.9",
|
|
23
|
+
"nameserver 2620:fe::fe",
|
|
24
|
+
"options rotate",
|
|
25
|
+
"",
|
|
26
|
+
]
|
|
27
|
+
File.write(conf, content.join("\n"), mode: 'w', chmod: 0644)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# https://docs.voidlinux.org/config/network/iwd.html
|
|
31
|
+
def wifi
|
|
32
|
+
conf = "#{MOUNTPOINT}/etc/iwd/main.conf"
|
|
33
|
+
content = [
|
|
34
|
+
"[General]",
|
|
35
|
+
"UseDefaultInterface=true",
|
|
36
|
+
"",
|
|
37
|
+
]
|
|
38
|
+
File.write(conf, content.join("\n"), mode: 'a', chmod: 0644)
|
|
39
|
+
# Enabling dbus and iwd
|
|
40
|
+
command "ln -fs /etc/sv/dbus #{@service_dir}"
|
|
41
|
+
command "ln -fs /etc/sv/iwd #{@service_dir}"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def shell
|
|
45
|
+
command "chsh -s /bin/bash"
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
data/lib/getch/filesystem.rb
CHANGED
|
@@ -3,6 +3,11 @@ module Getch
|
|
|
3
3
|
end
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
+
require_relative 'filesystem/device'
|
|
7
|
+
require_relative 'filesystem/clean'
|
|
8
|
+
require_relative 'filesystem/partition'
|
|
9
|
+
require_relative 'filesystem/mount'
|
|
10
|
+
|
|
6
11
|
require_relative 'filesystem/ext4'
|
|
7
12
|
require_relative 'filesystem/lvm'
|
|
8
13
|
require_relative 'filesystem/zfs'
|
|
Binary file
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Getch
|
|
2
|
+
module FileSystem
|
|
3
|
+
module Clean
|
|
4
|
+
def self.clean_hdd(disk)
|
|
5
|
+
return if ! disk
|
|
6
|
+
raise ArgumentError, "Disk #{disk} is no found." if ! File.exist? "/dev/#{disk}"
|
|
7
|
+
puts
|
|
8
|
+
print "Cleaning data on #{disk}, can be long, avoid this on Flash Memory (SSD,USB,...) ? [y,N] "
|
|
9
|
+
case gets.chomp
|
|
10
|
+
when /^y|^Y/
|
|
11
|
+
bloc=`blockdev --getbsz /dev/#{disk}`.chomp
|
|
12
|
+
Helpers::sys("dd if=/dev/urandom of=/dev/#{disk} bs=#{bloc} status=progress")
|
|
13
|
+
else
|
|
14
|
+
return
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.clean_struct(disk)
|
|
19
|
+
return if ! disk
|
|
20
|
+
raise ArgumentError, "Disk #{disk} is no found." if ! File.exist? "/dev/#{disk}"
|
|
21
|
+
Helpers::sys("sgdisk -Z /dev/#{disk}")
|
|
22
|
+
Helpers::sys("wipefs -a /dev/#{disk}")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.hdd(*disks)
|
|
26
|
+
disks.each { |d|
|
|
27
|
+
clean_struct(d)
|
|
28
|
+
clean_hdd(d)
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
# See https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing
|
|
32
|
+
# for SSD
|
|
33
|
+
def self.sdd
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.external_disk(root_disk, *disks)
|
|
37
|
+
disks.each { |d|
|
|
38
|
+
unless d && d != "" && d != nil && d == root_disk
|
|
39
|
+
hdd(d)
|
|
40
|
+
end
|
|
41
|
+
}
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.old_vg(disk, vg)
|
|
45
|
+
oldvg = `vgdisplay | grep #{vg}`.chomp
|
|
46
|
+
Helpers::sys("vgremove -f #{vg}") if oldvg != ''
|
|
47
|
+
Helpers::sys("pvremove -f #{disk}") if oldvg != '' and File.exist? disk
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.old_zpool
|
|
51
|
+
oldzpool = `zpool status | grep pool:`.gsub(/pool: /, '').delete(' ').split("\n")
|
|
52
|
+
if oldzpool[0] != "" and $?.success?
|
|
53
|
+
oldzpool.each { |p| Helpers::sys("zpool destroy #{p}") if p }
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
module Getch
|
|
2
|
+
module FileSystem
|
|
3
|
+
class Device
|
|
4
|
+
def initialize
|
|
5
|
+
@efi = Helpers::efi?
|
|
6
|
+
@root_part = 1
|
|
7
|
+
@user = Getch::OPTIONS[:username]
|
|
8
|
+
|
|
9
|
+
@disk = Getch::OPTIONS[:disk]
|
|
10
|
+
@boot_disk = Getch::OPTIONS[:boot_disk]
|
|
11
|
+
@cache_disk = Getch::OPTIONS[:cache_disk]
|
|
12
|
+
@home_disk = Getch::OPTIONS[:home_disk]
|
|
13
|
+
|
|
14
|
+
search_boot
|
|
15
|
+
search_swap
|
|
16
|
+
search_root
|
|
17
|
+
search_home
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
def search_boot
|
|
22
|
+
if @efi
|
|
23
|
+
if @boot_disk
|
|
24
|
+
@dev_esp = "/dev/#{@boot_disk}#{@root_part}"
|
|
25
|
+
else
|
|
26
|
+
@dev_esp = "/dev/#{@disk}#{@root_part}"
|
|
27
|
+
@root_part += 1
|
|
28
|
+
end
|
|
29
|
+
else
|
|
30
|
+
if @boot_disk
|
|
31
|
+
@dev_gpt = "/dev/#{@boot_disk}#{@root_part}"
|
|
32
|
+
@dev_grub = "/dev/#{@boot_disk}"
|
|
33
|
+
else
|
|
34
|
+
@dev_gpt = "/dev/#{@disk}#{@root_part}"
|
|
35
|
+
@dev_grub = "/dev/#{@disk}"
|
|
36
|
+
@root_part += 1
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def search_swap
|
|
42
|
+
if @cache_disk
|
|
43
|
+
@dev_swap = "/dev/#{@cache_disk}1"
|
|
44
|
+
else
|
|
45
|
+
@dev_swap = "/dev/#{@disk}#{@root_part}"
|
|
46
|
+
@root_part += 1
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def search_root
|
|
51
|
+
@dev_root = "/dev/#{@disk}#{@root_part}"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def search_home
|
|
55
|
+
if @home_disk
|
|
56
|
+
@dev_home = "/dev/#{@home_disk}1"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -17,7 +17,7 @@ module Getch
|
|
|
17
17
|
|
|
18
18
|
def systemd_boot
|
|
19
19
|
return if ! Helpers::efi?
|
|
20
|
-
esp = '/
|
|
20
|
+
esp = '/efi'
|
|
21
21
|
dir = "#{@root_dir}/#{esp}/loader/entries/"
|
|
22
22
|
datas_gentoo = [
|
|
23
23
|
'title Gentoo Linux',
|
|
@@ -30,28 +30,27 @@ module Getch
|
|
|
30
30
|
def grub
|
|
31
31
|
return if Helpers::efi?
|
|
32
32
|
file = "#{@root_dir}/etc/default/grub"
|
|
33
|
-
cmdline = "GRUB_CMDLINE_LINUX=\"resume=#{@
|
|
33
|
+
cmdline = "GRUB_CMDLINE_LINUX=\"resume=PARTUUID=#{@partuuid_swap} root=PARTUUID=#{@partuuid_root} init=#{@init} rw slub_debug=P page_poison=1 slab_nomerge pti=on vsyscall=none spectre_v2=on spec_store_bypass_disable=seccomp iommu=force\"\n"
|
|
34
34
|
File.write(file, cmdline, mode: 'a')
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
private
|
|
38
38
|
|
|
39
39
|
def gen_uuid
|
|
40
|
-
@partuuid_root =
|
|
41
|
-
@
|
|
40
|
+
@partuuid_root = Helpers::partuuid(@dev_root)
|
|
41
|
+
@partuuid_swap = Helpers::partuuid(@dev_swap)
|
|
42
42
|
@uuid_root = `lsblk -o "UUID" #{@dev_root} | tail -1`.chomp() if @dev_root
|
|
43
|
-
@
|
|
44
|
-
@uuid_boot_efi = `lsblk -o "UUID" #{@dev_boot_efi} | tail -1`.chomp() if @dev_boot_efi
|
|
43
|
+
@uuid_esp = `lsblk -o "UUID" #{@dev_esp} | tail -1`.chomp() if @dev_esp
|
|
45
44
|
@uuid_home = `lsblk -o "UUID" #{@dev_home} | tail -1`.chomp() if @dev_home
|
|
46
45
|
end
|
|
47
46
|
|
|
48
47
|
def data_fstab
|
|
49
|
-
|
|
50
|
-
swap = @dev_swap ? "
|
|
48
|
+
esp = @dev_esp ? "UUID=#{@uuid_esp} /efi vfat noauto,noatime 1 2" : ''
|
|
49
|
+
swap = @dev_swap ? "PARTUUID=#{@partuuid_swap} none swap discard 0 0" : ''
|
|
51
50
|
root = @dev_root ? "UUID=#{@uuid_root} / ext4 defaults 0 1" : ''
|
|
52
51
|
home = @dev_home ? "UUID=#{@uuid_home} /home/#{@user} ext4 defaults 0 2" : ''
|
|
53
52
|
|
|
54
|
-
[
|
|
53
|
+
[ esp, swap, root, home ]
|
|
55
54
|
end
|
|
56
55
|
end
|
|
57
56
|
end
|
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
module Getch
|
|
2
2
|
module FileSystem
|
|
3
3
|
module Ext4
|
|
4
|
-
class Device
|
|
4
|
+
class Device < Getch::FileSystem::Device
|
|
5
5
|
def initialize
|
|
6
|
-
|
|
7
|
-
@user = DEFAULT_OPTIONS[:username]
|
|
8
|
-
@dev_boot_efi = Helpers::efi? ? "/dev/#{@disk}1" : nil
|
|
9
|
-
@dev_root = "/dev/#{@disk}2"
|
|
10
|
-
@dev_swap = "/dev/#{@disk}3"
|
|
11
|
-
@dev_home = @user ? "/dev/#{@disk}4" : nil
|
|
6
|
+
super
|
|
12
7
|
end
|
|
13
8
|
end
|
|
14
9
|
end
|
|
@@ -22,21 +22,21 @@ module Getch
|
|
|
22
22
|
|
|
23
23
|
def systemd_boot
|
|
24
24
|
return if ! Helpers::efi?
|
|
25
|
-
esp = '/
|
|
25
|
+
esp = '/efi'
|
|
26
26
|
dir = "#{@root_dir}/#{esp}/loader/entries/"
|
|
27
27
|
datas_gentoo = [
|
|
28
28
|
'title Gentoo Linux',
|
|
29
29
|
'linux /vmlinuz',
|
|
30
30
|
'initrd /initramfs',
|
|
31
|
-
"options crypt_root=UUID=#{@
|
|
31
|
+
"options crypt_root=UUID=#{@uuid_dev_root} root=/dev/mapper/root init=#{@init} keymap=#{Getch::OPTIONS[:keymap]} rw"
|
|
32
32
|
]
|
|
33
33
|
File.write("#{dir}/gentoo.conf", datas_gentoo.join("\n"))
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def crypttab
|
|
37
|
-
home = @
|
|
37
|
+
home = @home_disk ? "crypthome UUID=#{@uuid_home} /root/secretkeys/crypto_keyfile.bin luks" : ''
|
|
38
38
|
datas = [
|
|
39
|
-
"cryptswap
|
|
39
|
+
"cryptswap PARTUUID=#{@partuuid_swap} /dev/urandom swap,cipher=aes-xts-plain64:sha256,size=512",
|
|
40
40
|
home
|
|
41
41
|
]
|
|
42
42
|
File.write("#{@root_dir}/etc/crypttab", datas.join("\n"))
|
|
@@ -46,7 +46,7 @@ module Getch
|
|
|
46
46
|
return if Helpers::efi?
|
|
47
47
|
file = "#{@root_dir}/etc/default/grub"
|
|
48
48
|
cmdline = [
|
|
49
|
-
"GRUB_CMDLINE_LINUX=\"crypt_root=UUID=#{@uuid_dev_root} init=#{@init} rw slub_debug=P page_poison=1 slab_nomerge pti=on vsyscall=none spectre_v2=on spec_store_bypass_disable=seccomp iommu=force keymap=#{
|
|
49
|
+
"GRUB_CMDLINE_LINUX=\"crypt_root=UUID=#{@uuid_dev_root} root=/dev/mapper/root init=#{@init} rw slub_debug=P page_poison=1 slab_nomerge pti=on vsyscall=none spectre_v2=on spec_store_bypass_disable=seccomp iommu=force keymap=#{Getch::OPTIONS[:keymap]}\"",
|
|
50
50
|
"GRUB_ENABLE_CRYPTODISK=y"
|
|
51
51
|
]
|
|
52
52
|
File.write(file, cmdline.join("\n"), mode: 'a')
|
|
@@ -55,16 +55,15 @@ module Getch
|
|
|
55
55
|
private
|
|
56
56
|
|
|
57
57
|
def gen_uuid
|
|
58
|
-
@
|
|
59
|
-
@uuid_swap = `lsblk -o "UUID" #{@dev_swap} | tail -1`.chomp() if @dev_swap
|
|
58
|
+
@partuuid_swap = Helpers::partuuid(@dev_swap)
|
|
60
59
|
@uuid_dev_root = `lsblk -d -o "UUID" #{@dev_root} | tail -1`.chomp() if @dev_root
|
|
61
|
-
@
|
|
60
|
+
@uuid_esp = Helpers::uuid(@dev_esp) if @dev_esp
|
|
62
61
|
@uuid_root = `lsblk -d -o "UUID" #{@luks_root} | tail -1`.chomp() if @dev_root
|
|
63
62
|
@uuid_home = `lsblk -d -o "UUID" #{@dev_home} | tail -1`.chomp() if @luks_home
|
|
64
63
|
end
|
|
65
64
|
|
|
66
65
|
def data_fstab
|
|
67
|
-
boot_efi = @
|
|
66
|
+
boot_efi = @dev_esp ? "UUID=#{@uuid_esp} /efi vfat noauto,noatime 1 2" : ''
|
|
68
67
|
swap = @dev_swap ? "#{@luks_swap} none swap discard 0 0 " : ''
|
|
69
68
|
root = @dev_root ? "UUID=#{@uuid_root} / ext4 defaults 0 1" : ''
|
|
70
69
|
home = @dev_home ? "#{@luks_home} /home/#{@user} ext4 defaults 0 2" : ''
|