getch 0.0.2 → 0.0.7
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 +41 -0
- data/README.md +20 -1
- data/bin/setup.sh +24 -10
- data/getch.gemspec +5 -0
- data/lib/getch.rb +42 -18
- data/lib/getch/command.rb +55 -0
- data/lib/getch/filesystem.rb +6 -0
- data/lib/getch/filesystem/ext4.rb +13 -0
- data/lib/getch/filesystem/ext4/config.rb +58 -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 +62 -0
- data/lib/getch/filesystem/ext4/encrypt/deps.rb +37 -0
- data/lib/getch/filesystem/ext4/encrypt/device.rb +20 -0
- data/lib/getch/filesystem/ext4/encrypt/format.rb +26 -0
- data/lib/getch/filesystem/ext4/encrypt/mount.rb +64 -0
- data/lib/getch/filesystem/ext4/encrypt/partition.rb +95 -0
- data/lib/getch/filesystem/ext4/format.rb +24 -0
- data/lib/getch/filesystem/ext4/mount.rb +62 -0
- data/lib/getch/filesystem/ext4/partition.rb +75 -0
- data/lib/getch/gentoo.rb +67 -0
- data/lib/getch/gentoo/boot.rb +91 -0
- data/lib/getch/gentoo/chroot.rb +90 -0
- data/lib/getch/gentoo/config.rb +102 -0
- data/lib/getch/gentoo/sources.rb +82 -0
- data/lib/getch/gentoo/stage.rb +74 -0
- data/lib/getch/helpers.rb +49 -0
- data/lib/getch/options.rb +17 -9
- data/lib/getch/states.rb +26 -1
- data/lib/getch/version.rb +1 -1
- metadata +31 -5
- metadata.gz.sig +0 -0
- data/lib/getch/disk.rb +0 -83
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb6075f7c63fb0a9b3d9cae63e24aae84cb3c90947985aa54ba48bc0dd284dcc
|
4
|
+
data.tar.gz: 26ad192fed5685f42e62d400706d6127c3d28a0fc5ce67296da6ef758955de25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe321ca0175f95f07c68026269830932609ba2fe5a1757efb7228bc26a069c4f5c322b21c534d05077c98a4dddfb0ed33bb2aa2fb30b1bc2df234e25b47acb56
|
7
|
+
data.tar.gz: 5b3540c9a1f07162bfbb3e4772f78c0b74b9525ec74fed7ce71c507da5f58befc85e6f8198abc595b49fa767abc77349f56b0ab9790d56730c45771365268fb0
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
* Repair GRUB/fstab for BIOS system, add config and all
|
2
|
+
* New option --encrypt (LVM/EXT4/LUKS for now)
|
3
|
+
* Adding LVM
|
4
|
+
* Create a swap volume equal to the memory installed
|
5
|
+
|
6
|
+
## 0.0.6, release 2020-09-19
|
7
|
+
* Add support for QEMU guest with KVM and Virtio driver
|
8
|
+
* Kernel compilation, initialize a config file with `make localyesconfig`.
|
9
|
+
* More modular codes to start with encryption and other filesystems.
|
10
|
+
* Add the new option --verbose to display output of compilation, etc...
|
11
|
+
|
12
|
+
## 0.0.5, release 2020-09-17
|
13
|
+
* Generate a hostname
|
14
|
+
* Configure systemd-boot for UEFI system
|
15
|
+
|
16
|
+
## 0.0.4, release 2020-09-16
|
17
|
+
* Boot on a BIOS system with VirtualBox
|
18
|
+
* Install Grub
|
19
|
+
* Create user
|
20
|
+
* Create passwd for root and user
|
21
|
+
* Check lsmod to install deps (like wpa_supplicant) and patch the kernel
|
22
|
+
|
23
|
+
## 0.0.3, release 2020-09-14
|
24
|
+
* Add dhcpcd, gentoo-sources, linux-firmware
|
25
|
+
* Kernel build by using https://github.com/szorfein/garden
|
26
|
+
* Populate /etc/portage (/etc/portage/package.{use,unmask,accept_keywords}/zzz_via_autounmask)
|
27
|
+
* Download all the lastest ebuild via emerge-webrsync
|
28
|
+
* Update gentoo via emerge -uDN @world
|
29
|
+
|
30
|
+
## 0.0.2, release 2020-09-12
|
31
|
+
* Getch genere a file /tmp/install_gentoo to avoid to remake same task over and over
|
32
|
+
* Support for ext4
|
33
|
+
* Mount partition on /mnt/gentoo during the install
|
34
|
+
* Download, verify the checksum and decompress the last stage3-amd64-systemd
|
35
|
+
|
36
|
+
## 0.0.1, release 2020-09-10
|
37
|
+
* Partition disk (at least 15G required) with sgdisk (create /boot, /, /home, and swap)
|
38
|
+
* Support for one disk with -d|--disk
|
39
|
+
* Add few options for the CLI
|
40
|
+
* Add bin/setup.sh to install ruby when boot on a ISO file
|
41
|
+
* Init project
|
data/README.md
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
# Getch
|
2
2
|
A CLI tool to install Gentoo.
|
3
3
|
|
4
|
+
## Description
|
5
|
+
Actually, Getch support only the [AMD64 handbook](https://wiki.gentoo.org/wiki/Handbook:AMD64) and only with the last `stage3-amd64-systemd`.
|
6
|
+
It also require a disk (only one for now) with a minimum of 20G.
|
7
|
+
|
8
|
+
Filesystem supported by Getch are: (the list will evolve...)
|
9
|
+
+ ext4 with GRUB2 for BIOS based system and systemd-boot for UEFI systems.
|
10
|
+
|
11
|
+
I would also add disk encryption soon.
|
12
|
+
|
13
|
+
The ISO images i was able to test and that works:
|
14
|
+
+ [Archlinux](https://www.archlinux.org/download/)
|
15
|
+
|
4
16
|
## Install
|
5
17
|
Getch is cryptographically signed, so add my public key (if you haven’t already) as a trusted certificate.
|
6
18
|
With `gem` installed:
|
@@ -21,4 +33,11 @@ When you boot from an `iso`, you can install `ruby`, `getch` and correct your `P
|
|
21
33
|
## Examples
|
22
34
|
For a french user:
|
23
35
|
|
24
|
-
# getch --username ninja --zoneinfo Europe/Paris --language fr_FR --keyboard fr
|
36
|
+
# getch --username ninja --zoneinfo "Europe/Paris" --language fr_FR --keyboard fr
|
37
|
+
|
38
|
+
After an install by Getch, take a look on the [wiki](https://github.com/szorfein/getch/wiki).
|
39
|
+
|
40
|
+
## Issues
|
41
|
+
If need more support for your hardware (network, sound card, ...), you can submit a [new issue](https://github.com/szorfein/getch/issues/new) and post the output of the following command:
|
42
|
+
+ lspci
|
43
|
+
+ lsmod
|
data/bin/setup.sh
CHANGED
@@ -37,19 +37,33 @@ search_ruby() {
|
|
37
37
|
fi
|
38
38
|
}
|
39
39
|
|
40
|
+
install_with_gem() {
|
41
|
+
gem install getch
|
42
|
+
getch -h
|
43
|
+
}
|
44
|
+
|
45
|
+
dll_test_version() {
|
46
|
+
echo "Downloading the test version..."
|
47
|
+
cd /tmp
|
48
|
+
[ -f ./getch.tar.gz ] && rm ./getch.tar.gz
|
49
|
+
[ -d ./getch-master ] && rm -rf ./getch-master
|
50
|
+
|
51
|
+
curl -s -L -o getch.tar.gz https://github.com/szorfein/getch/archive/master.tar.gz
|
52
|
+
tar xzf getch.tar.gz \
|
53
|
+
&& cd $DIR \
|
54
|
+
&& ruby -I lib bin/getch -h
|
55
|
+
}
|
56
|
+
|
40
57
|
get_getch() {
|
41
58
|
if hash gem 2>/dev/null ; then
|
42
|
-
|
43
|
-
|
59
|
+
printf "Which version? [1] stable , [2] test (no recommended) " ; read -r
|
60
|
+
if echo "$REPLY" | grep -qP "2" ; then
|
61
|
+
dll_test_version
|
62
|
+
else
|
63
|
+
install_with_gem
|
64
|
+
fi
|
44
65
|
else
|
45
|
-
|
46
|
-
[ -f ./getch.tar.gz ] && rm ./getch.tar.gz
|
47
|
-
[ -d ./getch-master ] && rm -rf ./getch-master
|
48
|
-
|
49
|
-
curl -s -L -o getch.tar.gz https://github.com/szorfein/getch/archive/master.tar.gz
|
50
|
-
tar xzf getch.tar.gz \
|
51
|
-
&& cd $DIR \
|
52
|
-
&& ruby -I lib bin/getch -h
|
66
|
+
dll_test_version
|
53
67
|
fi
|
54
68
|
}
|
55
69
|
|
data/getch.gemspec
CHANGED
@@ -7,6 +7,11 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.authors = ["szorfein"]
|
8
8
|
s.email = ["szorfein@protonmail.com"]
|
9
9
|
s.homepage = 'https://github.com/szorfein/getch'
|
10
|
+
s.metadata = {
|
11
|
+
"changelog_uri" => "https://github.com/szorfein/getch/blob/master/CHANGELOG.md",
|
12
|
+
"bug_tracker_uri" => "https://github.com/szorfein/getch/issues",
|
13
|
+
"wiki_uri" => "https://github.com/szorfein/getch"
|
14
|
+
}
|
10
15
|
s.license = "MIT"
|
11
16
|
s.required_ruby_version = '>=2.5'
|
12
17
|
|
data/lib/getch.rb
CHANGED
@@ -1,33 +1,47 @@
|
|
1
1
|
require_relative 'getch/options'
|
2
|
-
require_relative 'getch/disk'
|
3
2
|
require_relative 'getch/states'
|
3
|
+
require_relative 'getch/gentoo'
|
4
|
+
require_relative 'getch/filesystem'
|
5
|
+
require_relative 'getch/command'
|
6
|
+
require_relative 'getch/helpers'
|
4
7
|
|
5
8
|
module Getch
|
6
9
|
|
7
10
|
DEFAULT_OPTIONS = {
|
8
11
|
language: 'en_US',
|
9
|
-
|
12
|
+
zoneinfo: 'US/Eastern',
|
10
13
|
keyboard: 'us',
|
11
14
|
disk: 'sda',
|
12
15
|
fs: 'ext4',
|
13
|
-
username: nil
|
16
|
+
username: nil,
|
17
|
+
encrypt: false,
|
18
|
+
verbose: false
|
14
19
|
}
|
15
20
|
|
16
21
|
STATES = {
|
17
22
|
:partition => false,
|
18
23
|
:format => false,
|
19
24
|
:mount => false,
|
20
|
-
:gentoo_base => false
|
25
|
+
:gentoo_base => false,
|
26
|
+
:gentoo_config => false,
|
27
|
+
:gentoo_update => false,
|
28
|
+
:gentoo_kernel => false
|
21
29
|
}
|
22
30
|
|
31
|
+
MOUNTPOINT = "/mnt/gentoo".freeze
|
32
|
+
OPTIONS_FS = {
|
33
|
+
'ext4' => DEFAULT_OPTIONS[:encrypt] ? Getch::FileSystem::Ext4::Encrypt : Getch::FileSystem::Ext4
|
34
|
+
}.freeze
|
35
|
+
|
23
36
|
def self.resume_options(opts)
|
24
37
|
puts "\nBuild Gentoo with the following args:\n"
|
25
|
-
puts "lang: #{
|
26
|
-
puts "zoneinfo: #{
|
27
|
-
puts "keyboard: #{
|
28
|
-
puts "disk: #{
|
29
|
-
puts "fs: #{
|
30
|
-
puts "username: #{
|
38
|
+
puts "lang: #{DEFAULT_OPTIONS[:language]}"
|
39
|
+
puts "zoneinfo: #{DEFAULT_OPTIONS[:zoneinfo]}"
|
40
|
+
puts "keyboard: #{DEFAULT_OPTIONS[:keyboard]}"
|
41
|
+
puts "disk: #{DEFAULT_OPTIONS[:disk]}"
|
42
|
+
puts "fs: #{DEFAULT_OPTIONS[:fs]}"
|
43
|
+
puts "username: #{DEFAULT_OPTIONS[:username]}"
|
44
|
+
puts "encrypt: #{DEFAULT_OPTIONS[:encrypt]}"
|
31
45
|
puts
|
32
46
|
print "Continue? (n,y) "
|
33
47
|
case gets.chomp
|
@@ -38,25 +52,35 @@ module Getch
|
|
38
52
|
end
|
39
53
|
end
|
40
54
|
|
41
|
-
def self.format(disk, fs)
|
55
|
+
def self.format(disk, fs, user)
|
42
56
|
return if STATES[:format] and STATES[:partition]
|
43
57
|
puts
|
44
58
|
print "Partition and format disk #{disk}, this will erase all data, continue? (n,y) "
|
45
59
|
case gets.chomp
|
46
60
|
when /^y|^Y/
|
47
|
-
|
48
|
-
|
49
|
-
disk.partition
|
50
|
-
disk.format
|
61
|
+
OPTIONS_FS[fs]::Partition.new
|
62
|
+
OPTIONS_FS[fs]::Format.new
|
51
63
|
else
|
52
64
|
exit 1
|
53
65
|
end
|
54
66
|
end
|
55
67
|
|
68
|
+
def self.init_gentoo(options)
|
69
|
+
gentoo = Getch::Gentoo
|
70
|
+
gentoo.stage3
|
71
|
+
gentoo.config(options)
|
72
|
+
gentoo.chroot
|
73
|
+
gentoo.kernel
|
74
|
+
gentoo.boot(options)
|
75
|
+
end
|
76
|
+
|
56
77
|
def self.main(argv)
|
57
|
-
options = Options.new(
|
78
|
+
options = Options.new(argv)
|
79
|
+
DEFAULT_OPTIONS.freeze
|
58
80
|
resume_options(options)
|
59
|
-
Getch::States.new
|
60
|
-
format(options.disk, options.fs)
|
81
|
+
Getch::States.new # Update States
|
82
|
+
format(options.disk, options.fs, options.username)
|
83
|
+
OPTIONS_FS[DEFAULT_OPTIONS[:fs]]::Mount.new.run
|
84
|
+
init_gentoo(options)
|
61
85
|
end
|
62
86
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'open3'
|
2
|
+
|
3
|
+
module Getch
|
4
|
+
class Command
|
5
|
+
def initialize(cmd)
|
6
|
+
@cmd = cmd
|
7
|
+
@block_size = 512
|
8
|
+
end
|
9
|
+
|
10
|
+
def run!
|
11
|
+
puts "Running command: " + @cmd.gsub(/\"/, '')
|
12
|
+
|
13
|
+
Open3.popen3(@cmd) do |stdin, stdout, stderr|
|
14
|
+
stdin.close_write
|
15
|
+
|
16
|
+
begin
|
17
|
+
files = [stdout, stderr]
|
18
|
+
|
19
|
+
until all_eof(files) do
|
20
|
+
ready = IO.select(files)
|
21
|
+
|
22
|
+
if ready
|
23
|
+
readable = ready[0]
|
24
|
+
# writable = ready[1]
|
25
|
+
# exceptions = ready[2]
|
26
|
+
|
27
|
+
readable.each do |f|
|
28
|
+
fileno = f.fileno
|
29
|
+
|
30
|
+
begin
|
31
|
+
data = f.read_nonblock(@block_size)
|
32
|
+
|
33
|
+
# Do something with the data...
|
34
|
+
puts "#{data}" if DEFAULT_OPTIONS[:verbose]
|
35
|
+
rescue EOFError
|
36
|
+
puts "fileno: #{fileno} EOF"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
rescue IOError => e
|
42
|
+
puts "IOError: #{e}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
puts "Done"
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
# Returns true if all files are EOF
|
51
|
+
def all_eof(files)
|
52
|
+
files.find { |f| !f.eof }.nil?
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Ext4
|
4
|
+
end
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
require_relative 'ext4/device'
|
9
|
+
require_relative 'ext4/partition'
|
10
|
+
require_relative 'ext4/format'
|
11
|
+
require_relative 'ext4/mount'
|
12
|
+
require_relative 'ext4/config'
|
13
|
+
require_relative 'ext4/deps'
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Ext4
|
4
|
+
class Config < Getch::FileSystem::Ext4::Device
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
gen_uuid
|
8
|
+
@root_dir = MOUNTPOINT
|
9
|
+
@init = '/usr/lib/systemd/systemd'
|
10
|
+
end
|
11
|
+
|
12
|
+
def fstab
|
13
|
+
file = "#{@root_dir}/etc/fstab"
|
14
|
+
datas = data_fstab
|
15
|
+
File.write(file, datas.join("\n"))
|
16
|
+
end
|
17
|
+
|
18
|
+
def systemd_boot
|
19
|
+
return if ! Helpers::efi?
|
20
|
+
esp = '/boot/efi'
|
21
|
+
dir = "#{@root_dir}/#{esp}/loader/entries/"
|
22
|
+
datas_gentoo = [
|
23
|
+
'title Gentoo Linux',
|
24
|
+
'linux /vmlinuz',
|
25
|
+
"options root=UUID=#{uuid_root} init=#{@init} rw"
|
26
|
+
]
|
27
|
+
File.write("#{dir}/gentoo.conf", datas_gentoo.join("\n"))
|
28
|
+
end
|
29
|
+
|
30
|
+
def grub
|
31
|
+
return if Helpers::efi?
|
32
|
+
file = "#{@root_dir}/etc/default/grub"
|
33
|
+
cmdline = "GRUB_CMDLINE_LINUX=\"resume=#{@dev_swap} 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
|
+
File.write(file, cmdline, mode: 'a')
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def gen_uuid
|
40
|
+
@uuid_swap = `lsblk -o "UUID" #{@dev_swap} | tail -1`.chomp() if @dev_swap
|
41
|
+
@uuid_root = `lsblk -o "UUID" #{@dev_root} | tail -1`.chomp() if @dev_root
|
42
|
+
@uuid_boot = `lsblk -o "UUID" #{@dev_boot} | tail -1`.chomp() if @dev_boot
|
43
|
+
@uuid_boot_efi = `lsblk -o "UUID" #{@dev_boot_efi} | tail -1`.chomp() if @dev_boot_efi
|
44
|
+
@uuid_home = `lsblk -o "UUID" #{@dev_home} | tail -1`.chomp() if @dev_home
|
45
|
+
end
|
46
|
+
|
47
|
+
def data_fstab
|
48
|
+
boot_efi = @dev_boot_efi ? "UUID=#{@uuid_boot_efi} /boot/efi vfat noauto,noatime 1 2" : ''
|
49
|
+
swap = @dev_swap ? "UUID=#{@uuid_swap} none swap discard 0 0" : ''
|
50
|
+
root = @dev_root ? "UUID=#{@uuid_root} / ext4 defaults 0 1" : ''
|
51
|
+
home = @dev_home ? "UUID=#{@uuid_home} /home/#{@user} ext4 defaults 0 2" : ''
|
52
|
+
|
53
|
+
[ boot_efi, swap, root, home ]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Ext4
|
4
|
+
class Deps
|
5
|
+
def initialize
|
6
|
+
if Helpers::efi?
|
7
|
+
install_efi
|
8
|
+
else
|
9
|
+
install_bios
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
def install_efi
|
15
|
+
end
|
16
|
+
|
17
|
+
def install_bios
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Ext4
|
4
|
+
class Device
|
5
|
+
def initialize
|
6
|
+
@disk = DEFAULT_OPTIONS[:disk]
|
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
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Ext4
|
4
|
+
module Encrypt
|
5
|
+
end
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
require_relative 'encrypt/device'
|
11
|
+
require_relative 'encrypt/partition'
|
12
|
+
require_relative 'encrypt/format'
|
13
|
+
require_relative 'encrypt/mount'
|
14
|
+
require_relative 'encrypt/config'
|
15
|
+
require_relative 'encrypt/deps'
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
module Ext4
|
4
|
+
class Config < Getch::FileSystem::Ext4::Encrypt::Device
|
5
|
+
def initialize
|
6
|
+
super
|
7
|
+
gen_uuid
|
8
|
+
@root_dir = MOUNTPOINT
|
9
|
+
@init = '/usr/lib/systemd/systemd'
|
10
|
+
end
|
11
|
+
|
12
|
+
def fstab
|
13
|
+
file = "#{@root_dir}/etc/fstab"
|
14
|
+
datas = data_fstab
|
15
|
+
File.write(file, datas.join("\n"))
|
16
|
+
end
|
17
|
+
|
18
|
+
def systemd_boot
|
19
|
+
return if ! Helpers::efi?
|
20
|
+
esp = '/boot/efi'
|
21
|
+
dir = "#{@root_dir}/#{esp}/loader/entries/"
|
22
|
+
datas_gentoo = [
|
23
|
+
'title Gentoo Linux',
|
24
|
+
'linux /vmlinuz',
|
25
|
+
"options crypt_root=UUID=#{uuid_dev_root} root=/dev/mapper/#{@vg}-root init=#{@init} dolvm rw"
|
26
|
+
]
|
27
|
+
File.write("#{dir}/gentoo.conf", datas_gentoo.join("\n"))
|
28
|
+
end
|
29
|
+
|
30
|
+
def grub
|
31
|
+
return if Helpers::efi?
|
32
|
+
file = "#{@root_dir}/etc/default/grub"
|
33
|
+
cmdline = [
|
34
|
+
"GRUB_CMDLINE_LINUX=\"resume=UUID=#{@uuid_swap} crypt_root=UUID=#{@uuid_dev_root} root=/dev/mapper/#{@vg}-root init=#{@init} dolvm rw\"",
|
35
|
+
"GRUB_ENABLE_CRYPTODISK=y"
|
36
|
+
]
|
37
|
+
File.write("#{file}", cmdline.join("\n"), mode: 'a')
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def gen_uuid
|
43
|
+
@uuid_swap = `lsblk -o "UUID" #{@lv_swap} | tail -1`.chomp() if @lv_swap
|
44
|
+
@uuid_root = `lsblk -o "UUID" #{@lv_root} | tail -1`.chomp() if @lv_root
|
45
|
+
@uuid_dev_root = `lsblk -o "UUID" #{@dev_root} | tail -1`.chomp() if @dev_root
|
46
|
+
@uuid_boot = `lsblk -o "UUID" #{@dev_boot} | tail -1`.chomp() if @dev_boot
|
47
|
+
@uuid_boot_efi = `lsblk -o "UUID" #{@dev_boot_efi} | tail -1`.chomp() if @dev_boot_efi
|
48
|
+
@uuid_home = `lsblk -o "UUID" #{@lv_home} | tail -1`.chomp() if @lv_home
|
49
|
+
end
|
50
|
+
|
51
|
+
def data_fstab
|
52
|
+
boot_efi = @lv_boot_efi ? "UUID=#{@uuid_boot_efi} /boot/efi vfat noauto,noatime 1 2" : ''
|
53
|
+
swap = @lv_swap ? "UUID=#{@uuid_swap} none swap discard 0 0" : ''
|
54
|
+
root = @lv_root ? "UUID=#{@uuid_root} / ext4 defaults 0 1" : ''
|
55
|
+
home = @lv_home ? "UUID=#{@uuid_home} /home/#{@user} ext4 defaults 0 2" : ''
|
56
|
+
|
57
|
+
[ boot_efi, swap, root, home ]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|