getch 0.0.6 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87ae271211f6081929b72327651ff6e4f18adeca452cf10294d75a114f26db38
4
- data.tar.gz: eb0ea1a935578351133e4c13dd0ee7e13d1696d6fbcc58bbd441e59d1cacf7de
3
+ metadata.gz: eb6075f7c63fb0a9b3d9cae63e24aae84cb3c90947985aa54ba48bc0dd284dcc
4
+ data.tar.gz: 26ad192fed5685f42e62d400706d6127c3d28a0fc5ce67296da6ef758955de25
5
5
  SHA512:
6
- metadata.gz: b32454448824fef83fab42ac34534125b0dc6d0655235f271c97b644105dba75eebf0ca56b1c32e6a8cab019fa638d4e9fc44f20744cafd7ca584a94e05a0f4d
7
- data.tar.gz: 809fc8dd380821f9bc479b4efee45f7f83cafc3a0a14a441881a3abd1daaeb0da84b20a2f2ff0af9bdee31cc1f247a21a873ef2729144ec2483aec8f165b6adf
6
+ metadata.gz: fe321ca0175f95f07c68026269830932609ba2fe5a1757efb7228bc26a069c4f5c322b21c534d05077c98a4dddfb0ed33bb2aa2fb30b1bc2df234e25b47acb56
7
+ data.tar.gz: 5b3540c9a1f07162bfbb3e4772f78c0b74b9525ec74fed7ce71c507da5f58befc85e6f8198abc595b49fa767abc77349f56b0ab9790d56730c45771365268fb0
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,8 +1,13 @@
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
+
1
6
  ## 0.0.6, release 2020-09-19
2
- * Add support for QEMU guest #2
7
+ * Add support for QEMU guest with KVM and Virtio driver
3
8
  * Kernel compilation, initialize a config file with `make localyesconfig`.
4
9
  * More modular codes to start with encryption and other filesystems.
5
- * Add the new option --verbose to display output of compilation, etc... #2
10
+ * Add the new option --verbose to display output of compilation, etc...
6
11
 
7
12
  ## 0.0.5, release 2020-09-17
8
13
  * Generate a hostname
@@ -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
- gem install getch
43
- getch -h
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
- cd /tmp
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
 
@@ -1,6 +1,5 @@
1
1
  require_relative 'getch/options'
2
2
  require_relative 'getch/states'
3
- require_relative 'getch/mount'
4
3
  require_relative 'getch/gentoo'
5
4
  require_relative 'getch/filesystem'
6
5
  require_relative 'getch/command'
@@ -15,6 +14,7 @@ module Getch
15
14
  disk: 'sda',
16
15
  fs: 'ext4',
17
16
  username: nil,
17
+ encrypt: false,
18
18
  verbose: false
19
19
  }
20
20
 
@@ -30,7 +30,7 @@ module Getch
30
30
 
31
31
  MOUNTPOINT = "/mnt/gentoo".freeze
32
32
  OPTIONS_FS = {
33
- 'ext4' => Getch::FileSystem::Ext4
33
+ 'ext4' => DEFAULT_OPTIONS[:encrypt] ? Getch::FileSystem::Ext4::Encrypt : Getch::FileSystem::Ext4
34
34
  }.freeze
35
35
 
36
36
  def self.resume_options(opts)
@@ -41,6 +41,7 @@ module Getch
41
41
  puts "disk: #{DEFAULT_OPTIONS[:disk]}"
42
42
  puts "fs: #{DEFAULT_OPTIONS[:fs]}"
43
43
  puts "username: #{DEFAULT_OPTIONS[:username]}"
44
+ puts "encrypt: #{DEFAULT_OPTIONS[:encrypt]}"
44
45
  puts
45
46
  print "Continue? (n,y) "
46
47
  case gets.chomp
@@ -57,11 +58,8 @@ module Getch
57
58
  print "Partition and format disk #{disk}, this will erase all data, continue? (n,y) "
58
59
  case gets.chomp
59
60
  when /^y|^Y/
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
61
+ OPTIONS_FS[fs]::Partition.new
62
+ OPTIONS_FS[fs]::Format.new
65
63
  else
66
64
  exit 1
67
65
  end
@@ -80,8 +78,9 @@ module Getch
80
78
  options = Options.new(argv)
