getch 0.1.0 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +95 -22
  5. data/assets/network-stack.conf +63 -0
  6. data/bin/getch +12 -4
  7. data/lib/getch.rb +116 -66
  8. data/lib/getch/command.rb +19 -5
  9. data/lib/getch/config.rb +42 -0
  10. data/lib/getch/config/gentoo.rb +59 -0
  11. data/lib/getch/config/void.rb +49 -0
  12. data/lib/getch/filesystem.rb +5 -0
  13. data/lib/getch/filesystem/.mount.rb.swp +0 -0
  14. data/lib/getch/filesystem/clean.rb +58 -0
  15. data/lib/getch/filesystem/device.rb +61 -0
  16. data/lib/getch/filesystem/ext4.rb +1 -0
  17. data/lib/getch/filesystem/ext4/config.rb +8 -9
  18. data/lib/getch/filesystem/ext4/device.rb +2 -7
  19. data/lib/getch/filesystem/ext4/encrypt.rb +1 -0
  20. data/lib/getch/filesystem/ext4/encrypt/config.rb +8 -9
  21. data/lib/getch/filesystem/ext4/encrypt/deps.rb +3 -19
  22. data/lib/getch/filesystem/ext4/encrypt/device.rb +3 -8
  23. data/lib/getch/filesystem/ext4/encrypt/format.rb +3 -6
  24. data/lib/getch/filesystem/ext4/encrypt/mount.rb +5 -43
  25. data/lib/getch/filesystem/ext4/encrypt/partition.rb +29 -54
  26. data/lib/getch/filesystem/ext4/encrypt/void.rb +100 -0
  27. data/lib/getch/filesystem/ext4/format.rb +4 -6
  28. data/lib/getch/filesystem/ext4/mount.rb +7 -46
  29. data/lib/getch/filesystem/ext4/partition.rb +16 -39
  30. data/lib/getch/filesystem/ext4/void.rb +43 -0
  31. data/lib/getch/filesystem/lvm.rb +1 -0
  32. data/lib/getch/filesystem/lvm/config.rb +11 -15
  33. data/lib/getch/filesystem/lvm/deps.rb +4 -19
  34. data/lib/getch/filesystem/lvm/device.rb +33 -9
  35. data/lib/getch/filesystem/lvm/encrypt.rb +1 -0
  36. data/lib/getch/filesystem/lvm/encrypt/config.rb +9 -12
  37. data/lib/getch/filesystem/lvm/encrypt/deps.rb +4 -21
  38. data/lib/getch/filesystem/lvm/encrypt/device.rb +33 -9
  39. data/lib/getch/filesystem/lvm/encrypt/format.rb +3 -4
  40. data/lib/getch/filesystem/lvm/encrypt/mount.rb +7 -47
  41. data/lib/getch/filesystem/lvm/encrypt/partition.rb +30 -38
  42. data/lib/getch/filesystem/lvm/encrypt/void.rb +100 -0
  43. data/lib/getch/filesystem/lvm/format.rb +12 -8
  44. data/lib/getch/filesystem/lvm/mount.rb +7 -46
  45. data/lib/getch/filesystem/lvm/partition.rb +19 -31
  46. data/lib/getch/filesystem/lvm/void.rb +45 -0
  47. data/lib/getch/filesystem/mount.rb +56 -0
  48. data/lib/getch/filesystem/partition.rb +77 -0
  49. data/lib/getch/filesystem/zfs.rb +1 -0
  50. data/lib/getch/filesystem/zfs/config.rb +7 -8
  51. data/lib/getch/filesystem/zfs/deps.rb +24 -12
  52. data/lib/getch/filesystem/zfs/device.rb +54 -9
  53. data/lib/getch/filesystem/zfs/encrypt.rb +1 -0
  54. data/lib/getch/filesystem/zfs/encrypt/.mount.rb.swp +0 -0
  55. data/lib/getch/filesystem/zfs/encrypt/config.rb +11 -11
  56. data/lib/getch/filesystem/zfs/encrypt/deps.rb +24 -14
  57. data/lib/getch/filesystem/zfs/encrypt/device.rb +54 -9
  58. data/lib/getch/filesystem/zfs/encrypt/format.rb +84 -3
  59. data/lib/getch/filesystem/zfs/encrypt/mount.rb +8 -28
  60. data/lib/getch/filesystem/zfs/encrypt/partition.rb +26 -109
  61. data/lib/getch/filesystem/zfs/encrypt/void.rb +96 -0
  62. data/lib/getch/filesystem/zfs/format.rb +97 -4
  63. data/lib/getch/filesystem/zfs/mount.rb +10 -32
  64. data/lib/getch/filesystem/zfs/partition.rb +25 -106
  65. data/lib/getch/filesystem/zfs/void.rb +81 -0
  66. data/lib/getch/gentoo.rb +20 -16
  67. data/lib/getch/gentoo/boot.rb +24 -16
  68. data/lib/getch/gentoo/chroot.rb +16 -25
  69. data/lib/getch/gentoo/config.rb +67 -15
  70. data/lib/getch/gentoo/sources.rb +55 -13
  71. data/lib/getch/gentoo/stage.rb +0 -1
  72. data/lib/getch/gentoo/use.rb +43 -0
  73. data/lib/getch/gentoo/use_flag.rb +63 -0
  74. data/lib/getch/guard.rb +64 -0
  75. data/lib/getch/helpers.rb +133 -0
  76. data/lib/getch/log.rb +3 -2
  77. data/lib/getch/options.rb +46 -24
  78. data/lib/getch/version.rb +1 -1
  79. data/lib/getch/void.rb +59 -0
  80. data/lib/getch/void/boot.rb +80 -0
  81. data/lib/getch/void/chroot.rb +55 -0
  82. data/lib/getch/void/config.rb +87 -0
  83. data/lib/getch/void/stage.rb +70 -0
  84. metadata +46 -25
  85. metadata.gz.sig +0 -0
  86. data/.gitignore +0 -2
  87. data/CHANGELOG.md +0 -60
  88. data/Rakefile +0 -21
  89. data/bin/setup.sh +0 -90
  90. data/getch.gemspec +0 -25
