getch 0.0.5 → 0.0.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/CHANGELOG.md +6 -0
- data/README.md +2 -0
- data/lib/getch.rb +23 -27
- data/lib/getch/command.rb +55 -0
- data/lib/getch/filesystem.rb +7 -0
- data/lib/getch/filesystem/ext4.rb +75 -0
- data/lib/getch/filesystem/root.rb +63 -0
- data/lib/getch/gentoo.rb +1 -0
- data/lib/getch/gentoo/boot.rb +1 -1
- data/lib/getch/gentoo/chroot.rb +2 -2
- data/lib/getch/gentoo/sources.rb +18 -3
- data/lib/getch/gentoo/stage.rb +1 -1
- data/lib/getch/helpers.rb +2 -1
- data/lib/getch/mount.rb +60 -45
- data/lib/getch/options.rb +7 -3
- data/lib/getch/version.rb +1 -1
- metadata +6 -3
- metadata.gz.sig +2 -2
- data/lib/getch/disk.rb +0 -77
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87ae271211f6081929b72327651ff6e4f18adeca452cf10294d75a114f26db38
|
4
|
+
data.tar.gz: eb0ea1a935578351133e4c13dd0ee7e13d1696d6fbcc58bbd441e59d1cacf7de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b32454448824fef83fab42ac34534125b0dc6d0655235f271c97b644105dba75eebf0ca56b1c32e6a8cab019fa638d4e9fc44f20744cafd7ca584a94e05a0f4d
|
7
|
+
data.tar.gz: 809fc8dd380821f9bc479b4efee45f7f83cafc3a0a14a441881a3abd1daaeb0da84b20a2f2ff0af9bdee31cc1f247a21a873ef2729144ec2483aec8f165b6adf
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## 0.0.6, release 2020-09-19
|
2
|
+
* Add support for QEMU guest #2
|
3
|
+
* Kernel compilation, initialize a config file with `make localyesconfig`.
|
4
|
+
* More modular codes to start with encryption and other filesystems.
|
5
|
+
* Add the new option --verbose to display output of compilation, etc... #2
|
6
|
+
|
1
7
|
## 0.0.5, release 2020-09-17
|
2
8
|
* Generate a hostname
|
3
9
|
* Configure systemd-boot for UEFI system
|
data/README.md
CHANGED
@@ -35,6 +35,8 @@ For a french user:
|
|
35
35
|
|
36
36
|
# getch --username ninja --zoneinfo "Europe/Paris" --language fr_FR --keyboard fr
|
37
37
|
|
38
|
+
After an install by Getch, take a look on the [wiki](https://github.com/szorfein/getch/wiki).
|
39
|
+
|
38
40
|
## Issues
|
39
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:
|
40
42
|
+ lspci
|
data/lib/getch.rb
CHANGED
@@ -1,20 +1,22 @@
|
|
1
1
|
require_relative 'getch/options'
|
2
|
-
require_relative 'getch/disk'
|
3
2
|
require_relative 'getch/states'
|
4
3
|
require_relative 'getch/mount'
|
5
4
|
require_relative 'getch/gentoo'
|
5
|
+
require_relative 'getch/filesystem'
|
6
|
+
require_relative 'getch/command'
|
6
7
|
require_relative 'getch/helpers'
|
7
8
|
|
8
9
|
module Getch
|
9
10
|
|
10
11
|
DEFAULT_OPTIONS = {
|
11
12
|
language: 'en_US',
|
12
|
-
|
13
|
+
zoneinfo: 'US/Eastern',
|
13
14
|
keyboard: 'us',
|
14
15
|
disk: 'sda',
|
15
16
|
fs: 'ext4',
|
16
|
-
username: nil
|
17
|
-
|
17
|
+
username: nil,
|
18
|
+
verbose: false
|
19
|
+
}
|
18
20
|
|
19
21
|
STATES = {
|
20
22
|
:partition => false,
|
@@ -27,16 +29,18 @@ module Getch
|
|
27
29
|
}
|
28
30
|
|
29
31
|
MOUNTPOINT = "/mnt/gentoo".freeze
|
30
|
-
|
32
|
+
OPTIONS_FS = {
|
33
|
+
'ext4' => Getch::FileSystem::Ext4
|
34
|
+
}.freeze
|
31
35
|
|
32
36
|
def self.resume_options(opts)
|
33
37
|
puts "\nBuild Gentoo with the following args:\n"
|
34
|
-
puts "lang: #{
|
35
|
-
puts "zoneinfo: #{
|
36
|
-
puts "keyboard: #{
|
37
|
-
puts "disk: #{
|
38
|
-
puts "fs: #{
|
39
|
-
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]}"
|
40
44
|
puts
|
41
45
|
print "Continue? (n,y) "
|
42
46
|
case gets.chomp
|
@@ -47,30 +51,22 @@ module Getch
|
|
47
51
|
end
|
48
52
|
end
|
49
53
|
|
50
|
-
def self.format(disk, fs)
|
54
|
+
def self.format(disk, fs, user)
|
51
55
|
return if STATES[:format] and STATES[:partition]
|
52
56
|
puts
|
53
57
|
print "Partition and format disk #{disk}, this will erase all data, continue? (n,y) "
|
54
58
|
case gets.chomp
|
55
59
|
when /^y|^Y/
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
+
filesystem = OPTIONS_FS[fs].new(disk)
|
61
|
+
filesystem.cleaning
|
62
|
+
filesystem.partition
|
63
|
+
filesystem.format
|
64
|
+
OPTIONS_FS[fs]::Mount.new(disk, user).run
|
60
65
|
else
|
61
66
|
exit 1
|
62
67
|
end
|
63
68
|
end
|
64
69
|
|
65
|
-
def self.mount(disk, user)
|
66
|
-
return if STATES[:mount]
|
67
|
-
mount = Getch::Mount.new(disk, user)
|
68
|
-
mount.swap
|
69
|
-
mount.root
|
70
|
-
mount.boot
|
71
|
-
mount.home
|
72
|
-
end
|
73
|
-
|
74
70
|
def self.init_gentoo(options)
|
75
71
|
gentoo = Getch::Gentoo
|
76
72
|
gentoo.stage3
|
@@ -82,10 +78,10 @@ module Getch
|
|
82
78
|
|
83
79
|
def self.main(argv)
|
84
80
|
options = Options.new(argv)
|
81
|
+
DEFAULT_OPTIONS.freeze
|
85
82
|
resume_options(options)
|
86
83
|
Getch::States.new() # Update States
|
87
|
-
format(options.disk, options.fs)
|
88
|
-
mount(options.disk, options.username)
|
84
|
+
format(options.disk, options.fs, options.username)
|
89
85
|
init_gentoo(options)
|
90
86
|
end
|
91
87
|
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,75 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
class Ext4 < Getch::FileSystem::Root
|
4
|
+
def initialize(disk)
|
5
|
+
@disk = disk
|
6
|
+
@fs = 'ext4'
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
class Mount < Getch::Mount
|
11
|
+
def initialize(disk, user)
|
12
|
+
@disk = disk
|
13
|
+
@user = user
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def gen_vars
|
20
|
+
@dev_boot_efi = Helpers::efi? ? "/dev/#{@disk}1" : nil
|
21
|
+
@dev_swap = "/dev/#{@disk}2"
|
22
|
+
@dev_root = "/dev/#{@disk}3"
|
23
|
+
@dev_home = @user ? "/dev/#{@disk}4" : nil
|
24
|
+
end
|
25
|
+
|
26
|
+
def data_fstab
|
27
|
+
boot_efi = @dev_boot_efi ? "UUID=#{@uuid_boot_efi} /boot/efi vfat noauto,defaults 0 2" : ''
|
28
|
+
swap = @dev_swap ? "UUID=#{@uuid_swap} none swap discard 0 0" : ''
|
29
|
+
root = @dev_root ? "UUID=#{@uuid_root} / ext4 defaults 0 1" : ''
|
30
|
+
home = @dev_home ? "UUID=#{@uuid_home} /home/#{@user} ext4 defaults 0 2" : ''
|
31
|
+
|
32
|
+
return [ boot_efi, swap, root, home ]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
# Follow https://wiki.archlinux.org/index.php/Partitioning
|
39
|
+
def partition_efi
|
40
|
+
# /boot/efi - EFI system partition - 260MB
|
41
|
+
# swap - Linux Swap - size of the ram
|
42
|
+
# / - Root
|
43
|
+
# /home - Home
|
44
|
+
system("sgdisk -n1:1M:+260M -t1:EF00 /dev/#{@disk}") # boot EFI
|
45
|
+
system("sgdisk -n2:0:+2G -t2:8200 /dev/#{@disk}") # swap
|
46
|
+
system("sgdisk -n3:0:+15G -t3:8304 /dev/#{@disk}") # root
|
47
|
+
system("sgdisk -n4:0:0 -t3:8302 /dev/#{@disk}") # home
|
48
|
+
end
|
49
|
+
|
50
|
+
def format_efi
|
51
|
+
system("mkfs.fat -F32 /dev/#{@disk}1")
|
52
|
+
system("mkswap /dev/#{@disk}2")
|
53
|
+
system("mkfs.#{@fs} /dev/#{@disk}3")
|
54
|
+
system("mkfs.#{@fs} /dev/#{@disk}4")
|
55
|
+
end
|
56
|
+
|
57
|
+
def partition_bios
|
58
|
+
# None - Bios Boot Partition - 1MiB
|
59
|
+
# swap - Linux Swap - size of the ram
|
60
|
+
# / - Root
|
61
|
+
# /home - Home
|
62
|
+
system("sgdisk -n1:1MiB:+1MiB -t1:EF02 /dev/#{@disk}")
|
63
|
+
system("sgdisk -n2:0:+2G -t2:8200 /dev/#{@disk}")
|
64
|
+
system("sgdisk -n3:0:+15G -t3:8304 /dev/#{@disk}")
|
65
|
+
system("sgdisk -n4:0:0 -t3:8302 /dev/#{@disk}")
|
66
|
+
end
|
67
|
+
|
68
|
+
def format_bios
|
69
|
+
system("mkswap /dev/#{@disk}2")
|
70
|
+
system("mkfs.#{@fs} /dev/#{@disk}3")
|
71
|
+
system("mkfs.#{@fs} /dev/#{@disk}4")
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Getch
|
2
|
+
module FileSystem
|
3
|
+
class Root
|
4
|
+
def initialize(disk)
|
5
|
+
@disk = disk
|
6
|
+
@fs = nil
|
7
|
+
@state = Getch::States.new()
|
8
|
+
end
|
9
|
+
|
10
|
+
# https://wiki.archlinux.org/index.php/Securely_wipe_disk
|
11
|
+
def cleaning
|
12
|
+
return if STATES[:partition ]
|
13
|
+
puts
|
14
|
+
print "Cleaning data on #{@disk}, can be long, avoid this on Flash Memory (SSD,USB,...) ? (n,y) "
|
15
|
+
case gets.chomp
|
16
|
+
when /^y|^Y/
|
17
|
+
system("dd if=/dev/urandom of=/dev/#{@disk} bs=4M status=progress")
|
18
|
+
else
|
19
|
+
return
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def partition
|
24
|
+
return if STATES[:partition]
|
25
|
+
Helpers::exec_or_die("sgdisk --zap-all /dev/#{@disk}")
|
26
|
+
Helpers::exec_or_die("wipefs -a /dev/#{@disk}")
|
27
|
+
if Helpers::efi? then
|
28
|
+
puts "Partition disk #{@disk} for an EFI system"
|
29
|
+
partition_efi
|
30
|
+
else
|
31
|
+
puts "Partition disk #{@disk} for a Bios system"
|
32
|
+
partition_bios
|
33
|
+
end
|
34
|
+
@state.partition
|
35
|
+
end
|
36
|
+
|
37
|
+
def format
|
38
|
+
return if STATES[:format]
|
39
|
+
puts "Format #{@disk} with #{@fs}"
|
40
|
+
if Helpers::efi? then
|
41
|
+
format_efi
|
42
|
+
else
|
43
|
+
format_bios
|
44
|
+
end
|
45
|
+
@state.format
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def partition_efi
|
51
|
+
end
|
52
|
+
|
53
|
+
def partition_bios
|
54
|
+
end
|
55
|
+
|
56
|
+
def format_efi
|
57
|
+
end
|
58
|
+
|
59
|
+
def format_bios
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/getch/gentoo.rb
CHANGED
data/lib/getch/gentoo/boot.rb
CHANGED
data/lib/getch/gentoo/chroot.rb
CHANGED
@@ -54,7 +54,7 @@ module Getch
|
|
54
54
|
|
55
55
|
Dir.chdir("#{MOUNTPOINT}/root")
|
56
56
|
Helpers::get_file_online(url, file)
|
57
|
-
|
57
|
+
Getch::Command.new("tar xzf #{file}").run! if ! Dir.exist? 'garden-master'
|
58
58
|
end
|
59
59
|
|
60
60
|
def garden_dep
|
@@ -80,7 +80,7 @@ module Getch
|
|
80
80
|
source /etc/profile
|
81
81
|
#{cmd}
|
82
82
|
\""
|
83
|
-
|
83
|
+
Getch::Command.new(script).run!
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
data/lib/getch/gentoo/sources.rb
CHANGED
@@ -9,7 +9,8 @@ module Getch
|
|
9
9
|
def build_others
|
10
10
|
install_wifi if ismatch?('iwlwifi')
|
11
11
|
install_zfs if ismatch?('zfs')
|
12
|
-
|
12
|
+
virtualbox_guest
|
13
|
+
qemu_guest
|
13
14
|
end
|
14
15
|
|
15
16
|
def build_kspp
|
@@ -28,8 +29,22 @@ module Getch
|
|
28
29
|
exec_chroot("cd #{@linux} && make -j$(nproc)")
|
29
30
|
end
|
30
31
|
|
32
|
+
def init_config
|
33
|
+
exec_chroot("env-update && cd #{@linux} && make localyesconfig")
|
34
|
+
end
|
35
|
+
|
31
36
|
private
|
32
37
|
|
38
|
+
def virtualbox_guest
|
39
|
+
exec("./kernel.sh -b -a virtualbox-guest -k #{@linux}") if ismatch?('vmwgfx')
|
40
|
+
Helpers::emerge("app-emulation/virtualbox-guest-additions", MOUNTPOINT)
|
41
|
+
end
|
42
|
+
|
43
|
+
def qemu_guest
|
44
|
+
exec("./kernel.sh -a qemu-guest -k #{@linux}") if ismatch?('virtio')
|
45
|
+
exec("./kernel.sh -a kvm -k #{@linux}") if ismatch?('kvm')
|
46
|
+
end
|
47
|
+
|
33
48
|
def ismatch?(arg)
|
34
49
|
@lsmod.match?(/#{arg}/)
|
35
50
|
end
|
@@ -40,7 +55,7 @@ module Getch
|
|
40
55
|
cd /root/garden-master
|
41
56
|
#{cmd}
|
42
57
|
\""
|
43
|
-
|
58
|
+
Getch::Command.new(script).run!
|
44
59
|
end
|
45
60
|
|
46
61
|
def exec_chroot(cmd)
|
@@ -48,7 +63,7 @@ module Getch
|
|
48
63
|
source /etc/profile
|
49
64
|
#{cmd}
|
50
65
|
\""
|
51
|
-
|
66
|
+
Getch::Command.new(script).run!
|
52
67
|
end
|
53
68
|
|
54
69
|
def install_wifi
|
data/lib/getch/gentoo/stage.rb
CHANGED
data/lib/getch/helpers.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
require 'open3'
|
3
3
|
require 'fileutils'
|
4
|
+
require_relative 'command'
|
4
5
|
|
5
6
|
module Helpers
|
6
7
|
def self.efi?
|
@@ -35,6 +36,6 @@ module Helpers
|
|
35
36
|
source /etc/profile
|
36
37
|
emerge --changed-use #{pkgs}
|
37
38
|
\""
|
38
|
-
|
39
|
+
Getch::Command.new(cmd).run!
|
39
40
|
end
|
40
41
|
end
|
data/lib/getch/mount.rb
CHANGED
@@ -5,69 +5,84 @@ module Getch
|
|
5
5
|
def initialize(disk, user)
|
6
6
|
@disk = disk
|
7
7
|
@user = user
|
8
|
-
@
|
9
|
-
@
|
10
|
-
@
|
8
|
+
@root_dir = MOUNTPOINT
|
9
|
+
@boot_dir = "#{@root_dir}/boot"
|
10
|
+
@boot_efi_dir = "#{@root_dir}/boot/efi"
|
11
|
+
@home_dir = @user ? "#{@root_dir}/home/#{@user}" : nil
|
11
12
|
@state = Getch::States.new()
|
13
|
+
gen_vars
|
12
14
|
end
|
13
15
|
|
14
|
-
def
|
16
|
+
def run
|
15
17
|
return if STATES[:mount]
|
16
|
-
|
18
|
+
mount_swap
|
19
|
+
mount_root
|
20
|
+
mount_boot
|
21
|
+
mount_home
|
22
|
+
mount_boot_efi if Helpers::efi?
|
23
|
+
@state.mount
|
17
24
|
end
|
18
25
|
|
19
|
-
def
|
20
|
-
|
21
|
-
|
22
|
-
|
26
|
+
def gen_fstab
|
27
|
+
file = "#{@root_dir}/etc/fstab"
|
28
|
+
FileUtils.mkdir_p "#{@root_dir}/etc", mode: 0700 if ! Dir.exist?("#{@root_dir}/etc")
|
29
|
+
gen_uuid
|
30
|
+
datas = data_fstab
|
31
|
+
File.write(file, datas.join("\n"))
|
23
32
|
end
|
24
33
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
34
|
+
private
|
35
|
+
|
36
|
+
def gen_vars
|
37
|
+
@dev_boot_efi = nil
|
38
|
+
@dev_boot = nil
|
39
|
+
@dev_root = nil
|
40
|
+
@dev_swap = nil
|
41
|
+
@dev_home = nil
|
31
42
|
end
|
32
43
|
|
33
|
-
def
|
34
|
-
return if
|
35
|
-
|
36
|
-
FileUtils.mkdir_p @home, mode: 0700 if ! Dir.exist?(@home)
|
37
|
-
system("mount /dev/#{@disk}4 #{@home}")
|
38
|
-
#FileUtils.chown @user, @user, @home
|
39
|
-
end
|
40
|
-
@state.mount
|
44
|
+
def mount_swap
|
45
|
+
return if ! @dev_swap
|
46
|
+
system("swapon #{@dev_swap}")
|
41
47
|
end
|
42
48
|
|
43
|
-
def
|
44
|
-
|
45
|
-
|
46
|
-
|
49
|
+
def mount_root
|
50
|
+
return if ! @dev_root
|
51
|
+
Dir.mkdir(@root_dir, 0700) if ! Dir.exist?(@root_dir)
|
52
|
+
system("mount #{@dev_root} #{@root_dir}")
|
47
53
|
end
|
48
54
|
|
49
|
-
|
55
|
+
def mount_boot_efi
|
56
|
+
return if ! @dev_boot_efi
|
57
|
+
FileUtils.mkdir_p @boot_efi_dir, mode: 0700 if ! Dir.exist?(@boot_efi_dir)
|
58
|
+
system("mount #{@dev_boot_efi} #{@boot_efi_dir}")
|
59
|
+
end
|
50
60
|
|
51
|
-
def
|
52
|
-
|
53
|
-
@
|
54
|
-
|
55
|
-
|
61
|
+
def mount_boot
|
62
|
+
return if ! @dev_boot
|
63
|
+
FileUtils.mkdir_p @boot_dir, mode: 0700 if ! Dir.exist?(@boot_dir)
|
64
|
+
system("mount #{@dev_boot} #{@boot_dir}")
|
65
|
+
end
|
66
|
+
|
67
|
+
def mount_home
|
68
|
+
return if ! @dev_home
|
69
|
+
if @user != nil then
|
70
|
+
FileUtils.mkdir_p @home_dir, mode: 0700 if ! Dir.exist?(@home_dir)
|
71
|
+
system("mount #{@dev_home} #{@home_dir}")
|
72
|
+
end
|
73
|
+
@state.mount
|
56
74
|
end
|
57
75
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
76
|
+
def gen_uuid
|
77
|
+
@uuid_swap = `lsblk -o "UUID" #{@dev_swap} | tail -1`.chomp() if @dev_swap
|
78
|
+
@uuid_root = `lsblk -o "UUID" #{@dev_root} | tail -1`.chomp() if @dev_root
|
79
|
+
@uuid_boot = `lsblk -o "UUID" #{@dev_boot} | tail -1`.chomp() if @dev_boot
|
80
|
+
@uuid_boot_efi = `lsblk -o "UUID" #{@dev_boot_efi} | tail -1`.chomp() if @dev_boot_efi
|
81
|
+
@uuid_home = `lsblk -o "UUID" #{@dev_home} | tail -1`.chomp() if @dev_home
|
82
|
+
end
|
63
83
|
|
64
|
-
|
65
|
-
|
66
|
-
swap,
|
67
|
-
root,
|
68
|
-
home
|
69
|
-
]
|
70
|
-
return datas
|
84
|
+
def data_fstab
|
85
|
+
return []
|
71
86
|
end
|
72
87
|
end
|
73
88
|
end
|
data/lib/getch/options.rb
CHANGED
@@ -2,15 +2,16 @@ require 'optparse'
|
|
2
2
|
|
3
3
|
module Getch
|
4
4
|
class Options
|
5
|
-
attr_reader :language, :zoneinfo, :keyboard, :disk, :fs, :username
|
5
|
+
attr_reader :language, :zoneinfo, :keyboard, :disk, :fs, :username, :verbose
|
6
6
|
|
7
7
|
def initialize(argv)
|
8
8
|
@language = DEFAULT_OPTIONS[:language]
|
9
|
-
@zoneinfo = DEFAULT_OPTIONS[:
|
9
|
+
@zoneinfo = DEFAULT_OPTIONS[:zoneinfo]
|
10
10
|
@keyboard = DEFAULT_OPTIONS[:keyboard]
|
11
11
|
@disk = DEFAULT_OPTIONS[:disk]
|
12
12
|
@fs = DEFAULT_OPTIONS[:fs]
|
13
13
|
@username = DEFAULT_OPTIONS[:username]
|
14
|
+
@verbose = DEFAULT_OPTIONS[:verbose]
|
14
15
|
parse(argv)
|
15
16
|
end
|
16
17
|
|
@@ -36,11 +37,14 @@ module Getch
|
|
36
37
|
opts.on("-u", "--username USERNAME", "Initialize /home/username") do |user|
|
37
38
|
@username = user
|
38
39
|
end
|
40
|
+
opts.on("-v", "--verbose", "Write more messages to the standard output.") do
|
41
|
+
@verbose = true
|
42
|
+
end
|
39
43
|
opts.on("-h", "--help", "Display this") do
|
40
44
|
puts opts
|
41
45
|
exit
|
42
46
|
end
|
43
|
-
end.parse!
|
47
|
+
end.parse!(into: DEFAULT_OPTIONS)
|
44
48
|
end
|
45
49
|
end
|
46
50
|
end
|
data/lib/getch/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: getch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- szorfein
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
J/zT/q2Ac7BWpSLbv6p9lChBiEnD9j24x463LR5QQjDNS5SsjzRQfFuprsa9Nqf2
|
36
36
|
Tw==
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2020-09-
|
38
|
+
date: 2020-09-19 00:00:00.000000000 Z
|
39
39
|
dependencies: []
|
40
40
|
description:
|
41
41
|
email:
|
@@ -53,7 +53,10 @@ files:
|
|
53
53
|
- bin/setup.sh
|
54
54
|
- getch.gemspec
|
55
55
|
- lib/getch.rb
|
56
|
-
- lib/getch/
|
56
|
+
- lib/getch/command.rb
|
57
|
+
- lib/getch/filesystem.rb
|
58
|
+
- lib/getch/filesystem/ext4.rb
|
59
|
+
- lib/getch/filesystem/root.rb
|
57
60
|
- lib/getch/gentoo.rb
|
58
61
|
- lib/getch/gentoo/boot.rb
|
59
62
|
- lib/getch/gentoo/chroot.rb
|
metadata.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
dHJ�`�M�D�X�>�[�ehY�58���}2
|
2
|
+
�h� �H�l�d�_��Ì�4��NR7V�Z7 �$��ۖ��`ZϹP���r���J���*������r/�Jٟ�I-d!(�z:9�Yh��l���gqX��;��h �V������I��YŅ=���>[�!�o@_T��Ao�Kq F|�kϣe%\�)�B$<�|�-�0�r��T�@�<�ܚh� �gǙ/�l�%��(@���FE�D~�����}��j���$���D
|
data/lib/getch/disk.rb
DELETED
@@ -1,77 +0,0 @@
|
|
1
|
-
module Getch
|
2
|
-
class Disk
|
3
|
-
def initialize(disk, fs)
|
4
|
-
@hdd = disk
|
5
|
-
@fs = fs
|
6
|
-
@state = Getch::States.new()
|
7
|
-
end
|
8
|
-
|
9
|
-
# https://wiki.archlinux.org/index.php/Securely_wipe_disk
|
10
|
-
def cleaning
|
11
|
-
return if STATES[:partition ]
|
12
|
-
puts
|
13
|
-
print "Cleaning data on #{@hdd}, can be long, avoid this on Flash Memory (SSD,USB,...) ? (n,y) "
|
14
|
-
case gets.chomp
|
15
|
-
when /^y|^Y/
|
16
|
-
system("dd if=/dev/urandom of=/dev/#{@hdd} bs=4M status=progress")
|
17
|
-
else
|
18
|
-
return
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def partition
|
23
|
-
return if STATES[:partition]
|
24
|
-
system("sgdisk --zap-all /dev/#{@hdd}")
|
25
|
-
system("wipefs -a /dev/#{@hdd}")
|
26
|
-
if Helpers::efi? then
|
27
|
-
puts "Partition disk #{@hdd} for an EFI system"
|
28
|
-
partition_efi
|
29
|
-
else
|
30
|
-
puts "Partition disk #{@hdd} for a Bios system"
|
31
|
-
partition_bios
|
32
|
-
end
|
33
|
-
@state.partition
|
34
|
-
end
|
35
|
-
|
36
|
-
def format
|
37
|
-
return if STATES[:format]
|
38
|
-
puts "Format #{@hdd} with #{@fs}"
|
39
|
-
if Helpers::efi? then
|
40
|
-
system("mkfs.fat -F32 /dev/#{@hdd}1")
|
41
|
-
system("mkswap /dev/#{@hdd}2")
|
42
|
-
system("mkfs.ext4 /dev/#{@hdd}3")
|
43
|
-
system("mkfs.ext4 /dev/#{@hdd}4")
|
44
|
-
else
|
45
|
-
system("mkswap /dev/#{@hdd}2")
|
46
|
-
system("mkfs.ext4 /dev/#{@hdd}3")
|
47
|
-
system("mkfs.ext4 /dev/#{@hdd}4")
|
48
|
-
end
|
49
|
-
@state.format
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
# follow https://wiki.archlinux.org/index.php/Partitioning
|
55
|
-
def partition_efi
|
56
|
-
# /boot/efi - EFI system partition - 260MB
|
57
|
-
# swap - Linux Swap - size of the ram
|
58
|
-
# / - Root
|
59
|
-
# /home - Home
|
60
|
-
system("sgdisk -n1:1M:+260M -t1:EF00 /dev/#{@hdd}") # boot EFI
|
61
|
-
system("sgdisk -n2:0:+2G -t2:8200 /dev/#{@hdd}") # swap
|
62
|
-
system("sgdisk -n3:0:+15G -t3:8304 /dev/#{@hdd}") # root
|
63
|
-
system("sgdisk -n4:0:0 -t3:8302 /dev/#{@hdd}") # home
|
64
|
-
end
|
65
|
-
|
66
|
-
def partition_bios
|
67
|
-
# None - Bios Boot Partition - 1MiB
|
68
|
-
# swap - Linux Swap - size of the ram
|
69
|
-
# / - Root
|
70
|
-
# /home - Home
|
71
|
-
system("sgdisk -n1:1MiB:+1MiB -t1:EF02 /dev/#{@hdd}") # Bios boot
|
72
|
-
system("sgdisk -n2:0:+2G -t2:8200 /dev/#{@hdd}") # swap
|
73
|
-
system("sgdisk -n3:0:+15G -t3:8304 /dev/#{@hdd}") # root
|
74
|
-
system("sgdisk -n4:0:0 -t3:8302 /dev/#{@hdd}") # home
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|