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
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require_relative '../../helpers'
|
|
2
|
+
|
|
3
|
+
module Getch
|
|
4
|
+
module FileSystem
|
|
5
|
+
module Zfs
|
|
6
|
+
class Void < Device
|
|
7
|
+
include Helpers::Void
|
|
8
|
+
attr_reader :boot_disk
|
|
9
|
+
|
|
10
|
+
def initialize
|
|
11
|
+
super
|
|
12
|
+
hostid
|
|
13
|
+
zfs_zed # mountpoint for zfs
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Fstab contain:
|
|
17
|
+
# > /efi noauto
|
|
18
|
+
# > swap
|
|
19
|
+
# > /boot zfs-legacy
|
|
20
|
+
# > /tmp
|
|
21
|
+
def fstab
|
|
22
|
+
conf = "#{MOUNTPOINT}/etc/fstab"
|
|
23
|
+
File.write(conf, "\n", mode: 'w', chmod: 0644)
|
|
24
|
+
line_fstab(@dev_esp, "/efi vfat noauto,rw,relatime 0 0") if @dev_esp
|
|
25
|
+
line_fstab(@dev_swap, "swap swap rw,noatime,discard 0 0") if @dev_swap
|
|
26
|
+
#add_line(conf, "#{@boot_pool_name}/BOOT/#{@n} /boot zfs defaults 0 0") if @dev_boot
|
|
27
|
+
add_line(conf, "tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def config_dracut
|
|
31
|
+
conf = "#{MOUNTPOINT}/etc/dracut.conf.d/zfs.conf"
|
|
32
|
+
# dracut: value+= should be surrounding by white space
|
|
33
|
+
content = [
|
|
34
|
+
"hostonly=\"yes\"",
|
|
35
|
+
"omit_dracutmodules+=\" btrfs lvm \"",
|
|
36
|
+
""
|
|
37
|
+
]
|
|
38
|
+
File.write(conf, content.join("\n"), mode: 'w', chmod: 0644)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def kernel_cmdline_dracut
|
|
42
|
+
#command "zfs set mountpoint=legacy #{@boot_pool_name}/BOOT/#{@n}"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def config_grub
|
|
46
|
+
grub_cmdline("root=zfs:#{@pool_name}/ROOT/#{@n}", "zfs_force=1")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def finish
|
|
50
|
+
zed_update_path
|
|
51
|
+
puts "+ Enter in your system: chroot /mnt /bin/bash"
|
|
52
|
+
puts "+ Reboot with: shutdown -r now"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
def zfs_zed
|
|
58
|
+
service_dir = "/etc/runit/runsvdir/default/"
|
|
59
|
+
|
|
60
|
+
Helpers::mkdir("#{MOUNTPOINT}/etc/zfs/zfs-list.cache")
|
|
61
|
+
Helpers::touch("#{MOUNTPOINT}/etc/zfs/zfs-list.cache/#{@boot_pool_name}") if @dev_boot
|
|
62
|
+
Helpers::touch("#{MOUNTPOINT}/etc/zfs/zfs-list.cache/#{@pool_name}")
|
|
63
|
+
fork { command "/etc/sv/zed/run" }
|
|
64
|
+
command "ln -fs /etc/sv/zed #{service_dir}"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def zed_update_path
|
|
68
|
+
Dir.glob("#{MOUNTPOINT}/etc/zfs/zfs-list.cache/*").each { |f|
|
|
69
|
+
if !system("sed", "-Ei", "s|#{MOUNTPOINT}/?|/|", f)
|
|
70
|
+
raise "System exec sed"
|
|
71
|
+
end
|
|
72
|
+
}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def hostid
|
|
76
|
+
command "zgenhostid $(hostid)"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
data/lib/getch/gentoo.rb
CHANGED
|
@@ -1,65 +1,69 @@
|
|
|
1
|
-
require 'open-uri'
|
|
2
|
-
require 'open3'
|
|
3
1
|
require_relative 'gentoo/stage'
|
|
4
2
|
require_relative 'gentoo/config'
|
|
5
3
|
require_relative 'gentoo/chroot'
|
|
6
4
|
require_relative 'gentoo/sources'
|
|
7
5
|
require_relative 'gentoo/boot'
|
|
6
|
+
require_relative 'gentoo/use'
|
|
7
|
+
require_relative 'gentoo/use_flag'
|
|
8
8
|
|
|
9
9
|
module Getch
|
|
10
10
|
module Gentoo
|
|
11
|
-
class
|
|
12
|
-
def
|
|
11
|
+
class Main
|
|
12
|
+
def initialize
|
|
13
13
|
@state = Getch::States.new()
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def stage3
|
|
17
17
|
return if STATES[:gentoo_base]
|
|
18
|
-
new
|
|
19
|
-
stage = Getch::Gentoo::Stage.new()
|
|
18
|
+
stage = Getch::Gentoo::Stage.new
|
|
20
19
|
stage.get_stage3
|
|
21
20
|
stage.control_files
|
|
22
21
|
stage.checksum
|
|
23
22
|
@state.stage3
|
|
24
23
|
end
|
|
25
24
|
|
|
26
|
-
def config
|
|
25
|
+
def config
|
|
27
26
|
return if STATES[:gentoo_config]
|
|
28
|
-
new
|
|
29
|
-
config = Getch::Gentoo::Config.new()
|
|
27
|
+
config = Getch::Gentoo::Config.new
|
|
30
28
|
config.portage
|
|
31
29
|
config.portage_fs
|
|
30
|
+
config.portage_bashrc
|
|
32
31
|
config.repo
|
|
33
32
|
config.network
|
|
34
|
-
config.systemd
|
|
33
|
+
config.systemd
|
|
35
34
|
config.hostname
|
|
36
35
|
@state.config
|
|
37
36
|
end
|
|
38
37
|
|
|
39
38
|
def chroot
|
|
40
|
-
chroot = Getch::Gentoo::Chroot.new
|
|
39
|
+
chroot = Getch::Gentoo::Chroot.new
|
|
41
40
|
chroot.update
|
|
41
|
+
chroot.cpuflags
|
|
42
42
|
chroot.systemd
|
|
43
|
+
|
|
44
|
+
flags = Getch::Gentoo::UseFlag.new
|
|
45
|
+
flags.apply
|
|
46
|
+
|
|
43
47
|
chroot.world
|
|
44
48
|
return if STATES[:gentoo_kernel]
|
|
45
49
|
chroot.kernel
|
|
46
50
|
chroot.kernel_deps
|
|
47
51
|
chroot.install_pkgs
|
|
52
|
+
chroot.kernel_link
|
|
48
53
|
end
|
|
49
54
|
|
|
50
55
|
def kernel
|
|
51
56
|
return if STATES[:gentoo_kernel]
|
|
52
|
-
source = Getch::Gentoo::Sources.new
|
|
53
|
-
new
|
|
57
|
+
source = Getch::Gentoo::Sources.new
|
|
54
58
|
source.build_kspp
|
|
55
|
-
source.init_config
|
|
56
59
|
source.build_others
|
|
60
|
+
source.firewall
|
|
57
61
|
source.make
|
|
58
62
|
@state.kernel
|
|
59
63
|
end
|
|
60
64
|
|
|
61
|
-
def boot
|
|
62
|
-
boot = Getch::Gentoo::Boot.new
|
|
65
|
+
def boot
|
|
66
|
+
boot = Getch::Gentoo::Boot.new
|
|
63
67
|
boot.start
|
|
64
68
|
end
|
|
65
69
|
end
|
data/lib/getch/gentoo/boot.rb
CHANGED
|
@@ -3,21 +3,27 @@ require 'fileutils'
|
|
|
3
3
|
module Getch
|
|
4
4
|
module Gentoo
|
|
5
5
|
class Boot
|
|
6
|
-
def initialize
|
|
7
|
-
@disk =
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
def initialize
|
|
7
|
+
@disk = Getch::OPTIONS[:boot_disk] ?
|
|
8
|
+
Getch::OPTIONS[:boot_disk] :
|
|
9
|
+
Getch::OPTIONS[:disk]
|
|
10
|
+
@user = Getch::OPTIONS[:username]
|
|
11
|
+
@class_fs = Getch::select_fs
|
|
12
|
+
@config = @class_fs::Config.new
|
|
10
13
|
end
|
|
11
14
|
|
|
12
15
|
def start
|
|
13
16
|
@config.fstab
|
|
14
17
|
bootloader
|
|
15
18
|
password
|
|
16
|
-
|
|
19
|
+
permission
|
|
17
20
|
the_end
|
|
18
21
|
end
|
|
19
22
|
|
|
20
23
|
def bootloader
|
|
24
|
+
# Ensure than systemd is build with all our flags
|
|
25
|
+
Getch::Emerge.new("@world").pkg!
|
|
26
|
+
|
|
21
27
|
if Helpers::efi?
|
|
22
28
|
bootctl
|
|
23
29
|
else
|
|
@@ -30,8 +36,8 @@ module Getch
|
|
|
30
36
|
bootctl_dep
|
|
31
37
|
puts "Configuring systemd-boot."
|
|
32
38
|
# ref: https://forums.gentoo.org/viewtopic-p-8118822.html
|
|
33
|
-
esp = '/
|
|
34
|
-
|
|
39
|
+
esp = '/efi'
|
|
40
|
+
Getch::Chroot.new("bootctl --path #{esp} install").run!
|
|
35
41
|
datas_loader = [
|
|
36
42
|
'default gentoo',
|
|
37
43
|
'timeout 3',
|
|
@@ -45,30 +51,29 @@ module Getch
|
|
|
45
51
|
initramfs = Dir.glob("#{MOUNTPOINT}/boot/initramfs-*.img")
|
|
46
52
|
FileUtils.cp("#{initramfs[0]}", "#{MOUNTPOINT}/#{esp}/initramfs", preserve: true) if initramfs != []
|
|
47
53
|
|
|
48
|
-
|
|
54
|
+
Getch::Chroot.new("bootctl --path #{esp} update").run!
|
|
49
55
|
end
|
|
50
56
|
|
|
51
57
|
def bootctl_dep
|
|
52
58
|
puts 'Installing systemd-boot...'
|
|
53
|
-
|
|
54
|
-
Getch::Emerge.new("sys-apps/systemd efivar").pkg!
|
|
59
|
+
Getch::Emerge.new("efivar").pkg!
|
|
55
60
|
end
|
|
56
61
|
|
|
57
62
|
def grub
|
|
58
63
|
puts 'Installing GRUB...'
|
|
59
64
|
Getch::Emerge.new("sys-boot/grub:2").pkg!
|
|
60
65
|
@config.grub
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
Getch::Chroot.new("grub-install /dev/#{@disk}").run!
|
|
67
|
+
Getch::Chroot.new("grub-mkconfig -o /boot/grub/grub.cfg").run!
|
|
63
68
|
end
|
|
64
69
|
|
|
65
70
|
def password
|
|
66
71
|
puts 'Password for root'
|
|
67
72
|
cmd = "chroot #{MOUNTPOINT} /bin/bash -c \"source /etc/profile && passwd\""
|
|
68
73
|
system(cmd)
|
|
69
|
-
if @user
|
|
74
|
+
if @user
|
|
70
75
|
puts "Creating user #{@user}"
|
|
71
|
-
|
|
76
|
+
Getch::Chroot.new("useradd -m -G users,wheel,audio,video #{@user}").run!
|
|
72
77
|
puts "Password for your user #{@user}"
|
|
73
78
|
cmd = "chroot #{MOUNTPOINT} /bin/bash -c \"source /etc/profile && passwd #{@user}\""
|
|
74
79
|
system(cmd)
|
|
@@ -77,8 +82,11 @@ module Getch
|
|
|
77
82
|
|
|
78
83
|
private
|
|
79
84
|
|
|
80
|
-
def
|
|
81
|
-
|
|
85
|
+
def permission
|
|
86
|
+
FileUtils.chmod_R 0755, "#{MOUNTPOINT}/etc/portage"
|
|
87
|
+
if @user
|
|
88
|
+
Getch::Chroot.new("chown -R #{@user}:#{@user} /home/#{@user}").run!
|
|
89
|
+
end
|
|
82
90
|
end
|
|
83
91
|
|
|
84
92
|
def the_end
|
data/lib/getch/gentoo/chroot.rb
CHANGED
|
@@ -7,6 +7,12 @@ module Getch
|
|
|
7
7
|
mount
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
+
def cpuflags
|
|
11
|
+
Getch::Emerge.new("app-portage/cpuid2cpuflags").pkg!
|
|
12
|
+
cpuflags = `chroot #{MOUNTPOINT} /bin/bash -c "source /etc/profile; cpuid2cpuflags"`.chomp
|
|
13
|
+
File.write("#{MOUNTPOINT}/etc/portage/package.use/00cpuflags", "*/* #{cpuflags}")
|
|
14
|
+
end
|
|
15
|
+
|
|
10
16
|
def update
|
|
11
17
|
return if STATES[:gentoo_update]
|
|
12
18
|
puts "Downloading the last ebuilds for Gentoo..."
|
|
@@ -18,7 +24,7 @@ module Getch
|
|
|
18
24
|
def world
|
|
19
25
|
return if STATES[:gentoo_update]
|
|
20
26
|
puts "Update Gentoo world"
|
|
21
|
-
Getch::Emerge.new("emerge --update --deep --newuse @world").run!
|
|
27
|
+
Getch::Emerge.new("emerge --update --deep --changed-use --newuse @world").run!
|
|
22
28
|
@state.update
|
|
23
29
|
end
|
|
24
30
|
|
|
@@ -33,40 +39,29 @@ module Getch
|
|
|
33
39
|
license = "#{MOUNTPOINT}/etc/portage/package.license"
|
|
34
40
|
File.write(license, "sys-kernel/linux-firmware linux-fw-redistributable no-source-code\n")
|
|
35
41
|
@pkgs << "sys-kernel/gentoo-sources"
|
|
36
|
-
@pkgs << "dev-util/dwarves"
|
|
37
42
|
end
|
|
38
43
|
|
|
39
44
|
def kernel_deps
|
|
40
|
-
|
|
41
|
-
get_garden
|
|
42
|
-
garden_dep
|
|
45
|
+
@pkgs << "sys-apps/kmod"
|
|
43
46
|
end
|
|
44
47
|
|
|
45
48
|
def install_pkgs
|
|
49
|
+
@pkgs << "app-portage/gentoolkit"
|
|
46
50
|
@pkgs << "app-admin/sudo"
|
|
47
51
|
@pkgs << "app-editors/vim"
|
|
52
|
+
@pkgs << "sys-kernel/linux-firmware"
|
|
48
53
|
all_pkgs = @pkgs.join(" ")
|
|
49
54
|
puts "Installing #{all_pkgs}..."
|
|
50
55
|
Getch::Emerge.new(all_pkgs).pkg!
|
|
51
56
|
end
|
|
52
57
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
url = 'https://github.com/szorfein/garden/archive/master.tar.gz'
|
|
58
|
-
file = 'garden-master.tar.gz'
|
|
59
|
-
|
|
60
|
-
Dir.chdir("#{MOUNTPOINT}/root")
|
|
61
|
-
Helpers::get_file_online(url, file)
|
|
62
|
-
Getch::Command.new("tar xzf #{file}").run! if ! Dir.exist? 'garden-master'
|
|
58
|
+
# create a symbolic link for /usr/src/linux
|
|
59
|
+
def kernel_link
|
|
60
|
+
cmd = "eselect kernel set 1"
|
|
61
|
+
exec_chroot(cmd)
|
|
63
62
|
end
|
|
64
63
|
|
|
65
|
-
|
|
66
|
-
Getch::Emerge.new("gentoolkit").pkg!
|
|
67
|
-
exec_chroot("euse -p sys-apps/kmod -E lzma")
|
|
68
|
-
@pkgs << "sys-apps/kmod"
|
|
69
|
-
end
|
|
64
|
+
private
|
|
70
65
|
|
|
71
66
|
def mount
|
|
72
67
|
puts "Populate /proc, /sys and /dev."
|
|
@@ -80,11 +75,7 @@ module Getch
|
|
|
80
75
|
end
|
|
81
76
|
|
|
82
77
|
def exec_chroot(cmd)
|
|
83
|
-
|
|
84
|
-
source /etc/profile
|
|
85
|
-
#{cmd}
|
|
86
|
-
\""
|
|
87
|
-
Getch::Command.new(script).run!
|
|
78
|
+
Getch::Chroot.new(cmd).run!
|
|
88
79
|
end
|
|
89
80
|
end
|
|
90
81
|
end
|
data/lib/getch/gentoo/config.rb
CHANGED
|
@@ -7,17 +7,35 @@ module Getch
|
|
|
7
7
|
class Config
|
|
8
8
|
def initialize
|
|
9
9
|
@make = "#{MOUNTPOINT}/etc/portage/make.conf"
|
|
10
|
+
@log = Getch::Log.new
|
|
10
11
|
end
|
|
11
12
|
|
|
12
13
|
def portage
|
|
13
|
-
nproc = `nproc`.chomp()
|
|
14
14
|
grub_pc = Helpers::efi? ? '' : 'GRUB_PLATFORMS="pc"'
|
|
15
|
-
|
|
15
|
+
nproc = `nproc`.chomp()
|
|
16
|
+
|
|
17
|
+
# Add cpu name
|
|
18
|
+
cpu=`chroot #{MOUNTPOINT} /bin/bash -c \"source /etc/profile ; gcc -c -Q -march=native --help=target | grep march\" | awk '{print $2}' | head -1`.chomp
|
|
19
|
+
raise "Error, no cpu found" if ! cpu or cpu == ""
|
|
20
|
+
@log.debug "CPU found ==> #{cpu}"
|
|
21
|
+
|
|
22
|
+
tmp = Tempfile.new('make.conf')
|
|
23
|
+
|
|
24
|
+
File.open(@make).each { |l|
|
|
25
|
+
if l.match(/^COMMON_FLAGS/)
|
|
26
|
+
File.write(tmp, "COMMON_FLAGS=\"-march=#{cpu} -O2 -pipe -fomit-frame-pointer\"\n", mode: 'a')
|
|
27
|
+
else
|
|
28
|
+
File.write(tmp, l, mode: 'a')
|
|
29
|
+
end
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
FileUtils.copy_file(tmp, @make, preserve = true)
|
|
33
|
+
|
|
34
|
+
# Add the rest
|
|
16
35
|
data = [
|
|
17
36
|
'',
|
|
37
|
+
"MAKEOPTS=\"-j#{nproc}\"",
|
|
18
38
|
'ACCEPT_KEYWORDS="amd64"',
|
|
19
|
-
"MAKEOPTS=\"-j#{nproc} -l#{nproc}\"",
|
|
20
|
-
quiet,
|
|
21
39
|
'INPUT_DEVICES="libinput"',
|
|
22
40
|
grub_pc
|
|
23
41
|
]
|
|
@@ -42,22 +60,22 @@ module Getch
|
|
|
42
60
|
line_count += 1
|
|
43
61
|
}
|
|
44
62
|
|
|
45
|
-
FileUtils.copy_file(tmp, "#{dest}/gentoo.conf", preserve =
|
|
63
|
+
FileUtils.copy_file(tmp, "#{dest}/gentoo.conf", preserve = true)
|
|
46
64
|
end
|
|
47
65
|
|
|
48
66
|
def network
|
|
49
67
|
src = '/etc/resolv.conf'
|
|
50
68
|
dest = "#{MOUNTPOINT}/etc/resolv.conf"
|
|
51
|
-
FileUtils.copy_file(src, dest, preserve =
|
|
69
|
+
FileUtils.copy_file(src, dest, preserve = true)
|
|
52
70
|
end
|
|
53
71
|
|
|
54
|
-
def systemd
|
|
55
|
-
control_options
|
|
72
|
+
def systemd
|
|
73
|
+
control_options
|
|
56
74
|
File.write("#{MOUNTPOINT}/etc/locale.gen", @utf8)
|
|
57
75
|
File.write("#{MOUNTPOINT}/etc/locale.conf", "LANG=#{@lang}\n")
|
|
58
76
|
File.write("#{MOUNTPOINT}/etc/locale.conf", 'LC_COLLATE=C', mode: 'a')
|
|
59
|
-
File.write("#{MOUNTPOINT}/etc/timezone", "#{
|
|
60
|
-
File.write("#{MOUNTPOINT}/etc/vconsole.conf", "KEYMAP=#{
|
|
77
|
+
File.write("#{MOUNTPOINT}/etc/timezone", "#{Getch::OPTIONS[:zoneinfo]}\n")
|
|
78
|
+
File.write("#{MOUNTPOINT}/etc/vconsole.conf", "KEYMAP=#{Getch::OPTIONS[:keymap]}\n")
|
|
61
79
|
end
|
|
62
80
|
|
|
63
81
|
def hostname
|
|
@@ -76,12 +94,46 @@ module Getch
|
|
|
76
94
|
Helpers::add_file("#{portage}/package.unmask/zzz_via_autounmask")
|
|
77
95
|
end
|
|
78
96
|
|
|
97
|
+
def portage_bashrc
|
|
98
|
+
conf = "#{MOUNTPOINT}/etc/portage/bashrc"
|
|
99
|
+
content = %q{
|
|
100
|
+
# https://wiki.gentoo.org/wiki/Signed_kernel_module_support
|
|
101
|
+
function pre_pkg_preinst() {
|
|
102
|
+
# This hook signs any out-of-tree kernel modules.
|
|
103
|
+
if [[ "$(type -t linux-mod_pkg_preinst)" != "function" ]]; then
|
|
104
|
+
# The package does not seem to install any kernel modules.
|
|
105
|
+
return
|
|
106
|
+
fi
|
|
107
|
+
# Get the signature algorithm used by the kernel.
|
|
108
|
+
local module_sig_hash="$(grep -Po '(?<=CONFIG_MODULE_SIG_HASH=").*(?=")' "${KERNEL_DIR}/.config")"
|
|
109
|
+
# Get the key file used by the kernel.
|
|
110
|
+
local module_sig_key="$(grep -Po '(?<=CONFIG_MODULE_SIG_KEY=").*(?=")' "${KERNEL_DIR}/.config")"
|
|
111
|
+
module_sig_key="${module_sig_key:-certs/signing_key.pem}"
|
|
112
|
+
# Path to the key file or PKCS11 URI
|
|
113
|
+
if [[ "${module_sig_key#pkcs11:}" == "${module_sig_key}" && "${module_sig_key#/}" == "${module_sig_key}" ]]; then
|
|
114
|
+
local key_path="${KERNEL_DIR}/${module_sig_key}"
|
|
115
|
+
else
|
|
116
|
+
local key_path="${module_sig_key}"
|
|
117
|
+
fi
|
|
118
|
+
# Certificate path
|
|
119
|
+
local cert_path="${KERNEL_DIR}/certs/signing_key.x509"
|
|
120
|
+
# Sign all installed modules before merging.
|
|
121
|
+
find "${D%/}/${INSDESTTREE#/}/" -name "*.ko" -exec "${KERNEL_DIR}/scripts/sign-file" "${module_sig_hash}" "${key_path}" "${cert_path}" '{}' \;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
f = File.new(conf, "w")
|
|
126
|
+
f.write("#{content}\n")
|
|
127
|
+
f.chmod(0644)
|
|
128
|
+
f.close
|
|
129
|
+
end
|
|
130
|
+
|
|
79
131
|
private
|
|
80
132
|
|
|
81
|
-
def control_options
|
|
82
|
-
search_zone(
|
|
83
|
-
search_utf8(
|
|
84
|
-
search_key(
|
|
133
|
+
def control_options
|
|
134
|
+
search_zone(Getch::OPTIONS[:zoneinfo])
|
|
135
|
+
search_utf8(Getch::OPTIONS[:language])
|
|
136
|
+
search_key(Getch::OPTIONS[:keymap])
|
|
85
137
|
end
|
|
86
138
|
|
|
87
139
|
def search_key(keys)
|
|
@@ -93,7 +145,7 @@ module Getch
|
|
|
93
145
|
end
|
|
94
146
|
|
|
95
147
|
def search_zone(zone)
|
|
96
|
-
if !
|
|
148
|
+
if !File.exist?("#{MOUNTPOINT}/usr/share/zoneinfo/#{zone}")
|
|
97
149
|
raise ArgumentError, "Zoneinfo #{zone} doesn\'t exist."
|
|
98
150
|
end
|
|
99
151
|
end
|