@@ -2,29 +2,33 @@ module Getch
2
2
  module FileSystem
3
3
  module Zfs
4
4
  module Encrypt
5
- class Deps < Getch::FileSystem::Zfs::Encrypt::Device
6
- def initialize
7
- super
5
+ class Deps < Device
6
+ def make
7
+ unstable_zfs
8
8
  install_deps
9
9
  zfs_mountpoint
10
10
  auto_module_rebuild
11
- end
12
-
13
- def make
14
11
  hostid
15
12
  options_make
16
13
  Getch::Make.new("genkernel --kernel-config=/usr/src/linux/.config all").run!
14
+ zed_update_path
17
15
  end
18
16
 
19
17
  private
18
+ def unstable_zfs
19
+ conf = "#{MOUNTPOINT}/etc/portage/package.accept_keywords/zfs"
20
+ data = [
21
+ "sys-fs/zfs-kmod",
22
+ "sys-fs/zfs"
23
+ ]
24
+ File.write(conf, data.join("\n"), mode: "w")
25
+ end
26
+
20
27
  def install_deps
21
- exec("euse -E libzfs") if ! Helpers::grep?("#{MOUNTPOINT}/etc/portage/make.conf", /libzfs/)
22
- exec("euse -E rootfs") if ! Helpers::grep?("#{MOUNTPOINT}/etc/portage/make.conf", /rootfs/)
23
- exec("euse -E cryptsetup") if ! Helpers::grep?("#{MOUNTPOINT}/etc/portage/make.conf", /cryptsetup/)
24
- Getch::Garden.new('-a zfs').run!
28
+ Getch::Bask.new('-a zfs').run!
25
29
  Getch::Make.new("make modules_prepare").run!
26
30
  Getch::Make.new("make -j$(nproc)").run!
27
- Getch::Emerge.new('genkernel sys-fs/zfs sys-apps/systemd sys-fs/cryptsetup').pkg!
31
+ Getch::Emerge.new('genkernel sys-fs/zfs').pkg!
28
32
  end
29
33
 
30
34
  # See: https://wiki.archlinux.org/index.php/ZFS#Using_zfs-mount-generator
