getch 0.0.9 → 0.1.5
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/CHANGELOG.md +45 -0
- data/README.md +57 -11
- data/bin/setup.sh +4 -2
- data/lib/getch.rb +27 -10
- data/lib/getch/command.rb +25 -4
- data/lib/getch/config.rb +58 -0
- data/lib/getch/filesystem.rb +6 -0
- data/lib/getch/filesystem/clean.rb +58 -0
- data/lib/getch/filesystem/device.rb +61 -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/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 -5
- data/lib/getch/filesystem/ext4/encrypt/mount.rb +6 -43
- data/lib/getch/filesystem/ext4/encrypt/partition.rb +19 -38
- data/lib/getch/filesystem/ext4/format.rb +3 -5
- data/lib/getch/filesystem/ext4/mount.rb +7 -46
- data/lib/getch/filesystem/ext4/partition.rb +16 -39
- data/lib/getch/filesystem/lvm/config.rb +11 -15
- data/lib/getch/filesystem/lvm/deps.rb +5 -20
- data/lib/getch/filesystem/lvm/device.rb +33 -9
- data/lib/getch/filesystem/lvm/encrypt/config.rb +9 -12
- data/lib/getch/filesystem/lvm/encrypt/deps.rb +5 -22
- data/lib/getch/filesystem/lvm/encrypt/device.rb +33 -9
- data/lib/getch/filesystem/lvm/encrypt/format.rb +3 -3
- data/lib/getch/filesystem/lvm/encrypt/mount.rb +7 -46
- data/lib/getch/filesystem/lvm/encrypt/partition.rb +20 -31
- data/lib/getch/filesystem/lvm/format.rb +11 -7
- data/lib/getch/filesystem/lvm/mount.rb +7 -46
- data/lib/getch/filesystem/lvm/partition.rb +19 -31
- data/lib/getch/filesystem/mount.rb +56 -0
- data/lib/getch/filesystem/partition.rb +77 -0
- data/lib/getch/filesystem/zfs.rb +14 -0
- data/lib/getch/filesystem/zfs/config.rb +57 -0
- data/lib/getch/filesystem/zfs/deps.rb +95 -0
- data/lib/getch/filesystem/zfs/device.rb +58 -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 +97 -0
- data/lib/getch/filesystem/zfs/encrypt/device.rb +60 -0
- data/lib/getch/filesystem/zfs/encrypt/format.rb +104 -0
- data/lib/getch/filesystem/zfs/encrypt/mount.rb +51 -0
- data/lib/getch/filesystem/zfs/encrypt/partition.rb +66 -0
- data/lib/getch/filesystem/zfs/format.rb +113 -0
- data/lib/getch/filesystem/zfs/mount.rb +48 -0
- data/lib/getch/filesystem/zfs/partition.rb +65 -0
- data/lib/getch/gentoo.rb +11 -4
- data/lib/getch/gentoo/boot.rb +34 -16
- data/lib/getch/gentoo/chroot.rb +16 -25
- data/lib/getch/gentoo/config.rb +59 -7
- data/lib/getch/gentoo/sources.rb +54 -26
- data/lib/getch/gentoo/use.rb +43 -0
- data/lib/getch/gentoo/use_flag.rb +64 -0
- data/lib/getch/guard.rb +62 -0
- data/lib/getch/helpers.rb +31 -13
- data/lib/getch/options.rb +24 -9
- data/lib/getch/version.rb +1 -1
- metadata +40 -18
- metadata.gz.sig +0 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module Getch
|
4
|
+
module FileSystem
|
5
|
+
module Zfs
|
6
|
+
module Encrypt
|
7
|
+
class Mount < Getch::FileSystem::Zfs::Encrypt::Device
|
8
|
+
def initialize
|
9
|
+
super
|
10
|
+
@root_dir = MOUNTPOINT
|
11
|
+
@mount = Getch::FileSystem::Mount.new
|
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
|
+
exec("zfs load-key -a")
|
23
|
+
@mount.swap(@dev_swap)
|
24
|
+
mount_root
|
25
|
+
mount_boot
|
26
|
+
@mount.esp(@dev_esp)
|
27
|
+
exec("zfs mount -a")
|
28
|
+
@state.mount
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def mount_root
|
34
|
+
Helpers::mkdir(@root_dir)
|
35
|
+
exec("zfs mount #{@pool_name}/ROOT/gentoo")
|
36
|
+
end
|
37
|
+
|
38
|
+
def mount_boot
|
39
|
+
return if ! @dev_boot
|
40
|
+
exec("zfs mount #{@boot_pool_name}/BOOT/gentoo")
|
41
|
+
end
|
42
|
+
|
43
|
+
def exec(cmd)
|
44
|
+
@log.info("==> #{cmd}")
|
45
|
+
Helpers::sys(cmd)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Zfs
|
4
|
+
module Encrypt
|
5
|
+
class Partition < Getch::FileSystem::Zfs::Encrypt::Device
|
6
|
+
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.hdd(@disk)
|
19
|
+
@clean.external_disk(@disk, @boot_disk, @cache_disk, @home_disk)
|
20
|
+
|
21
|
+
partition
|
22
|
+
cache
|
23
|
+
@state.partition
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def partition
|
29
|
+
if Helpers::efi?
|
30
|
+
@partition.efi(@dev_esp)
|
31
|
+
@partition.swap(@dev_swap) if !@cache_disk
|
32
|
+
@partition.root(@dev_root, "BF00") if @root_part != 1
|
33
|
+
else
|
34
|
+
@partition.gpt(@dev_gpt)
|
35
|
+
@partition.boot(@dev_boot)
|
36
|
+
@partition.swap(@dev_swap) if !@cache_disk
|
37
|
+
@partition.root(@dev_root, "BF00") if @root_part != 1
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def cache
|
42
|
+
if @cache_disk
|
43
|
+
mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
|
44
|
+
exec("sgdisk -n1:0:+#{mem} -t1:8200 /dev/#{@cache_disk}")
|
45
|
+
exec("sgdisk -n2:0:+4G -t2:BF07 /dev/#{@cache_disk}")
|
46
|
+
exec("sgdisk -n3:0:0 -t3:BF08 /dev/#{@cache_disk}")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Partition_efi
|
51
|
+
# /efi - EFI system partition - 260MB
|
52
|
+
# / - Root
|
53
|
+
|
54
|
+
# Partition_bios
|
55
|
+
# None - Bios Boot Partition - 1MiB
|
56
|
+
# /boot - Boot - 8300
|
57
|
+
# / - Root
|
58
|
+
|
59
|
+
def exec(cmd)
|
60
|
+
Helpers::sys(cmd)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Zfs
|
4
|
+
class Format < Getch::FileSystem::Zfs::Device
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
@log = Getch::Log.new
|
8
|
+
@state = Getch::States.new
|
9
|
+
if ! @id
|
10
|
+
@log.info "Research pool id for #{@dev_root}..."
|
11
|
+
@id = Helpers::pool_id(@dev_root)
|
12
|
+
@boot_pool_name = "bpool-#{@id}"
|
13
|
+
@pool_name = "rpool-#{@id}"
|
14
|
+
end
|
15
|
+
format
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def format
|
21
|
+
return if STATES[:format]
|
22
|
+
raise "Error, no id found for #{@dev_root}." if ! @id
|
23
|
+
@log.info "Create #{@id} for #{@pool_name}"
|
24
|
+
system("mkfs.fat -F32 #{@dev_esp}") if @dev_esp
|
25
|
+
zfs
|
26
|
+
cache
|
27
|
+
datasets
|
28
|
+
@state.format
|
29
|
+
end
|
30
|
+
|
31
|
+
def zfs
|
32
|
+
bloc=`blockdev --getpbsz #{@dev_root}`
|
33
|
+
ashift = case bloc
|
34
|
+
when /8096/
|
35
|
+
13
|
36
|
+
when /4096/
|
37
|
+
12
|
38
|
+
else # 512
|
39
|
+
9
|
40
|
+
end
|
41
|
+
|
42
|
+
Helpers::mkdir(MOUNTPOINT)
|
43
|
+
@log.debug("ashift found for #{bloc} - #{ashift}")
|
44
|
+
|
45
|
+
if @dev_boot
|
46
|
+
# https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2020.04%20Root%20on%20ZFS.html
|
47
|
+
@log.info("Creating boot pool on #{@pool_name}")
|
48
|
+
exec("zpool create -f \\
|
49
|
+
-o ashift=#{ashift} -o autotrim=on -d \\
|
50
|
+
-o feature@async_destroy=enabled \\
|
51
|
+
-o feature@bookmarks=enabled \\
|
52
|
+
-o feature@embedded_data=enabled \\
|
53
|
+
-o feature@empty_bpobj=enabled \\
|
54
|
+
-o feature@enabled_txg=enabled \\
|
55
|
+
-o feature@extensible_dataset=enabled \\
|
56
|
+
-o feature@filesystem_limits=enabled \\
|
57
|
+
-o feature@hole_birth=enabled \\
|
58
|
+
-o feature@large_blocks=enabled \\
|
59
|
+
-o feature@lz4_compress=enabled \\
|
60
|
+
-o feature@spacemap_histogram=enabled \\
|
61
|
+
-O acltype=posixacl -O canmount=off -O compression=lz4 \\
|
62
|
+
-O devices=off -O normalization=formD -O atime=off -O xattr=sa \\
|
63
|
+
-O mountpoint=/boot -R #{MOUNTPOINT} \\
|
64
|
+
#{@boot_pool_name} #{@dev_boot}
|
65
|
+
")
|
66
|
+
end
|
67
|
+
|
68
|
+
exec("zpool create -f -o ashift=#{ashift} -o autotrim=on \\
|
69
|
+
-O acltype=posixacl -O canmount=off -O compression=lz4 \\
|
70
|
+
-O dnodesize=auto -O normalization=formD -O atime=off \\
|
71
|
+
-O xattr=sa -O mountpoint=/ -R #{MOUNTPOINT} \\
|
72
|
+
#{@pool_name} #{@dev_root}
|
73
|
+
")
|
74
|
+
end
|
75
|
+
|
76
|
+
def cache
|
77
|
+
system("mkswap -f #{@dev_swap}")
|
78
|
+
if @dev_log
|
79
|
+
exec("zpool add #{@pool_name} log #{@dev_log}")
|
80
|
+
end
|
81
|
+
if @dev_cache
|
82
|
+
exec("zpool add #{@pool_name} cache #{@dev_cache}")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def datasets
|
87
|
+
exec("zfs create -o canmount=off -o mountpoint=none #{@pool_name}/ROOT")
|
88
|
+
exec("zfs create -o canmount=off -o mountpoint=none #{@boot_pool_name}/BOOT") if @dev_boot
|
89
|
+
|
90
|
+
exec("zfs create -o canmount=noauto -o mountpoint=/ #{@pool_name}/ROOT/gentoo")
|
91
|
+
exec("zfs create -o canmount=noauto -o mountpoint=/boot #{@boot_pool_name}/BOOT/gentoo") if @dev_boot
|
92
|
+
|
93
|
+
exec("zfs create -o canmount=off #{@pool_name}/ROOT/gentoo/usr")
|
94
|
+
exec("zfs create #{@pool_name}/ROOT/gentoo/usr/src")
|
95
|
+
exec("zfs create -o canmount=off #{@pool_name}/ROOT/gentoo/var")
|
96
|
+
exec("zfs create #{@pool_name}/ROOT/gentoo/var/log")
|
97
|
+
exec("zfs create #{@pool_name}/ROOT/gentoo/var/db")
|
98
|
+
exec("zfs create #{@pool_name}/ROOT/gentoo/var/tmp")
|
99
|
+
|
100
|
+
exec("zfs create -o canmount=off -o mountpoint=/ #{@pool_name}/USERDATA")
|
101
|
+
exec("zfs create -o canmount=on -o mountpoint=/root #{@pool_name}/USERDATA/root")
|
102
|
+
if @user
|
103
|
+
exec("zfs create -o canmount=on -o mountpoint=/home/#{@user} #{@pool_name}/USERDATA/#{@user}")
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def exec(cmd)
|
108
|
+
Getch::Command.new(cmd).run!
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,48 @@
|
|
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
|
+
@mount = Getch::FileSystem::Mount.new
|
11
|
+
@state = Getch::States.new
|
12
|
+
@log = Getch::Log.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def run
|
16
|
+
return if STATES[:mount]
|
17
|
+
exec("zpool export -a")
|
18
|
+
exec("rm -rf #{MOUNTPOINT}/*")
|
19
|
+
exec("zpool import -N -R #{MOUNTPOINT} #{@pool_name}")
|
20
|
+
exec("zpool import -N -R #{MOUNTPOINT} #{@boot_pool_name}") if @dev_boot
|
21
|
+
@mount.swap(@dev_swap)
|
22
|
+
mount_root
|
23
|
+
mount_boot
|
24
|
+
@mount.esp(@dev_esp)
|
25
|
+
exec("zfs mount -a")
|
26
|
+
@state.mount
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def mount_root
|
32
|
+
Helpers::mkdir(@root_dir)
|
33
|
+
exec("zfs mount #{@pool_name}/ROOT/gentoo")
|
34
|
+
end
|
35
|
+
|
36
|
+
def mount_boot
|
37
|
+
return if ! @dev_boot
|
38
|
+
exec("zfs mount #{@boot_pool_name}/BOOT/gentoo")
|
39
|
+
end
|
40
|
+
|
41
|
+
def exec(cmd)
|
42
|
+
@log.info("==> #{cmd}")
|
43
|
+
Helpers::sys(cmd)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Zfs
|
4
|
+
class Partition < Getch::FileSystem::Zfs::Device
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
@clean = Getch::FileSystem::Clean
|
8
|
+
@partition = Getch::FileSystem::Partition.new
|
9
|
+
@state = Getch::States.new()
|
10
|
+
@log = Getch::Log.new()
|
11
|
+
run_partition
|
12
|
+
end
|
13
|
+
|
14
|
+
def run_partition
|
15
|
+
return if STATES[:partition ]
|
16
|
+
@clean.old_zpool
|
17
|
+
@clean.hdd(@disk)
|
18
|
+
@clean.external_disk(@disk, @boot_disk, @cache_disk, @home_disk)
|
19
|
+
|
20
|
+
partition
|
21
|
+
cache
|
22
|
+
@state.partition
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def partition
|
28
|
+
if @efi
|
29
|
+
@partition.efi(@dev_esp)
|
30
|
+
@partition.swap(@dev_swap) if !@cache_disk
|
31
|
+
@partition.root(@dev_root, "BF00") if @root_part != 1
|
32
|
+
else
|
33
|
+
@partition.gpt(@dev_gpt)
|
34
|
+
# Boot pool for GRUB2
|
35
|
+
@partition.boot(@dev_boot)
|
36
|
+
@partition.swap(@dev_swap) if !@cache_disk
|
37
|
+
@partition.root(@dev_root, "BF00") if @root_part != 1
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def cache
|
42
|
+
if @cache_disk
|
43
|
+
mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
|
44
|
+
exec("sgdisk -n1:0:+#{mem} -t1:8200 /dev/#{@cache_disk}")
|
45
|
+
exec("sgdisk -n2:0:+4G -t2:BF07 /dev/#{@cache_disk}")
|
46
|
+
exec("sgdisk -n3:0:0 -t3:BF00 /dev/#{@cache_disk}")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# Partition_efi
|
51
|
+
# /efi - EFI system partition - 260MB
|
52
|
+
# / - Root
|
53
|
+
|
54
|
+
# Partition_bios
|
55
|
+
# None - Bios Boot Partition - 1MiB
|
56
|
+
# /boot - Boot - 8300
|
57
|
+
# / - Root
|
58
|
+
|
59
|
+
def exec(cmd)
|
60
|
+
Getch::Command.new(cmd).run!
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/getch/gentoo.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
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
|
@@ -29,6 +29,7 @@ module Getch
|
|
29
29
|
config = Getch::Gentoo::Config.new()
|
30
30
|
config.portage
|
31
31
|
config.portage_fs
|
32
|
+
config.portage_bashrc
|
32
33
|
config.repo
|
33
34
|
config.network
|
34
35
|
config.systemd(options)
|
@@ -36,15 +37,21 @@ module Getch
|
|
36
37
|
@state.config
|
37
38
|
end
|
38
39
|
|
39
|
-
def chroot
|
40
|
+
def chroot(options)
|
40
41
|
chroot = Getch::Gentoo::Chroot.new()
|
41
42
|
chroot.update
|
43
|
+
chroot.cpuflags
|
42
44
|
chroot.systemd
|
45
|
+
|
46
|
+
flags = Getch::Gentoo::UseFlag.new(options)
|
47
|
+
flags.apply
|
48
|
+
|
43
49
|
chroot.world
|
44
50
|
return if STATES[:gentoo_kernel]
|
45
51
|
chroot.kernel
|
46
52
|
chroot.kernel_deps
|
47
53
|
chroot.install_pkgs
|
54
|
+
chroot.kernel_link
|
48
55
|
end
|
49
56
|
|
50
57
|
def kernel
|
@@ -52,8 +59,8 @@ module Getch
|
|
52
59
|
source = Getch::Gentoo::Sources.new()
|
53
60
|
new
|
54
61
|
source.build_kspp
|
55
|
-
source.init_config
|
56
62
|
source.build_others
|
63
|
+
source.firewall
|
57
64
|
source.make
|
58
65
|
@state.kernel
|
59
66
|
end
|
data/lib/getch/gentoo/boot.rb
CHANGED
@@ -4,7 +4,7 @@ module Getch
|
|
4
4
|
module Gentoo
|
5
5
|
class Boot
|
6
6
|
def initialize(opts)
|
7
|
-
@disk = opts.disk
|
7
|
+
@disk = opts.boot_disk ? opts.boot_disk : opts.disk
|
8
8
|
@user = opts.username
|
9
9
|
@config = Getch.class_fs::Config.new()
|
10
10
|
end
|
@@ -13,10 +13,14 @@ module Getch
|
|
13
13
|
@config.fstab
|
14
14
|
bootloader
|
15
15
|
password
|
16
|
-
|
16
|
+
permission
|
17
|
+
the_end
|
17
18
|
end
|
18
19
|
|
19
20
|
def bootloader
|
21
|
+
# Ensure than systemd is build with all our flags
|
22
|
+
Getch::Emerge.new("@world").pkg!
|
23
|
+
|
20
24
|
if Helpers::efi?
|
21
25
|
bootctl
|
22
26
|
else
|
@@ -29,8 +33,8 @@ module Getch
|
|
29
33
|
bootctl_dep
|
30
34
|
puts "Configuring systemd-boot."
|
31
35
|
# ref: https://forums.gentoo.org/viewtopic-p-8118822.html
|
32
|
-
esp = '/
|
33
|
-
|
36
|
+
esp = '/efi'
|
37
|
+
Getch::Chroot.new("bootctl --path #{esp} install").run!
|
34
38
|
datas_loader = [
|
35
39
|
'default gentoo',
|
36
40
|
'timeout 3',
|
@@ -44,43 +48,57 @@ module Getch
|
|
44
48
|
initramfs = Dir.glob("#{MOUNTPOINT}/boot/initramfs-*.img")
|
45
49
|
FileUtils.cp("#{initramfs[0]}", "#{MOUNTPOINT}/#{esp}/initramfs", preserve: true) if initramfs != []
|
46
50
|
|
47
|
-
|
51
|
+
Getch::Chroot.new("bootctl --path #{esp} update").run!
|
48
52
|
end
|
49
53
|
|
50
54
|
def bootctl_dep
|
51
55
|
puts 'Installing systemd-boot...'
|
52
|
-
|
53
|
-
Getch::Emerge.new("sys-apps/systemd efivar").pkg!
|
56
|
+
Getch::Emerge.new("efivar").pkg!
|
54
57
|
end
|
55
58
|
|
56
59
|
def grub
|
57
60
|
puts 'Installing GRUB...'
|
58
61
|
Getch::Emerge.new("sys-boot/grub:2").pkg!
|
59
62
|
@config.grub
|
60
|
-
|
61
|
-
|
63
|
+
Getch::Chroot.new("grub-install /dev/#{@disk}").run!
|
64
|
+
Getch::Chroot.new("grub-mkconfig -o /boot/grub/grub.cfg").run!
|
62
65
|
end
|
63
66
|
|
64
67
|
def password
|
65
68
|
puts 'Password for root'
|
66
69
|
cmd = "chroot #{MOUNTPOINT} /bin/bash -c \"source /etc/profile && passwd\""
|
67
70
|
system(cmd)
|
68
|
-
if @user
|
71
|
+
if @user
|
69
72
|
puts "Creating user #{@user}"
|
70
|
-
|
73
|
+
Getch::Chroot.new("useradd -m -G users,wheel,audio,video #{@user}").run!
|
71
74
|
puts "Password for your user #{@user}"
|
72
75
|
cmd = "chroot #{MOUNTPOINT} /bin/bash -c \"source /etc/profile && passwd #{@user}\""
|
73
76
|
system(cmd)
|
74
77
|
end
|
75
78
|
end
|
76
79
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
80
|
+
private
|
81
|
+
|
82
|
+
def permission
|
83
|
+
FileUtils.chmod_R 0755, "#{MOUNTPOINT}/etc/portage"
|
84
|
+
if @user
|
85
|
+
Getch::Chroot.new("chown -R #{@user}:#{@user} /home/#{@user}").run!
|
86
|
+
end
|
81
87
|
end
|
82
88
|
|
83
|
-
|
89
|
+
def the_end
|
90
|
+
#Helpers::exec_or_die("umount -l /mnt/gentoo/dev{/shm,/pts,}")
|
91
|
+
#Helpers::exec_or_die("umount -R #{MOUNTPOINT}")
|
92
|
+
puts
|
93
|
+
puts "getch has finish, before reboot, you can:"
|
94
|
+
puts " + Chroot on your system with: chroot #{MOUNTPOINT} /bin/bash"
|
95
|
+
puts " + Install more packages like networkmanager or emacs"
|
96
|
+
puts
|
97
|
+
puts " + Add more modules for your kernel (graphic, wifi card) and recompile it with:"
|
98
|
+
puts " genkernel --kernel-config=/usr/src/linux/.config all "
|
99
|
+
puts
|
100
|
+
puts "Reboot the system when you have done !"
|
101
|
+
end
|
84
102
|
|
85
103
|
def exec_chroot(cmd)
|
86
104
|
script = "chroot #{MOUNTPOINT} /bin/bash -c \"
|