Sha256: 12ff0cb359fa7418ae59f6549b4f8819e87aec7f0be22453b3ca373e835e27d5

Contents?: true

Size: 1.67 KB

Versions: 1

Compression:

Stored size: 1.67 KB

Contents

module Getch
  module FileSystem
    module Lvm
      module Encrypt
        class Deps
          def initialize
            if Helpers::efi?
              install_efi
            else
              install_bios
            end
            install_deps
          end

          def make
            options_make
            Getch::Make.new("genkernel --kernel-config=/usr/src/linux/.config all").run!
          end

          private
          def options_make
            grub = Helpers::efi? ? 'BOOTLOADER="no"' : 'BOOTLOADER="grub2"'
            datas = [
              '',
              grub,
              'INSTALL="yes"',
              'MENUCONFIG="no"',
              'CLEAN="yes"',
              'KEYMAP="yes"',
              'SAVE_CONFIG="yes"',
              'MOUNTBOOT="yes"',
              'MRPROPER="no"',
              'LVM="yes"',
              'LUKS="yes"',
            ]
            file = "#{MOUNTPOINT}/etc/genkernel.conf"
            File.write(file, datas.join("\n"), mode: 'a')
          end

          def install_efi
          end

          def install_bios
            exec("euse -p sys-boot/grub -E device-mapper")
          end

          def install_deps
            make_conf = "#{MOUNTPOINT}/etc/portage/make.conf"
            exec("euse -E lvm") if ! Helpers::grep?(make_conf, /lvm/)
            exec("euse -E cryptsetup") if ! Helpers::grep?(make_conf, /cryptsetup/)
            Getch::Emerge.new('genkernel systemd sys-fs/cryptsetup lvm2').pkg!
            Getch::Bask.new('-a lvm').run!
            exec("systemctl enable lvm2-monitor")
          end

          def exec(cmd)
            Getch::Chroot.new(cmd).run!
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
getch-0.1.1 lib/getch/filesystem/lvm/encrypt/deps.rb