@@ -34,11 +38,18 @@ module Getch
34
38
  Helpers::touch("#{MOUNTPOINT}/etc/zfs/zfs-list.cache/#{@pool_name}")
35
39
  exec("ln -fs /usr/libexec/zfs/zed.d/history_event-zfs-list-cacher.sh /etc/zfs/zed.d/")
36
40
  exec("systemctl start zfs-zed.service")
37
- Helpers::sys("sed -Ei \"s|/mnt/?|/|\" #{MOUNTPOINT}/etc/zfs/zfs-list.cache/*")
38
41
  exec("systemctl enable zfs-zed.service")
39
42
  exec("systemctl enable zfs.target")
40
43
  end
41
44
 
45
+ def zed_update_path
46
+ Dir.glob("#{MOUNTPOINT}/etc/zfs/zfs-list.cache/*").each { |f|
47
+ if !system("sed", "-Ei", "s|#{MOUNTPOINT}/?|/|", f)
48
+ raise "System exec sed"
49
+ end
50
+ }
51
+ end
52
+
42
53
  def auto_module_rebuild
43
54
  g_dir="#{MOUNTPOINT}/etc/portage/env/sys-kernel"
44
55
  Helpers::mkdir(g_dir)
@@ -61,8 +72,7 @@ EOF
61
72
  end
62
73
 
63
74
  def hostid
64
- hostid_value=`hostid`.chomp
65
- File.write("#{MOUNTPOINT}/etc/hostid", hostid_value, mode: 'w')
75
+ exec "zgenhostid $(hostid)"
66
76
  end
67
77
 
68
78
  def options_make
@@ -2,17 +2,62 @@ module Getch
2
2
  module FileSystem
3
3
  module Zfs
4
4
  module Encrypt
5
- class Device
5
+ class Device < Getch::FileSystem::Device
6
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_boot = Helpers::efi? ? nil : "/dev/#{@disk}2"
11
- @dev_swap = Helpers::efi? ? "/dev/#{@disk}2" : "/dev/#{@disk}3"
12
- @dev_root = Helpers::efi? ? "/dev/#{@disk}3" : "/dev/#{@disk}4"
13
- @boot_pool_name = 'bpool'
14
- @pool_name = 'zpool'
7
+ super
8
+ @id = Helpers::pool_id(@dev_root)
9
+ @boot_pool_name = "bpool-#{@id}"
10
+ @pool_name = "rpool-#{@id}"
15
11
  @zfs_home = @user ? true : false
12
+ @n = Getch::OPTIONS[:os]
13
+ end
14
+
15
+ private
16
+
17
+ def search_boot
18
+ if @efi
19
+ if @boot_disk
20
+ @dev_esp = "/dev/#{@boot_disk}1"
21
+ @dev_boot = "/dev/#{@boot_disk}2" if Getch::OPTIONS[:os] == 'void'
22
+ else
23
+ @dev_esp = "/dev/#{@disk}1"
24
+ @root_part += 1
25
+ if Getch::OPTIONS[:os] == 'void'
26
+ @dev_boot = "/dev/#{@disk}#{@root_part}"
27
+ @root_part += 1
28
+ end
29
+ end
30
+ else
31
+ if @boot_disk
32
+ @dev_gpt = "/dev/#{@boot_disk}1"
33
+ @dev_boot = "/dev/#{@boot_disk}2"
34
+ @dev_grub = "/dev/#{@boot_disk}"
35
+ else
36
+ @dev_gpt = "/dev/#{@disk}1"
37
+ @dev_boot = "/dev/#{@disk}2"
38
+ @dev_grub = "/dev/#{@disk}"
39
+ @root_part += 2
40
+ end
41
+ end
42
+ end
43
+
44
+ def search_swap
45
+ if @cache_disk
46
+ @dev_swap = "/dev/#{@cache_disk}1"
47
+ @dev_log = "/dev/#{@cache_disk}2"
48
+ @dev_cache = "/dev/#{@cache_disk}3"
49
+ else
50
+ @dev_swap = "/dev/#{@disk}#{@root_part}"
51
+ @root_part += 1
52
+ end
53
+ end
54
+
55
+ def search_root
56
+ if @root_part == 1
57
+ @dev_root = "/dev/#{@disk}"
58
+ else
59
+ @dev_root = "/dev/#{@disk}#{@root_part}"
60
+ end
16
61
  end