81
79
  DEFAULT_OPTIONS.freeze
82
80
  resume_options(options)
83
- Getch::States.new() # Update States
81
+ Getch::States.new # Update States
84
82
  format(options.disk, options.fs, options.username)
83
+ OPTIONS_FS[DEFAULT_OPTIONS[:fs]]::Mount.new.run
85
84
  init_gentoo(options)
86
85
  end
87
86
  end
@@ -3,5 +3,4 @@ module Getch
3
3
  end
4
4
  end
5
5
 
6
- require_relative 'filesystem/root'
7
6
  require_relative 'filesystem/ext4'
@@ -1,75 +1,13 @@
1
1
  module Getch
2
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
3
+ module Ext4
73
4
  end
74
5
  end
75
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
@@ -0,0 +1,37 @@
1
+ module Getch
2
+ module FileSystem
3
+ module Ext4
4
+ module Encrypt
5
+ class Deps
6
+ def initialize
7
+ if Helpers::efi?
8
+ install_efi
9
+ else
10
+ install_bios
11
+ end
12
+ install_deps
13
+ end
14
+
15
+ private
16
+ def install_efi
17
+ end
18
+
19
+ def install_bios
20
+ exec("euse -p sys-boot/grub -E device-mapper")
21
+ end
22
+
23
+ def install_deps
24
+ exec("euse -p sys-apps/systemd -E cryptsetup")
25
+ Helpers::emerge('genkernel cryptsetup lvm2')
26
+ exec("genkernel --install --luks --keymap #{DEFAULT_OPTIONS[:keyboard]} --lvm --kernel-config=/usr/src/linux/.config initramfs")
27
+ exec("systemctl enable lvm2-monitor")
28
+ end
29
+
30
+ def exec(cmd)
31
+ Helpers::run_chroot(cmd, MOUNTPOINT)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ module Getch
2
+ module FileSystem
3
+ module Ext4
4
+ module Encrypt
5
+ class Device
6
+ def initialize
7
+ @disk = DEFAULT_OPTIONS[:disk]
8
+ @user = DEFAULT_OPTIONS[:username]
9
+ @dev_boot_efi = Helpers::efi? ? "/dev/#{@disk}1" : nil
10
+ @dev_root = "/dev/#{@disk}2"
11
+ @vg = 'vg0'
12
+ @lv_root = "/dev/mapper/#{@vg}-root"
13
+ @lv_swap = "/dev/mapper/#{@vg}-swap"
14
+ @lv_home = @user ? "/dev/mapper/#{@vg}-home" : nil
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,26 @@
1
+ module Getch
2
+ module FileSystem
3
+ module Ext4
4
+ module Encrypt
5
+ class Format < Getch::FileSystem::Ext4::Encrypt::Device
6
+ def initialize
7
+ super
8
+ @fs = 'ext4'
9
+ @state = Getch::States.new()
10
+ format
11
+ end
12
+
13
+ def format
14
+ return if STATES[:format]
15
+ puts "Format #{@disk} with #{@fs}"
16
+ system("mkfs.fat -F32 #{@dev_boot_efi}") if Helpers::efi?
17
+ system("mkswap #{@lv_swap}")
18
+ system("mkfs.#{@fs} #{@lv_root}")
19
+ system("mkfs.#{@fs} #{@lv_home}") if @lv_home
20
+ @state.format
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,64 @@
1
+ require 'fileutils'
2
+
3
+ module Getch
4
+ module FileSystem
5
+ module Ext4
6
+ module Encrypt
7
+ class Mount < Getch::FileSystem::Ext4::Encrypt::Device
8
+ def initialize
9
+ super
10
+ @root_dir = MOUNTPOINT
11
+ @boot_dir = "#{@root_dir}/boot"
12
+ @boot_efi_dir = "#{@root_dir}/boot/efi"
13
+ @home_dir = @user ? "#{@root_dir}/home/#{@user}" : nil
14
+ @state = Getch::States.new()
15
+ end
16
+
17
+ def run
18
+ return if STATES[:mount]
19
+ mount_swap
20
+ mount_root
21
+ mount_boot
22
+ mount_home
23
+ mount_boot_efi
24
+ @state.mount
25
+ end
26
+
27
+ private
28
+
29
+ def mount_swap
30
+ return if ! @lv_swap
31
+ system("swapon #{@lv_swap}")
32
+ end
33
+
34
+ def mount_root
35
+ return if ! @lv_root
36
+ Dir.mkdir(@root_dir, 0700) if ! Dir.exist?(@root_dir)
37
+ system("mount #{@lv_root} #{@root_dir}")
38
+ end
39
+
40
+ def mount_boot_efi
41
+ return if ! @dev_boot_efi
42
+ FileUtils.mkdir_p @boot_efi_dir, mode: 0700 if ! Dir.exist?(@boot_efi_dir)
43
+ system("mount #{@dev_boot_efi} #{@boot_efi_dir}")
44
+ end
45
+
46
+ def mount_boot
47
+ return if ! @dev_boot
48
+ FileUtils.mkdir_p @boot_dir, mode: 0700 if ! Dir.exist?(@boot_dir)
49
+ system("mount #{@dev_boot} #{@boot_dir}")
50
+ end
51
+
52
+ def mount_home
53
+ return if ! @lv_home
54
+ if @user != nil then
55
+ FileUtils.mkdir_p @home_dir, mode: 0700 if ! Dir.exist?(@home_dir)
56
+ system("mount #{@lv_home} #{@home_dir}")
57
+ end
58
+ @state.mount
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,95 @@
1
+ module Getch
2
+ module FileSystem
3
+ module Ext4
4
+ module Encrypt
5
+ class Partition < Getch::FileSystem::Ext4::Encrypt::Device
6
+ def initialize
7
+ super
8
+ @state = Getch::States.new()
9
+ run_partition
10
+ end
11
+
12
+ def run_partition
13
+ return if STATES[:partition ]
14
+ clear_struct
15
+ cleaning
16
+ boot
17
+ others
18
+ luks
19
+ lvm
20
+ @state.partition
21
+ end
22
+
23
+ private
24
+
25
+ def clear_struct
26
+ exec("sgdisk -Z /dev/#{@disk}")
27
+ exec("wipefs -a /dev/#{@disk}")
28
+ end
29
+
30
+ def cleaning
31
+ puts
32
+ print "Cleaning data on #{@disk}, can be long, avoid this on Flash Memory (SSD,USB,...) ? (n,y) "
33
+ case gets.chomp
34
+ when /^y|^Y/
35
+ bloc=`blockdev --getbsz /dev/#{@disk}`.chomp
36
+ exec("dd if=/dev/urandom of=/dev/#{@disk} bs=#{bloc} status=progress")
37
+ else
38
+ return
39
+ end
40
+ end
41
+
42
+ def boot
43
+ if Helpers::efi?
44
+ exec("sgdisk -n1:1M:+260M -t1:EF00 /dev/#{@disk}}")
45
+ else
46
+ exec("sgdisk -n1:1MiB:+1MiB -t1:EF02 /dev/#{@disk}")
47
+ end
48
+ end
49
+
50
+ def others
51
+ exec("sgdisk -n2:0:+0 -t2:8309 /dev/#{@disk}")
52
+ end
53
+
54
+ def luks
55
+ if Helpers::efi?
56
+ exec("cryptsetup --use-random luksFormat /dev/#{@disk}2")
57
+ exec("cryptsetup open --type luks /dev/#{@disk}2 crypt-lvm")
58
+ else
59
+ # GRUB do not support LUKS2
60
+ exec("cryptsetup --use-random luksFormat --type luks1 /dev/#{@disk}2")
61
+ exec("cryptsetup open --type luks1 /dev/#{@disk}2 crypt-lvm")
62
+ end
63
+ end
64
+
65
+ def lvm
66
+ mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
67
+ exec("pvcreate /dev/mapper/crypt-lvm")
68
+ exec("vgcreate #{@vg} /dev/mapper/crypt-lvm")
69
+ exec("lvcreate -L 15G -n root #{@vg}")
70
+ exec("lvcreate -L #{mem} -n swap #{@vg}")
71
+ exec("lvcreate -l 100%FREE -n home #{@vg}") if @user
72
+ exec("vgchange --available y")
73
+ end
74
+
75
+ # Follow https://wiki.archlinux.org/index.php/Partitioning
76
+ # Partition_efi
77
+ # /boot/efi - EFI system partition - 260MB
78
+ # / - Root
79
+ # swap - Linux Swap - size of the ram
80
+ # /home - Home
81
+
82
+ # Partition_bios
83
+ # None - Bios Boot Partition - 1MiB
84
+ # / - Root
85
+ # swap - Linux Swap - size of the ram
86
+ # /home - Home
87
+
88
+ def exec(cmd)
89
+ Getch::Command.new(cmd).run!
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,24 @@
1
+ module Getch
2
+ module FileSystem
3
+ module Ext4
4
+ class Format < Getch::FileSystem::Ext4::Device
5
+ def initialize
6
+ super
7
+ @fs = 'ext4'
8
+ @state = Getch::States.new()
9
+ format
10
+ end
11
+
12
+ def format
13
+ return if STATES[:format]
14
+ puts "Format #{@disk} with #{@fs}"
15
+ system("mkfs.fat -F32 #{@dev_boot_efi}") if Helpers::efi?
16
+ system("mkswap -f #{@dev_swap}")
17
+ system("mkfs.#{@fs} #{@dev_root}")
18
+ system("mkfs.#{@fs} #{@dev_home}") if @dev_home
19
+ @state.format
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,62 @@
1
+ require 'fileutils'
2
+
3
+ module Getch
4
+ module FileSystem
5
+ module Ext4
6
+ class Mount < Getch::FileSystem::Ext4::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
+ @home_dir = @user ? "#{@root_dir}/home/#{@user}" : nil
13
+ @state = Getch::States.new()
14
+ end
15
+
16
+ def run
17
+ return if STATES[:mount]
18
+ mount_swap
19
+ mount_root
20
+ mount_boot
21
+ mount_home
22
+ mount_boot_efi
23
+ @state.mount
24
+ end
25
+
26
+ private
27
+
28
+ def mount_swap
29
+ return if ! @dev_swap
30
+ system("swapon #{@dev_swap}")
31
+ end
32
+
33
+ def mount_root
34
+ return if ! @dev_root
35
+ Dir.mkdir(@root_dir, 0700) if ! Dir.exist?(@root_dir)
36
+ system("mount #{@dev_root} #{@root_dir}")
37
+ end
38
+
39
+ def mount_boot_efi
40
+ return if ! @dev_boot_efi
41
+ FileUtils.mkdir_p @boot_efi_dir, mode: 0700 if ! Dir.exist?(@boot_efi_dir)
42
+ system("mount #{@dev_boot_efi} #{@boot_efi_dir}")
43
+ end
44
+
45
+ def mount_boot
46
+ return if ! @dev_boot
47
+ FileUtils.mkdir_p @boot_dir, mode: 0700 if ! Dir.exist?(@boot_dir)
48
+ system("mount #{@dev_boot} #{@boot_dir}")
49
+ end
50
+
51
+ def mount_home
52
+ return if ! @dev_home
53
+ if @user != nil then
54
+ FileUtils.mkdir_p @home_dir, mode: 0700 if ! Dir.exist?(@home_dir)
55
+ system("mount #{@dev_home} #{@home_dir}")
56
+ end
57
+ @state.mount
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,75 @@
1
+ module Getch
2
+ module FileSystem
3
+ module Ext4
4
+ class Partition < Getch::FileSystem::Ext4::Device
5
+ def initialize
6
+ super
7
+ @state = Getch::States.new()
8
+ run_partition
9
+ end
10
+
11
+ def run_partition
12
+ return if STATES[:partition ]
13
+ clear_struct
14
+ cleaning
15
+ if Helpers::efi?
16
+ partition_efi
17
+ else
18
+ partition_bios
19
+ end
20
+ @state.partition
21
+ end
22
+
23
+ private
24
+
25
+ def clear_struct
26
+ exec("sgdisk -Z /dev/#{@disk}")
27
+ exec("wipefs -a /dev/#{@disk}")
28
+ end
29
+
30
+ def cleaning
31
+ puts
32
+ print "Cleaning data on #{@disk}, can be long, avoid this on Flash Memory (SSD,USB,...) ? (n,y) "
33
+ case gets.chomp
34
+ when /^y|^Y/
35
+ bloc=`blockdev --getbsz /dev/#{@disk}`.chomp
36
+ exec("dd if=/dev/urandom of=/dev/#{@disk} bs=#{bloc} status=progress")
37
+ else
38
+ return
39
+ end
40
+ end
41
+
42
+ # Follow https://wiki.archlinux.org/index.php/Partitioning
43
+ def partition_efi
44
+ # /boot/efi - EFI system partition - 260MB
45
+ # / - Root
46
+ # swap - Linux Swap - size of the ram
47
+ # /home - Home
48
+ mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
49
+
50
+ exec("sgdisk -n1:1M:+260M -t1:EF00 /dev/#{@disk}")
51
+ exec("sgdisk -n2:0:+15G -t2:8304 /dev/#{@disk}")
52
+ exec("sgdisk -n3:0:+#{mem} -t3:8200 /dev/#{@disk}")
53
+ exec("sgdisk -n4:0:0 -t4:8302 /dev/#{@disk}") if @dev_home
54
+ end
55
+
56
+ def partition_bios
57
+ # None - Bios Boot Partition - 1MiB
58
+ # / - Root
59
+ # swap - Linux Swap - size of the ram
60
+ # /home - Home
61
+ mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
62
+
63
+ exec("sgdisk -n1:1MiB:+1MiB -t1:EF02 /dev/#{@disk}")
64
+ exec("sgdisk -n2:0:+15G -t2:8304 /dev/#{@disk}")
65
+ exec("sgdisk -n3:0:+#{mem} -t3:8200 /dev/#{@disk}")
66
+ exec("sgdisk -n4:0:0 -t4:8302 /dev/#{@disk}") if @dev_home
67
+ end
68
+
69
+ def exec(cmd)
70
+ Getch::Command.new(cmd).run!
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -44,7 +44,7 @@ module Getch
44
44
  return if STATES[:gentoo_kernel]
