getch 0.1.0 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- 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" : ''
|