getch 0.0.5 → 0.1.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGELOG.md +30 -0
- data/README.md +31 -6
- data/bin/setup.sh +29 -13
- data/lib/getch.rb +43 -30
- data/lib/getch/command.rb +163 -0
- data/lib/getch/filesystem.rb +8 -0
- data/lib/getch/filesystem/ext4.rb +14 -0
- data/lib/getch/filesystem/ext4/config.rb +59 -0
- data/lib/getch/filesystem/ext4/deps.rb +22 -0
- data/lib/getch/filesystem/ext4/device.rb +16 -0
- data/lib/getch/filesystem/ext4/encrypt.rb +15 -0
- data/lib/getch/filesystem/ext4/encrypt/config.rb +85 -0
- data/lib/getch/filesystem/ext4/encrypt/deps.rb +59 -0
- data/lib/getch/filesystem/ext4/encrypt/device.rb +21 -0
- data/lib/getch/filesystem/ext4/encrypt/format.rb +32 -0
- data/lib/getch/filesystem/ext4/encrypt/mount.rb +64 -0
- data/lib/getch/filesystem/ext4/encrypt/partition.rb +116 -0
- data/lib/getch/filesystem/ext4/format.rb +30 -0
- data/lib/getch/filesystem/ext4/mount.rb +62 -0
- data/lib/getch/filesystem/ext4/partition.rb +75 -0
- data/lib/getch/filesystem/lvm.rb +14 -0
- data/lib/getch/filesystem/lvm/config.rb +63 -0
- data/lib/getch/filesystem/lvm/deps.rb +57 -0
- data/lib/getch/filesystem/lvm/device.rb +19 -0
- data/lib/getch/filesystem/lvm/encrypt.rb +15 -0
- data/lib/getch/filesystem/lvm/encrypt/config.rb +74 -0
- data/lib/getch/filesystem/lvm/encrypt/deps.rb +63 -0
- data/lib/getch/filesystem/lvm/encrypt/device.rb +22 -0
- data/lib/getch/filesystem/lvm/encrypt/format.rb +32 -0
- data/lib/getch/filesystem/lvm/encrypt/mount.rb +64 -0
- data/lib/getch/filesystem/lvm/encrypt/partition.rb +92 -0
- data/lib/getch/filesystem/lvm/format.rb +25 -0
- data/lib/getch/filesystem/lvm/mount.rb +62 -0
- data/lib/getch/filesystem/lvm/partition.rb +81 -0
- data/lib/getch/filesystem/zfs.rb +14 -0
- data/lib/getch/filesystem/zfs/config.rb +58 -0
- data/lib/getch/filesystem/zfs/deps.rb +90 -0
- data/lib/getch/filesystem/zfs/device.rb +19 -0
- data/lib/getch/filesystem/zfs/encrypt.rb +15 -0
- data/lib/getch/filesystem/zfs/encrypt/config.rb +67 -0
- data/lib/getch/filesystem/zfs/encrypt/deps.rb +94 -0
- data/lib/getch/filesystem/zfs/encrypt/device.rb +21 -0
- data/lib/getch/filesystem/zfs/encrypt/format.rb +22 -0
- data/lib/getch/filesystem/zfs/encrypt/mount.rb +67 -0
- data/lib/getch/filesystem/zfs/encrypt/partition.rb +151 -0
- data/lib/getch/filesystem/zfs/format.rb +20 -0
- data/lib/getch/filesystem/zfs/mount.rb +67 -0
- data/lib/getch/filesystem/zfs/partition.rb +147 -0
- data/lib/getch/gentoo.rb +3 -2
- data/lib/getch/gentoo/boot.rb +29 -25
- data/lib/getch/gentoo/chroot.rb +18 -14
- data/lib/getch/gentoo/config.rb +18 -9
- data/lib/getch/gentoo/sources.rb +45 -31
- data/lib/getch/gentoo/stage.rb +2 -2
- data/lib/getch/helpers.rb +24 -6
- data/lib/getch/log.rb +54 -0
- data/lib/getch/options.rb +16 -7
- data/lib/getch/version.rb +1 -1
- metadata +48 -5
- metadata.gz.sig +0 -0
- data/lib/getch/disk.rb +0 -77
- data/lib/getch/mount.rb +0 -73
@@ -0,0 +1,20 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Zfs
|
4
|
+
class Format < Getch::FileSystem::Zfs::Device
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
@state = Getch::States.new()
|
8
|
+
format
|
9
|
+
end
|
10
|
+
|
11
|
+
def format
|
12
|
+
return if STATES[:format]
|
13
|
+
system("mkfs.fat -F32 #{@dev_boot_efi}") if @dev_boot_efi
|
14
|
+
system("mkswap -f #{@dev_swap}")
|
15
|
+
@state.format
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Getch
|
4
|
+
module FileSystem
|
5
|
+
module Zfs
|
6
|
+
class Mount < Getch::FileSystem::Zfs::Device
|
7
|
+
def initialize
|
8
|
+
super
|
9
|
+
@root_dir = MOUNTPOINT
|
10
|
+
@boot_dir = "#{@root_dir}/boot"
|
11
|
+
@boot_efi_dir = "#{@root_dir}/boot/efi"
|
12
|
+
@state = Getch::States.new()
|
13
|
+
@log = Getch::Log.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
return if STATES[:mount]
|
18
|
+
exec("zpool export -a")
|
19
|
+
exec("rm -rf #{MOUNTPOINT}/*")
|
20
|
+
exec("zpool import -N -R #{MOUNTPOINT} #{@pool_name}")
|
21
|
+
exec("zpool import -N -R #{MOUNTPOINT} #{@boot_pool_name}") if @dev_boot
|
22
|
+
mount_swap
|
23
|
+
mount_root
|
24
|
+
mount_boot
|
25
|
+
mount_boot_efi
|
26
|
+
exec("zfs mount -a")
|
27
|
+
@state.mount
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def mount_swap
|
33
|
+
if Helpers::grep?('/proc/swaps', /^\/dev/)
|
34
|
+
exec("swapoff #{@dev_swap}")
|
35
|
+
end
|
36
|
+
|
37
|
+
exec("swapon #{@dev_swap}")
|
38
|
+
end
|
39
|
+
|
40
|
+
def mount_root
|
41
|
+
Helpers::mkdir(@root_dir)
|
42
|
+
exec("zfs mount #{@pool_name}/ROOT/gentoo")
|
43
|
+
end
|
44
|
+
|
45
|
+
def mount_boot_efi
|
46
|
+
return if ! @dev_boot_efi
|
47
|
+
Helpers::mkdir(@boot_efi_dir)
|
48
|
+
exec("mount #{@dev_boot_efi} #{@boot_efi_dir}")
|
49
|
+
end
|
50
|
+
|
51
|
+
def mount_boot
|
52
|
+
return if ! @dev_boot
|
53
|
+
Helpers::mkdir(@boot_dir)
|
54
|
+
exec("zfs mount #{@boot_pool_name}/BOOT/gentoo")
|
55
|
+
end
|
56
|
+
|
57
|
+
def exec(cmd)
|
58
|
+
@log.info("==> #{cmd}")
|
59
|
+
system(cmd)
|
60
|
+
unless $?.success?
|
61
|
+
raise "Error with #{cmd}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,147 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Zfs
|
4
|
+
class Partition < Getch::FileSystem::Zfs::Device
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
@state = Getch::States.new()
|
8
|
+
@log = Getch::Log.new()
|
9
|
+
run_partition
|
10
|
+
end
|
11
|
+
|
12
|
+
def run_partition
|
13
|
+
return if STATES[:partition ]
|
14
|
+
clear_struct
|
15
|
+
cleaning
|
16
|
+
partition
|
17
|
+
zfs
|
18
|
+
@state.partition
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def clear_struct
|
24
|
+
oldvg = `vgdisplay | grep #{@vg}`.chomp
|
25
|
+
oldzpool = `zpool status | grep pool:`.gsub(/pool: /, '').delete(' ').split("\n")
|
26
|
+
if oldzpool[0] != "" and $?.success?
|
27
|
+
oldzpool.each { |p| exec("zpool destroy #{p}") if p }
|
28
|
+
end
|
29
|
+
exec("vgremove -f #{@vg}") if oldvg != '' # remove older volume group
|
30
|
+
exec("pvremove -f #{@dev_root}") if oldvg != '' and File.exist? @dev_root # remove older volume group
|
31
|
+
|
32
|
+
exec("sgdisk -Z /dev/#{@disk}")
|
33
|
+
exec("wipefs -a /dev/#{@disk}")
|
34
|
+
end
|
35
|
+
|
36
|
+
# See https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing
|
37
|
+
# for SSD
|
38
|
+
def cleaning
|
39
|
+
@bloc=`blockdev --getbsz /dev/#{@disk}`.chomp
|
40
|
+
puts
|
41
|
+
print "Cleaning data on #{@disk}, can be long, avoid this on Flash Memory (SSD,USB,...) ? (n,y) "
|
42
|
+
case gets.chomp
|
43
|
+
when /^y|^Y/
|
44
|
+
exec("dd if=/dev/urandom of=/dev/#{@disk} bs=#{@bloc} status=progress")
|
45
|
+
else
|
46
|
+
return
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def partition
|
51
|
+
mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
|
52
|
+
if Helpers::efi?
|
53
|
+
exec("sgdisk -n1:1M:+260M -t1:EF00 /dev/#{@disk}")
|
54
|
+
exec("sgdisk -n2:0:+#{mem} -t2:8200 /dev/#{@disk}")
|
55
|
+
exec("sgdisk -n3:0:+0 -t3:BF00 /dev/#{@disk}")
|
56
|
+
else
|
57
|
+
exec("sgdisk -n1:1MiB:+1MiB -t1:EF02 /dev/#{@disk}")
|
58
|
+
exec("sgdisk -n2:0:+2G -t2:BE00 /dev/#{@disk}") # boot pool GRUB
|
59
|
+
exec("sgdisk -n3:0:+#{mem} -t3:8200 /dev/#{@disk}")
|
60
|
+
exec("sgdisk -n4:0:+0 -t4:BF00 /dev/#{@disk}")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def zfs
|
65
|
+
ashift = case @bloc
|
66
|
+
when 8096
|
67
|
+
13
|
68
|
+
when 4096
|
69
|
+
12
|
70
|
+
else # 512
|
71
|
+
9
|
72
|
+
end
|
73
|
+
|
74
|
+
Helpers::mkdir(MOUNTPOINT)
|
75
|
+
|
76
|
+
@log.debug("ashift found for #{@bloc} - #{ashift}")
|
77
|
+
if ! Helpers::efi?
|
78
|
+
# https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2020.04%20Root%20on%20ZFS.html
|
79
|
+
@log.info("Creating boot pool on #{@pool_name}")
|
80
|
+
exec("zpool create -f \\
|
81
|
+
-o ashift=#{ashift} -d \\
|
82
|
+
-o feature@async_destroy=enabled \\
|
83
|
+
-o feature@bookmarks=enabled \\
|
84
|
+
-o feature@embedded_data=enabled \\
|
85
|
+
-o feature@empty_bpobj=enabled \\
|
86
|
+
-o feature@enabled_txg=enabled \\
|
87
|
+
-o feature@extensible_dataset=enabled \\
|
88
|
+
-o feature@filesystem_limits=enabled \\
|
89
|
+
-o feature@hole_birth=enabled \\
|
90
|
+
-o feature@large_blocks=enabled \\
|
91
|
+
-o feature@lz4_compress=enabled \\
|
92
|
+
-o feature@spacemap_histogram=enabled \\
|
93
|
+
-O acltype=posixacl -O canmount=off -O compression=lz4 \\
|
94
|
+
-O devices=off -O normalization=formD -O atime=off -O xattr=sa \\
|
95
|
+
-O mountpoint=/boot -R #{MOUNTPOINT} \\
|
96
|
+
#{@boot_pool_name} #{@dev_boot}
|
97
|
+
")
|
98
|
+
end
|
99
|
+
|
100
|
+
exec("zpool create -f -o ashift=#{ashift} \\
|
101
|
+
-O acltype=posixacl -O canmount=off -O compression=lz4 \\
|
102
|
+
-O dnodesize=auto -O normalization=formD -O atime=off \\
|
103
|
+
-O xattr=sa -O mountpoint=/ -R #{MOUNTPOINT} \\
|
104
|
+
#{@pool_name} #{@dev_root}
|
105
|
+
")
|
106
|
+
|
107
|
+
add_datasets
|
108
|
+
end
|
109
|
+
|
110
|
+
def add_datasets
|
111
|
+
exec("zfs create -o canmount=off -o mountpoint=none #{@pool_name}/ROOT")
|
112
|
+
exec("zfs create -o canmount=off -o mountpoint=none #{@boot_pool_name}/BOOT") if @dev_boot
|
113
|
+
|
114
|
+
exec("zfs create -o canmount=noauto -o mountpoint=/ #{@pool_name}/ROOT/gentoo")
|
115
|
+
# set bootfs
|
116
|
+
#exec("zpool set bootfs=#{@pool_name}/ROOT/gentoo #{@pool_name}")
|
117
|
+
exec("zfs create -o canmount=noauto -o mountpoint=/boot #{@boot_pool_name}/BOOT/gentoo") if @dev_boot
|
118
|
+
|
119
|
+
exec("zfs create -o canmount=off #{@pool_name}/ROOT/gentoo/usr")
|
120
|
+
exec("zfs create #{@pool_name}/ROOT/gentoo/usr/src")
|
121
|
+
exec("zfs create -o canmount=off #{@pool_name}/ROOT/gentoo/var")
|
122
|
+
exec("zfs create #{@pool_name}/ROOT/gentoo/var/log")
|
123
|
+
exec("zfs create #{@pool_name}/ROOT/gentoo/var/db")
|
124
|
+
exec("zfs create #{@pool_name}/ROOT/gentoo/var/tmp")
|
125
|
+
|
126
|
+
exec("zfs create -o canmount=off -o mountpoint=/ #{@pool_name}/USERDATA")
|
127
|
+
exec("zfs create -o canmount=on -o mountpoint=/root #{@pool_name}/USERDATA/root")
|
128
|
+
exec("zfs create -o canmount=on -o mountpoint=/home/#{@user} #{@pool_name}/USERDATA/#{@user}") if @user
|
129
|
+
end
|
130
|
+
|
131
|
+
# Follow https://wiki.archlinux.org/index.php/Partitioning
|
132
|
+
# Partition_efi
|
133
|
+
# /boot/efi - EFI system partition - 260MB
|
134
|
+
# / - Root
|
135
|
+
|
136
|
+
# Partition_bios
|
137
|
+
# None - Bios Boot Partition - 1MiB
|
138
|
+
# /boot - Boot - 8300
|
139
|
+
# / - Root
|
140
|
+
|
141
|
+
def exec(cmd)
|
142
|
+
Getch::Command.new(cmd).run!
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
data/lib/getch/gentoo.rb
CHANGED
@@ -39,12 +39,12 @@ module Getch
|
|
39
39
|
def chroot
|
40
40
|
chroot = Getch::Gentoo::Chroot.new()
|
41
41
|
chroot.update
|
42
|
-
chroot.world
|
43
42
|
chroot.systemd
|
43
|
+
chroot.world
|
44
44
|
return if STATES[:gentoo_kernel]
|
45
45
|
chroot.kernel
|
46
46
|
chroot.kernel_deps
|
47
|
-
chroot.
|
47
|
+
chroot.install_pkgs
|
48
48
|
end
|
49
49
|
|
50
50
|
def kernel
|
@@ -52,6 +52,7 @@ module Getch
|
|
52
52
|
source = Getch::Gentoo::Sources.new()
|
53
53
|
new
|
54
54
|
source.build_kspp
|
55
|
+
source.init_config
|
55
56
|
source.build_others
|
56
57
|
source.make
|
57
58
|
@state.kernel
|
data/lib/getch/gentoo/boot.rb
CHANGED
@@ -6,13 +6,15 @@ module Getch
|
|
6
6
|
def initialize(opts)
|
7
7
|
@disk = opts.disk
|
8
8
|
@user = opts.username
|
9
|
+
@config = Getch.class_fs::Config.new()
|
9
10
|
end
|
10
11
|
|
11
12
|
def start
|
12
|
-
|
13
|
+
@config.fstab
|
13
14
|
bootloader
|
14
15
|
password
|
15
|
-
|
16
|
+
cleanup
|
17
|
+
the_end
|
16
18
|
end
|
17
19
|
|
18
20
|
def bootloader
|
@@ -29,38 +31,33 @@ module Getch
|
|
29
31
|
puts "Configuring systemd-boot."
|
30
32
|
# ref: https://forums.gentoo.org/viewtopic-p-8118822.html
|
31
33
|
esp = '/boot/efi'
|
32
|
-
#systemd = "#{MOUNTPOINT}/usr/lib/systemd"
|
33
|
-
#FileUtils.mkdir_p "#{systemd}#{esp}", mode: 0700 if ! Dir.exist?("#{systemd}#{esp}")
|
34
34
|
exec_chroot("bootctl --path #{esp} install")
|
35
|
-
|
36
|
-
root = `lsblk -o "PARTUUID" /dev/#{@disk}3 | tail -1`.chomp()
|
37
|
-
init = '/usr/lib/systemd/systemd'
|
38
|
-
datas_gentoo = [
|
39
|
-
'title Gentoo Linux',
|
40
|
-
'linux /vmlinuz',
|
41
|
-
"options root=PARTUUID=#{root} init=#{init} rw"
|
42
|
-
]
|
43
35
|
datas_loader = [
|
44
36
|
'default gentoo',
|
45
37
|
'timeout 3',
|
46
38
|
'editor 0'
|
47
39
|
]
|
48
|
-
|
40
|
+
@config.systemd_boot
|
49
41
|
File.write("#{MOUNTPOINT}/#{esp}/loader/loader.conf", datas_loader.join("\n"))
|
50
42
|
|
51
43
|
FileUtils.cp("#{MOUNTPOINT}/usr/src/linux/arch/x86/boot/bzImage", "#{MOUNTPOINT}/#{esp}/vmlinuz", preserve: true)
|
44
|
+
|
45
|
+
initramfs = Dir.glob("#{MOUNTPOINT}/boot/initramfs-*.img")
|
46
|
+
FileUtils.cp("#{initramfs[0]}", "#{MOUNTPOINT}/#{esp}/initramfs", preserve: true) if initramfs != []
|
47
|
+
|
52
48
|
exec_chroot("bootctl --path #{esp} update")
|
53
49
|
end
|
54
50
|
|
55
51
|
def bootctl_dep
|
56
52
|
puts 'Installing systemd-boot...'
|
57
53
|
exec_chroot("euse -p sys-apps/systemd -E gnuefi")
|
58
|
-
|
54
|
+
Getch::Emerge.new("sys-apps/systemd efivar").pkg!
|
59
55
|
end
|
60
56
|
|
61
57
|
def grub
|
62
58
|
puts 'Installing GRUB...'
|
63
|
-
|
59
|
+
Getch::Emerge.new("sys-boot/grub:2").pkg!
|
60
|
+
@config.grub
|
64
61
|
exec_chroot("grub-install /dev/#{@disk}")
|
65
62
|
exec_chroot('grub-mkconfig -o /boot/grub/grub.cfg')
|
66
63
|
end
|
@@ -78,17 +75,24 @@ module Getch
|
|
78
75
|
end
|
79
76
|
end
|
80
77
|
|
81
|
-
def umount
|
82
|
-
Helpers::exec_or_die("umount -l /mnt/gentoo/dev{/shm,/pts,}")
|
83
|
-
Helpers::exec_or_die("umount -R #{MOUNTPOINT}")
|
84
|
-
puts "Reboot when you have done"
|
85
|
-
end
|
86
|
-
|
87
78
|
private
|
88
79
|
|
89
|
-
def
|
90
|
-
|
91
|
-
|
80
|
+
def cleanup
|
81
|
+
Getch::Emerge.new("emerge --depclean").run!
|
82
|
+
end
|
83
|
+
|
84
|
+
def the_end
|
85
|
+
#Helpers::exec_or_die("umount -l /mnt/gentoo/dev{/shm,/pts,}")
|
86
|
+
#Helpers::exec_or_die("umount -R #{MOUNTPOINT}")
|
87
|
+
puts
|
88
|
+
puts "getch has finish, before reboot, you can:"
|
89
|
+
puts " + Chroot on your system with: chroot #{MOUNTPOINT} /bin/bash"
|
90
|
+
puts " + Install more packages like networkmanager or emacs"
|
91
|
+
puts
|
92
|
+
puts " + Add more modules for your kernel (graphic, wifi card) and recompile it with:"
|
93
|
+
puts " genkernel --kernel-config=/usr/src/linux/.config all "
|
94
|
+
puts
|
95
|
+
puts "Reboot the system when you have done !"
|
92
96
|
end
|
93
97
|
|
94
98
|
def exec_chroot(cmd)
|
@@ -96,7 +100,7 @@ module Getch
|
|
96
100
|
source /etc/profile
|
97
101
|
#{cmd}
|
98
102
|
\""
|
99
|
-
|
103
|
+
Getch::Command.new(script).run!
|
100
104
|
end
|
101
105
|
end
|
102
106
|
end
|
data/lib/getch/gentoo/chroot.rb
CHANGED
@@ -3,21 +3,22 @@ module Getch
|
|
3
3
|
class Chroot
|
4
4
|
def initialize
|
5
5
|
@state = Getch::States.new()
|
6
|
+
@pkgs = []
|
6
7
|
mount
|
7
8
|
end
|
8
9
|
|
9
10
|
def update
|
10
11
|
return if STATES[:gentoo_update]
|
11
12
|
puts "Downloading the last ebuilds for Gentoo..."
|
12
|
-
|
13
|
+
Helpers::create_dir("#{MOUNTPOINT}/var/db/repos/gentoo")
|
14
|
+
cmd = "emaint sync --auto"
|
13
15
|
exec_chroot(cmd)
|
14
16
|
end
|
15
17
|
|
16
18
|
def world
|
17
19
|
return if STATES[:gentoo_update]
|
18
|
-
puts "Update Gentoo"
|
19
|
-
|
20
|
-
exec_chroot(cmd)
|
20
|
+
puts "Update Gentoo world"
|
21
|
+
Getch::Emerge.new("emerge --update --deep --newuse @world").run!
|
21
22
|
@state.update
|
22
23
|
end
|
23
24
|
|
@@ -29,10 +30,10 @@ module Getch
|
|
29
30
|
|
30
31
|
def kernel
|
31
32
|
return if Dir.exist? "#{MOUNTPOINT}/usr/src/linux"
|
32
|
-
puts "Installing kernel gentoo-sources..."
|
33
33
|
license = "#{MOUNTPOINT}/etc/portage/package.license"
|
34
34
|
File.write(license, "sys-kernel/linux-firmware linux-fw-redistributable no-source-code\n")
|
35
|
-
|
35
|
+
@pkgs << "sys-kernel/gentoo-sources"
|
36
|
+
@pkgs << "dev-util/dwarves"
|
36
37
|
end
|
37
38
|
|
38
39
|
def kernel_deps
|
@@ -41,8 +42,12 @@ module Getch
|
|
41
42
|
garden_dep
|
42
43
|
end
|
43
44
|
|
44
|
-
def
|
45
|
-
|
45
|
+
def install_pkgs
|
46
|
+
@pkgs << "app-admin/sudo"
|
47
|
+
@pkgs << "app-editors/vim"
|
48
|
+
all_pkgs = @pkgs.join(" ")
|
49
|
+
puts "Installing #{all_pkgs}..."
|
50
|
+
Getch::Emerge.new(all_pkgs).pkg!
|
46
51
|
end
|
47
52
|
|
48
53
|
private
|
@@ -54,14 +59,13 @@ module Getch
|
|
54
59
|
|
55
60
|
Dir.chdir("#{MOUNTPOINT}/root")
|
56
61
|
Helpers::get_file_online(url, file)
|
57
|
-
|
62
|
+
Getch::Command.new("tar xzf #{file}").run! if ! Dir.exist? 'garden-master'
|
58
63
|
end
|
59
64
|
|
60
65
|
def garden_dep
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
exec_chroot(cmd)
|
66
|
+
Getch::Emerge.new("gentoolkit").pkg!
|
67
|
+
exec_chroot("euse -p sys-apps/kmod -E lzma")
|
68
|
+
@pkgs << "sys-apps/kmod"
|
65
69
|
end
|
66
70
|
|
67
71
|
def mount
|
@@ -80,7 +84,7 @@ module Getch
|
|
80
84
|
source /etc/profile
|
81
85
|
#{cmd}
|
82
86
|
\""
|
83
|
-
|
87
|
+
Getch::Command.new(script).run!
|
84
88
|
end
|
85
89
|
end
|
86
90
|
end
|
data/lib/getch/gentoo/config.rb
CHANGED
@@ -11,29 +11,38 @@ module Getch
|
|
11
11
|
|
12
12
|
def portage
|
13
13
|
nproc = `nproc`.chomp()
|
14
|
-
|
14
|
+
grub_pc = Helpers::efi? ? '' : 'GRUB_PLATFORMS="pc"'
|
15
|
+
quiet = DEFAULT_OPTIONS[:verbose] ? '' : "EMERGE_DEFAULT_OPTS=\"--jobs=#{nproc} --load-average=#{nproc}\""
|
15
16
|
data = [
|
16
17
|
'',
|
17
|
-
'
|
18
|
+
'ACCEPT_KEYWORDS="amd64"',
|
18
19
|
"MAKEOPTS=\"-j#{nproc} -l#{nproc}\"",
|
20
|
+
quiet,
|
19
21
|
'INPUT_DEVICES="libinput"',
|
20
|
-
|
22
|
+
grub_pc
|
21
23
|
]
|
22
24
|
File.write(@make, data.join("\n"), mode: "a")
|
23
25
|
end
|
24
26
|
|
27
|
+
# Write a repos.conf/gentoo.conf with the gpg verification
|
25
28
|
def repo
|
26
29
|
src = "#{MOUNTPOINT}/usr/share/portage/config/repos.conf"
|
27
30
|
dest = "#{MOUNTPOINT}/etc/portage/repos.conf"
|
28
31
|
FileUtils.mkdir dest, mode: 0644 if ! Dir.exist?(dest)
|
32
|
+
tmp = Tempfile.new('gentoo.conf')
|
29
33
|
line_count = 0
|
30
|
-
|
34
|
+
|
31
35
|
File.open(src).each { |l|
|
32
|
-
File.write(
|
33
|
-
|
36
|
+
File.write(tmp, "sync-allow-hardlinks = yes\n", mode: 'a') if line_count == 2
|
37
|
+
if l.match(/^sync-type = rsync/)
|
38
|
+
File.write(tmp, "sync-type = webrsync\n", mode: 'a')
|
39
|
+
else
|
40
|
+
File.write(tmp, l, mode: 'a')
|
41
|
+
end
|
34
42
|
line_count += 1
|
35
43
|
}
|
36
|
-
|
44
|
+
|
45
|
+
FileUtils.copy_file(tmp, "#{dest}/gentoo.conf", preserve = false)
|
37
46
|
end
|
38
47
|
|
39
48
|
def network
|
@@ -48,7 +57,7 @@ module Getch
|
|
48
57
|
File.write("#{MOUNTPOINT}/etc/locale.conf", "LANG=#{@lang}\n")
|
49
58
|
File.write("#{MOUNTPOINT}/etc/locale.conf", 'LC_COLLATE=C', mode: 'a')
|
50
59
|
File.write("#{MOUNTPOINT}/etc/timezone", "#{options.zoneinfo}")
|
51
|
-
File.write("#{MOUNTPOINT}/etc/vconsole.conf", "KEYMAP=#{options.
|
60
|
+
File.write("#{MOUNTPOINT}/etc/vconsole.conf", "KEYMAP=#{options.keymap}")
|
52
61
|
end
|
53
62
|
|
54
63
|
def hostname
|
@@ -72,7 +81,7 @@ module Getch
|
|
72
81
|
def control_options(options)
|
73
82
|
search_zone(options.zoneinfo)
|
74
83
|
search_utf8(options.language)
|
75
|
-
search_key(options.
|
84
|
+
search_key(options.keymap)
|
76
85
|
end
|
77
86
|
|
78
87
|
def search_key(keys)
|