45
45
  chroot.kernel
46
46
  chroot.kernel_deps
47
- chroot.install_tools
47
+ chroot.install_pkgs
48
48
  end
49
49
 
50
50
  def kernel
@@ -6,10 +6,12 @@ module Getch
6
6
  def initialize(opts)
7
7
  @disk = opts.disk
8
8
  @user = opts.username
9
+ @config = OPTIONS_FS[DEFAULT_OPTIONS[:fs]]::Config.new()
9
10
  end
10
11
 
11
12
  def start
12
- gen_fstab
13
+ @config.fstab
14
+ OPTIONS_FS[DEFAULT_OPTIONS[:fs]]::Deps.new()
13
15
  bootloader
14
16
  password
15
17
  umount
@@ -29,23 +31,13 @@ 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
- File.write("#{MOUNTPOINT}/#{esp}/loader/entries/gentoo.conf", datas_gentoo.join("\n"))
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)
@@ -61,6 +53,7 @@ module Getch
61
53
  def grub
62
54
  puts 'Installing GRUB...'
63
55
  Helpers::emerge("sys-boot/grub:2", MOUNTPOINT)
56
+ @config.grub
64
57
  exec_chroot("grub-install /dev/#{@disk}")
65
58
  exec_chroot('grub-mkconfig -o /boot/grub/grub.cfg')
