class Getch::FileSystem::Lvm::Encrypt::Config

Public Class Methods

new() click to toggle source
# File lib/getch/filesystem/lvm/encrypt/config.rb, line 6
def initialize
  super
  gen_uuid
  @root_dir = MOUNTPOINT
  @init = '/usr/lib/systemd/systemd'
  crypttab
end

Public Instance Methods

crypttab() click to toggle source
# File lib/getch/filesystem/lvm/encrypt/config.rb, line 33
def crypttab
  datas = [
    "cryptswap #{@lv_swap} /dev/urandom swap,cipher=aes-xts-plain64:sha256,size=512"
  ]
  File.write("#{@root_dir}/etc/crypttab", datas.join("\n"))
end
fstab() click to toggle source
# File lib/getch/filesystem/lvm/encrypt/config.rb, line 14
def fstab
  file = "#{@root_dir}/etc/fstab"
  datas = data_fstab
  File.write(file, datas.join("\n"))
end
grub() click to toggle source
# File lib/getch/filesystem/lvm/encrypt/config.rb, line 40
def grub
  return if Helpers::efi?
  file = "#{@root_dir}/etc/default/grub"
  cmdline = [ 
    "GRUB_CMDLINE_LINUX=\"crypt_root=UUID=#{@uuid_dev_root} root=/dev/mapper/root real_root=#{@lv_root} init=#{@init} dolvm rw slub_debug=P page_poison=1 slab_nomerge pti=on vsyscall=none spectre_v2=on spec_store_bypass_disable=seccomp iommu=force keymap=#{Getch::OPTIONS[:keymap]}\"",
    "GRUB_ENABLE_CRYPTODISK=y"
  ]
  File.write("#{file}", cmdline.join("\n"), mode: 'a')
end
systemd_boot() click to toggle source
# File lib/getch/filesystem/lvm/encrypt/config.rb, line 20
def systemd_boot
  return if ! Helpers::efi? 
  esp = '/efi'
  dir = "#{@root_dir}/#{esp}/loader/entries/"
  datas_gentoo = [
    'title Gentoo Linux',
    'linux /vmlinuz',
    'initrd /initramfs',
    "options crypt_root=UUID=#{@uuid_dev_root} root=/dev/mapper/root real_root=#{@lv_root} init=#{@init} keymap=#{Getch::OPTIONS[:keymap]} dolvm rw"
  ]
  File.write("#{dir}/gentoo.conf", datas_gentoo.join("\n"))
end

Private Instance Methods

data_fstab() click to toggle source
# File lib/getch/filesystem/lvm/encrypt/config.rb, line 58
def data_fstab
  boot_efi = @dev_esp ? "UUID=#{@uuid_esp} /efi vfat noauto,noatime 1 2" : ''
  boot = @dev_boot ? "UUID=#{@uuid_boot} /boot ext4 noauto,noatime 1 2" : ''
  swap = "/dev/mapper/cryptswap none swap discard 0 0"
  root = "#{@lv_root} / ext4 defaults 0 1"
  home = @lv_home ? "#{@lv_home} /home/#{@user} ext4 defaults 0 2" : ''

  [ boot_efi, boot, swap, root, home ]
end
gen_uuid() click to toggle source
# File lib/getch/filesystem/lvm/encrypt/config.rb, line 52
def gen_uuid
  @uuid_dev_root = `lsblk -d -o "UUID" #{@dev_root} | tail -1`.chomp() if @dev_root
  @uuid_boot = `lsblk -o "UUID" #{@dev_boot} | tail -1`.chomp() if @dev_boot
  @uuid_esp = `lsblk -o "UUID" #{@dev_esp} | tail -1`.chomp() if @dev_esp
end