17
62
  end
18
63
  end
@@ -2,19 +2,100 @@ module Getch
2
2
  module FileSystem
3
3
  module Zfs
4
4
  module Encrypt
5
- class Format < Getch::FileSystem::Zfs::Encrypt::Device
5
+ class Format < Device
6
6
  def initialize
7
7
  super
8
+ @log = Getch::Log.new()
8
9
  @state = Getch::States.new()
10
+ if ! @id
11
+ @log.info "Research pool id for #{@dev_root}..."
12
+ @id = Helpers::pool_id(@dev_root)
13
+ @boot_pool_name = "bpool-#{@id}"
14
+ @pool_name = "rpool-#{@id}"
15
+ end
9
16
  format
10
17
  end
11
18
 
19
+ private
20
+
12
21
  def format
13
22
  return if STATES[:format]
14
- system("mkfs.fat -F32 #{@dev_boot_efi}") if @dev_boot_efi
15
- system("mkswap -f #{@dev_swap}")
23
+ raise "Error, no id found for #{@dev_root}." if ! @id
24
+ system("mkfs.fat -F32 #{@dev_esp}") if @dev_esp
25
+ zfs
26
+ datasets
16
27
  @state.format
17
28
  end
29
+
30
+ def zfs
31
+ bloc=`blockdev --getpbsz #{@dev_root}`
32
+ ashift = case bloc
33
+ when /8096/
34
+ 13
35
+ when /4096/
36
+ 12
37
+ else # 512
38
+ 9
39
+ end
40
+
41
+ Helpers::mkdir(MOUNTPOINT)
42
+
43
+ @log.debug("ashift found for #{bloc} - #{ashift}")
44
+ if @dev_boot
45
+ # https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2020.04%20Root%20on%20ZFS.html
46
+ @log.info("Creating boot pool on #{@pool_name}")
47
+ exec("zpool create -f \\
48
+ -o ashift=#{ashift} -o autotrim=on -d \\
49
+ -o feature@async_destroy=enabled \\
50
+ -o feature@bookmarks=enabled \\
51
+ -o feature@embedded_data=enabled \\
52
+ -o feature@empty_bpobj=enabled \\
53
+ -o feature@enabled_txg=enabled \\
54
+ -o feature@extensible_dataset=enabled \\
55
+ -o feature@filesystem_limits=enabled \\
56
+ -o feature@hole_birth=enabled \\
57
+ -o feature@large_blocks=enabled \\
58
+ -o feature@lz4_compress=enabled \\
59
+ -o feature@spacemap_histogram=enabled \\
60
+ -O acltype=posixacl -O canmount=off -O compression=lz4 \\
61
+ -O devices=off -O normalization=formD -O atime=off -O xattr=sa \\
62
+ -O mountpoint=/boot -R #{MOUNTPOINT} \\
63
+ #{@boot_pool_name} #{@dev_boot}
64
+ ")
65
+ end
66
+
67
+ exec("zpool create -f -o ashift=#{ashift} -o autotrim=on \\
68
+ -O encryption=aes-256-gcm \\
69
+ -O keylocation=prompt -O keyformat=passphrase \\
70
+ -O acltype=posixacl -O canmount=off -O compression=lz4 \\
71
+ -O dnodesize=auto -O normalization=formD -O atime=off \\
72
+ -O xattr=sa -O mountpoint=/ -R #{MOUNTPOINT} \\
73
+ #{@pool_name} #{@dev_root}
74
+ ")
75
+ end
76
+
77
+ def datasets
78
+ exec("zfs create -o canmount=off -o mountpoint=none #{@pool_name}/ROOT")
79
+ exec("zfs create -o canmount=off -o mountpoint=none #{@boot_pool_name}/BOOT") if @dev_boot
80
+
81
+ exec("zfs create -o canmount=noauto -o mountpoint=/ #{@pool_name}/ROOT/#{@n}")
82
+ exec("zfs create -o canmount=noauto -o mountpoint=/boot #{@boot_pool_name}/BOOT/#{@n}") if @dev_boot
83
+
84
+ exec("zfs create -o canmount=off #{@pool_name}/ROOT/#{@n}/usr")
85
+ exec("zfs create #{@pool_name}/ROOT/#{@n}/usr/src")
86
+ exec("zfs create -o canmount=off #{@pool_name}/ROOT/#{@n}/var")
87
+ exec("zfs create #{@pool_name}/ROOT/#{@n}/var/log")
88
+ exec("zfs create #{@pool_name}/ROOT/#{@n}/var/db")
89
+ exec("zfs create #{@pool_name}/ROOT/#{@n}/var/tmp")
90
+
91
+ exec("zfs create -o canmount=off -o mountpoint=/ #{@pool_name}/USERDATA")
92
+ exec("zfs create -o canmount=on -o mountpoint=/root #{@pool_name}/USERDATA/root")
93
+ exec("zfs create -o canmount=on -o mountpoint=/home/#{@user} #{@pool_name}/USERDATA/#{@user}") if @user
94
+ end
95
+
96
+ def exec(cmd)
97
+ Helpers::sys(cmd)
98
+ end
18
99
  end
19
100
  end
20
101
  end
@@ -1,16 +1,12 @@
1
- require 'fileutils'
2
-
3
1
  module Getch
4
2
  module FileSystem
5
3
  module Zfs
6
4
  module Encrypt
7
- class Mount < Getch::FileSystem::Zfs::Encrypt::Device
5
+ class Mount < Device
8
6
  def initialize
9
7
  super
10
- @root_dir = MOUNTPOINT
11
- @boot_dir = "#{@root_dir}/boot"
12
- @boot_efi_dir = "#{@root_dir}/boot/efi"
13
- @state = Getch::States.new()
8
+ @mount = Getch::FileSystem::Mount.new
9
+ @state = Getch::States.new
14
10
  @log = Getch::Log.new
15
11
  end
16
12
 
@@ -19,41 +15,25 @@ module Getch
19
15
  exec("zpool export -a")
20
16
  exec("rm -rf #{MOUNTPOINT}/*")
21
17
  exec("zpool import -N -R #{MOUNTPOINT} #{@pool_name}")
22
- exec("zpool import -N -R #{MOUNTPOINT} #{@boot_pool_name}") if @dev_boot
18
+ exec("zpool import -f -N -R #{MOUNTPOINT} #{@boot_pool_name}") if @dev_boot
23
19
  exec("zfs load-key -a")
24
- mount_swap
25
20
  mount_root
26
21
  mount_boot
27
- mount_boot_efi
22
+ @mount.esp(@dev_esp)
28
23
  exec("zfs mount -a")
29
24
  @state.mount
30
25
  end
31
26
 
32
27
  private
33
28
 
34
- def mount_swap
35
- if Helpers::grep?('/proc/swaps', /^\/dev/)
36
- exec("swapoff #{@dev_swap}")
37
- end
38
-
39
- exec("swapon #{@dev_swap}")
40
- end
41
-
42
29
  def mount_root
43
- Helpers::mkdir(@root_dir)
44
- exec("zfs mount #{@pool_name}/ROOT/gentoo")
45
- end
46
-
47
- def mount_boot_efi
48
- return if ! @dev_boot_efi
49
- Helpers::mkdir(@boot_efi_dir)
50
- exec("mount #{@dev_boot_efi} #{@boot_efi_dir}")
30
+ Helpers::mkdir(MOUNTPOINT)
31
+ exec("zfs mount #{@pool_name}/ROOT/#{@n}")
51
32
  end
52
33
 
53
34
  def mount_boot
54
35
  return if ! @dev_boot
55
- Helpers::mkdir(@boot_dir)
56
- exec("zfs mount #{@boot_pool_name}/BOOT/gentoo")
36
+ exec("zfs mount #{@boot_pool_name}/BOOT/#{@n}")
57
37
  end
58
38
 
59
39
  def exec(cmd)
@@ -2,138 +2,54 @@ module Getch
2
2
  module FileSystem
3
3
  module Zfs
4
4
  module Encrypt
5
- class Partition < Getch::FileSystem::Zfs::Encrypt::Device
5
+ class Partition < Device
6
6
  def initialize
7
7
  super
8
8
  @state = Getch::States.new()
9
+ @clean = Getch::FileSystem::Clean
10
+ @partition = Getch::FileSystem::Partition.new
9
11
  @log = Getch::Log.new()
10
- run_partition
12
+ run
11
13
  end
12
14
 
13
- def run_partition
15
+ def run
14
16
  return if STATES[:partition ]
15
- clear_struct
16
- cleaning
17
+ @clean.old_zpool
18
+ @clean.hdd(@disk)
19
+ @clean.external_disk(@disk, @boot_disk, @cache_disk, @home_disk)
20
+
17
21
  partition
18
- zfs
22
+ cache
19
23
  @state.partition
20
24
  end
21
25
 
22
26
  private
23
27
 
24
- def clear_struct
25
- oldvg = `vgdisplay | grep #{@vg}`.chomp
26
- oldzpool = `zpool status | grep pool:`.gsub(/pool: /, '').delete(' ').split("\n")
27
- if oldzpool[0] != "" and $?.success?
28
- oldzpool.each { |p| exec("zpool destroy #{p}") if p }
29
- end
30
- exec("vgremove -f #{@vg}") if oldvg != '' # remove older volume group
31
- exec("pvremove -f #{@dev_root}") if oldvg != '' and File.exist? @dev_root # remove older volume group
32
-
33
- exec("sgdisk -Z /dev/#{@disk}")
34
- exec("wipefs -a /dev/#{@disk}")
35
- end
36
-
37
- # See https://wiki.archlinux.org/index.php/Solid_state_drive/Memory_cell_clearing
38
- # for SSD
39
- def cleaning
40
- @bloc=`blockdev --getbsz /dev/#{@disk}`.chomp
41
- puts
42
- print "Cleaning data on #{@disk}, can be long, avoid this on Flash Memory (SSD,USB,...) ? (n,y) "
43
- case gets.chomp
44
- when /^y|^Y/
45
- exec("dd if=/dev/urandom of=/dev/#{@disk} bs=#{@bloc} status=progress")
46
- else
47
- return
48
- end
49
- end
50
-
51
28
  def partition
52
- mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
53
29
  if Helpers::efi?
54
- exec("sgdisk -n1:1M:+260M -t1:EF00 /dev/#{@disk}")
55
- exec("sgdisk -n2:0:+#{mem} -t2:8200 /dev/#{@disk}")
56
- exec("sgdisk -n3:0:+0 -t3:BF00 /dev/#{@disk}")
30
+ @partition.efi(@dev_esp)
31
+ @partition.boot(@dev_boot) if Getch::OPTIONS[:os] == 'void'
32
+ @partition.swap(@dev_swap) if !@cache_disk
33
+ @partition.root(@dev_root, "BF00") if @root_part != 1
57
34
  else
58
- exec("sgdisk -n1:1MiB:+1MiB -t1:EF02 /dev/#{@disk}")
59
- exec("sgdisk -n2:0:+2G -t2:BE00 /dev/#{@disk}") # boot pool GRUB
60
- exec("sgdisk -n3:0:+#{mem} -t3:8200 /dev/#{@disk}")
61
- exec("sgdisk -n4:0:+0 -t4:BF00 /dev/#{@disk}")
35
+ @partition.gpt(@dev_gpt)
36
+ @partition.boot(@dev_boot)
37
+ @partition.swap(@dev_swap) if !@cache_disk
38
+ @partition.root(@dev_root, "BF00") if @root_part != 1
62
39
  end
63
40
  end
64
41
 
65
- def zfs
66
- ashift = case @bloc
67
- when 8096
68
- 13
69
- when 4096
70
- 12
71
- else # 512
72
- 9
73
- end
74
-
75
- Helpers::mkdir(MOUNTPOINT)
76
-
77
- @log.debug("ashift found for #{@bloc} - #{ashift}")
78
- if ! Helpers::efi?
79
- # https://openzfs.github.io/openzfs-docs/Getting%20Started/Ubuntu/Ubuntu%2020.04%20Root%20on%20ZFS.html
80
- @log.info("Creating boot pool on #{@pool_name}")
81
- exec("zpool create -f \\
82
- -o ashift=#{ashift} -d \\
83
- -o feature@async_destroy=enabled \\
84
- -o feature@bookmarks=enabled \\
85
- -o feature@embedded_data=enabled \\
86
- -o feature@empty_bpobj=enabled \\
87
- -o feature@enabled_txg=enabled \\
88
- -o feature@extensible_dataset=enabled \\
89
- -o feature@filesystem_limits=enabled \\
90
- -o feature@hole_birth=enabled \\
91
- -o feature@large_blocks=enabled \\
92
- -o feature@lz4_compress=enabled \\
93
- -o feature@spacemap_histogram=enabled \\
94
- -O acltype=posixacl -O canmount=off -O compression=lz4 \\
95
- -O devices=off -O normalization=formD -O atime=off -O xattr=sa \\
96
- -O mountpoint=/boot -R #{MOUNTPOINT} \\
97
- #{@boot_pool_name} #{@dev_boot}
98
- ")
42
+ def cache
43
+ if @cache_disk
44
+ mem=`awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
45
+ exec("sgdisk -n1:0:+#{mem} -t1:8200 /dev/#{@cache_disk}")
46
+ exec("sgdisk -n2:0:+4G -t2:BF07 /dev/#{@cache_disk}")
47
+ exec("sgdisk -n3:0:0 -t3:BF08 /dev/#{@cache_disk}")
99
48
  end
100
-
101
- exec("zpool create -f -o ashift=#{ashift} \\
102
- -O encryption=aes-256-gcm \\
103
- -O keylocation=prompt -O keyformat=passphrase \\
104
- -O acltype=posixacl -O canmount=off -O compression=lz4 \\
105
- -O dnodesize=auto -O normalization=formD -O atime=off \\
106
- -O xattr=sa -O mountpoint=/ -R #{MOUNTPOINT} \\
107
- #{@pool_name} #{@dev_root}
108
- ")
109
-
110
- add_datasets
111
- end
112
-
113
- def add_datasets
114
- exec("zfs create -o canmount=off -o mountpoint=none #{@pool_name}/ROOT")
115
- exec("zfs create -o canmount=off -o mountpoint=none #{@boot_pool_name}/BOOT") if @dev_boot
116
-
117
- exec("zfs create -o canmount=noauto -o mountpoint=/ #{@pool_name}/ROOT/gentoo")
118
- # set bootfs
119
- #exec("zpool set bootfs=#{@pool_name}/ROOT/gentoo #{@pool_name}")
120
- exec("zfs create -o canmount=noauto -o mountpoint=/boot #{@boot_pool_name}/BOOT/gentoo") if @dev_boot
121
-
122
- exec("zfs create -o canmount=off #{@pool_name}/ROOT/gentoo/usr")
123
- exec("zfs create #{@pool_name}/ROOT/gentoo/usr/src")
124
- exec("zfs create -o canmount=off #{@pool_name}/ROOT/gentoo/var")
125
- exec("zfs create #{@pool_name}/ROOT/gentoo/var/log")
126
- exec("zfs create #{@pool_name}/ROOT/gentoo/var/db")
127
- exec("zfs create #{@pool_name}/ROOT/gentoo/var/tmp")
128
-
129
- exec("zfs create -o canmount=off -o mountpoint=/ #{@pool_name}/USERDATA")
130
- exec("zfs create -o canmount=on -o mountpoint=/root #{@pool_name}/USERDATA/root")
131
- exec("zfs create -o canmount=on -o mountpoint=/home/#{@user} #{@pool_name}/USERDATA/#{@user}") if @user
132
49
  end
133
50
 
134
- # Follow https://wiki.archlinux.org/index.php/Partitioning
135
51
  # Partition_efi
136
- # /boot/efi - EFI system partition - 260MB
52
+ # /efi - EFI system partition - 260MB
137
53
  # / - Root
138
54
 
139
55
  # Partition_bios
@@ -142,6 +58,7 @@ module Getch
142
58
  # / - Root
143
59
 
144
60
  def exec(cmd)
61
+ @log.info("===> #{cmd}")
145
62
  Helpers::sys(cmd)
146
63
  end
147
64
  end