66
59
  end
@@ -86,11 +79,6 @@ module Getch
86
79
 
87
80
  private
88
81
 
89
- def gen_fstab
90
- mount = Getch::Mount.new(@disk, @user)
91
- mount.gen_fstab
92
- end
93
-
94
82
  def exec_chroot(cmd)
95
83
  script = "chroot #{MOUNTPOINT} /bin/bash -c \"
96
84
  source /etc/profile
@@ -3,6 +3,7 @@ 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
 
@@ -32,7 +33,8 @@ module Getch
32
33
  puts "Installing kernel gentoo-sources..."
33
34
  license = "#{MOUNTPOINT}/etc/portage/package.license"
34
35
  File.write(license, "sys-kernel/linux-firmware linux-fw-redistributable no-source-code\n")
35
- Helpers::emerge("sys-kernel/gentoo-sources linux-firmware", MOUNTPOINT)
36
+ @pkgs << "sys-kernel/gentoo-sources"
37
+ @pkgs << "dev-util/dwarves"
36
38
  end
37
39
 
38
40
  def kernel_deps
@@ -41,8 +43,10 @@ module Getch
41
43
  garden_dep
42
44
  end
43
45
 
44
- def install_tools
45
- Helpers::emerge("dhcpcd", MOUNTPOINT)
46
+ def install_pkgs
47
+ @pkgs << "app-admin/sudo"
48
+ @pkgs << "app-editors/vim"
49
+ Helpers::emerge(@pkgs.join(" "), MOUNTPOINT)
46
50
  end
