getch 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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