Sha256: 3e53aee31135042aba63ef1d9da0f9f5723374af5fdca8e528e480525e08eb2c

Contents?: true

Size: 1.93 KB

Versions: 1

Compression:

Stored size: 1.93 KB

Contents

# frozen_string_literal: true

module Getch
  module FileSystem
    module Zfs
      module Encrypt
        class Partition < Device
          def initialize
            super
            @state = Getch::States.new
            @clean = Getch::FileSystem::Clean
            @partition = Getch::FileSystem::Partition.new
            @log = Getch::Log.new
            run
          end

          def run
            return if STATES[:partition]

            @clean.old_zpool
            @clean.hdd(@disk)
            @clean.external_disk(@disk, @boot_disk, @cache_disk, @home_disk)

            partition
            cache
            @state.partition
          end

          private

          def partition
            if Helpers.efi?
              @partition.efi(@dev_esp)
              @partition.boot(@dev_boot) if Getch::OPTIONS[:os] == 'void'
              @partition.swap(@dev_swap) unless @cache_disk
              @partition.root(@dev_root, 'BF00') if @root_part != 1
            else
              @partition.gpt(@dev_gpt)
              @partition.boot(@dev_boot)
              @partition.swap(@dev_swap) unless @cache_disk
              @partition.root(@dev_root, 'BF00') if @root_part != 1
            end
          end

          def cache
            return unless @cache_disk

            mem = `awk '/MemTotal/ {print $2}' /proc/meminfo`.chomp + 'K'
            exec("sgdisk -n1:0:+#{mem} -t1:8200 /dev/#{@cache_disk}")
            exec("sgdisk -n2:0:+4G -t2:BF07 /dev/#{@cache_disk}")
            exec("sgdisk -n3:0:0 -t3:BF08 /dev/#{@cache_disk}")
          end

          # Partition_efi
          # /efi      - EFI system partition - 260MB
          # /         - Root

          # Partition_bios
          # None      - Bios Boot Partition - 1MiB
          # /boot     - Boot - 8300
          # /         - Root

          def exec(cmd)
            @log.info("===> #{cmd}")
            Helpers.sys(cmd)
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
getch-0.1.9 lib/getch/filesystem/zfs/encrypt/partition.rb