47
51
 
48
52
  private
@@ -59,9 +63,8 @@ module Getch
59
63
 
60
64
  def garden_dep
61
65
  Helpers::emerge("gentoolkit", MOUNTPOINT)
62
- cmd = "euse -p sys-apps/kmod -E lzma"
63
- Helpers::emerge("kmod", MOUNTPOINT)
64
- exec_chroot(cmd)
66
+ exec_chroot("euse -p sys-apps/kmod -E lzma")
67
+ @pkgs << "sys-apps/kmod"
65
68
  end
66
69
 
67
70
  def mount
@@ -11,13 +11,13 @@ module Getch
11
11
 
12
12
  def portage
13
13
  nproc = `nproc`.chomp()
14
- efi = Helpers::efi? ? 'GRUB_PLATFORMS="efi-64"' : ''
14
+ grub_pc = Helpers::efi? ? '' : 'GRUB_PLATFORMS="pc"'
15
15
  data = [
16
16
  '',
17
17
  'ACCEPT_KEYWORD="amd64 ~amd64"',
18
18
  "MAKEOPTS=\"-j#{nproc} -l#{nproc}\"",
19
19
  'INPUT_DEVICES="libinput"',
20
- efi
20
+ grub_pc
21
21
  ]
22
22
  File.write(@make, data.join("\n"), mode: "a")
23
23
  end
@@ -20,9 +20,10 @@ module Getch
20
20
 
21
21
  def make
22
22
  puts "Compiling kernel sources"
23
- only_make
24
- cmd = "cd #{@linux} && make modules_install && make install"
23
+ cmd = "cd #{@linux} && make -j$(nproc) && make modules_install && make install"
25
24
  exec_chroot(cmd)
25
+ is_kernel = Dir.glob("#{MOUNTPOINT}/boot/vmlinuz-*")
26
+ raise "No kernel installed, compiling source fail..." if is_kernel == []
26
27
  end
27
28
 
28
29
  def only_make
@@ -73,7 +74,7 @@ module Getch
73
74
 
74
75
  def install_zfs
75
76
  exec("./kernel.sh -b -a zfs -k #{@linux}")
76
- only_make # a first make is necessary before emerge zfs
77
+ only_make # a first 'make' is necessary before emerge zfs
77
78
  Helpers::emerge("zfs", MOUNTPOINT)
78
79
  end
79
80
  end
@@ -38,4 +38,12 @@ module Helpers
38
38
  \""
39
39
  Getch::Command.new(cmd).run!
40
40
  end
41
+
42
+ def self.run_chroot(cmd, path)
43
+ script = "chroot #{path} /bin/bash -c \"
44
+ source /etc/profile
45
+ #{cmd}
46
+ \""
47
+ Getch::Command.new(script).run!
48
+ end
41
49
  end
@@ -2,7 +2,7 @@ require 'optparse'
2
2
 
3
3
  module Getch
4
4
  class Options
5
- attr_reader :language, :zoneinfo, :keyboard, :disk, :fs, :username, :verbose
5
+ attr_reader :language, :zoneinfo, :keyboard, :disk, :fs, :username, :encrypt, :verbose
6
6
 
7
7
  def initialize(argv)
8
8
  @language = DEFAULT_OPTIONS[:language]
@@ -11,6 +11,7 @@ module Getch
11
11
  @disk = DEFAULT_OPTIONS[:disk]
12
12
  @fs = DEFAULT_OPTIONS[:fs]
13
13
  @username = DEFAULT_OPTIONS[:username]
14
+ @encrypt = DEFAULT_OPTIONS[:encrypt]
14
15
  @verbose = DEFAULT_OPTIONS[:verbose]
15
16
  parse(argv)
16
17
  end
@@ -37,7 +38,10 @@ module Getch
37
38
  opts.on("-u", "--username USERNAME", "Initialize /home/username") do |user|
38
39
  @username = user
39
40
  end
40
- opts.on("-v", "--verbose", "Write more messages to the standard output.") do
41
+ opts.on("--encrypt", "Encrypt your filesystem.!! NOT YET READY !!") do
42
+ @encrypt = true
43
+ end
44
+ opts.on("--verbose", "Write more messages to the standard output.") do
41
45
  @verbose = true
42
46
  end
43
47
  opts.on("-h", "--help", "Display this") do
@@ -1,3 +1,3 @@
1
1
  module Getch
2
- VERSION = '0.0.6'.freeze
2
+ VERSION = '0.0.7'.freeze
3
3
  end
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.6
4
+ version: 0.0.7
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-19 00:00:00.000000000 Z
38
+ date: 2020-09-22 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
41
  email:
@@ -56,7 +56,19 @@ files:
56
56
  - lib/getch/command.rb
57
57
  - lib/getch/filesystem.rb
58
58
  - lib/getch/filesystem/ext4.rb
59
- - lib/getch/filesystem/root.rb
59
+ - lib/getch/filesystem/ext4/config.rb
60
+ - lib/getch/filesystem/ext4/deps.rb
61
+ - lib/getch/filesystem/ext4/device.rb
62
+ - lib/getch/filesystem/ext4/encrypt.rb
63
+ - lib/getch/filesystem/ext4/encrypt/config.rb
64
+ - lib/getch/filesystem/ext4/encrypt/deps.rb
65
+ - lib/getch/filesystem/ext4/encrypt/device.rb
66
+ - lib/getch/filesystem/ext4/encrypt/format.rb
67
+ - lib/getch/filesystem/ext4/encrypt/mount.rb
68
+ - lib/getch/filesystem/ext4/encrypt/partition.rb
69
+ - lib/getch/filesystem/ext4/format.rb
70
+ - lib/getch/filesystem/ext4/mount.rb
71
+ - lib/getch/filesystem/ext4/partition.rb
60
72
  - lib/getch/gentoo.rb
61
73
  - lib/getch/gentoo/boot.rb
62
74
  - lib/getch/gentoo/chroot.rb
@@ -64,7 +76,6 @@ files:
64
76
  - lib/getch/gentoo/sources.rb
65
77
  - lib/getch/gentoo/stage.rb
66
78
  - lib/getch/helpers.rb
67
- - lib/getch/mount.rb
68
79
  - lib/getch/options.rb
69
80
  - lib/getch/states.rb
70
81
  - lib/getch/version.rb
@@ -90,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
101
  - !ruby/object:Gem::Version
91
102
  version: '0'
92
103
  requirements: []
93
- rubygems_version: 3.1.3
104
+ rubygems_version: 3.1.4
94
105
  signing_key:
95
106
  specification_version: 4
96
107
  summary: A CLI tool to install Gentoo
metadata.gz.sig CHANGED
@@ -1,2 +1,2 @@
1
- dHJ�`�MDX�>�[�eh Y�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$<�|�-�0r��T�@�<�ܚh� �gǙ/�l�%��(@���FE�D~�����}��j���$���D
1
+ ���L7Zrz{
2
+ 1���Q ���bp��(�)��m')��p6iN�+�V${8d��
@@ -1,63 +0,0 @@
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
@@ -1,88 +0,0 @@
1
- require 'fileutils'
2
-
3
- module Getch
4
- class Mount
5
- def initialize(disk, user)
6
- @disk = disk
7
- @user = user
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
12
- @state = Getch::States.new()
13
- gen_vars
14
- end
15
-
16
- def run
17
- return if STATES[:mount]
18
- mount_swap
19
- mount_root
20
- mount_boot
21
- mount_home
22
- mount_boot_efi if Helpers::efi?
23
- @state.mount
24
- end
25
-
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"))
32
- end
33
-
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
42
- end
43
-
44
- def mount_swap
45
- return if ! @dev_swap
46
- system("swapon #{@dev_swap}")
47
- end
48
-
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}")
53
- end
54
-
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
60
-
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
74
- end
75
-
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
83
-
84
- def data_fstab
85
- return []
86
- end
87
- end
88
- end