Sha256: 77dedfb54cc8202b133fc62b4b3d58ee6f091e9abcb7170290888029e0280191

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

module Getch
  module FileSystem
    module Zfs
      class Mount < Device
        def initialize
          super
          @mount = Getch::FileSystem::Mount.new
          @state = Getch::States.new
          @log = Getch::Log.new
          @import = '/dev/disk/by-id'
        end

        def run
          return if STATES[:mount]
          exec('zpool export -a')
          exec("rm -rf #{MOUNTPOINT}/*")
          exec("zpool import -N -d #{@import} -R #{MOUNTPOINT} #{@pool_name}")
          exec("zpool import -f -N -d #{@import} -R #{MOUNTPOINT} #{@boot_pool_name}") if @dev_boot
          @mount.swap(@dev_swap)
          mount_root
          mount_boot
          @mount.esp(@dev_esp)
          exec('zfs mount -a')
          @state.mount
        end

        private

        def mount_root
          Helpers.mkdir(MOUNTPOINT)
          exec("zfs mount #{@pool_name}/ROOT/#{@n}")
        end

        def mount_boot
          return unless @dev_boot

          exec("zfs mount #{@boot_pool_name}/BOOT/#{@n}")
        end

        def exec(cmd)
          @log.info("==> #{cmd}")
          Helpers.sys(cmd)
        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/mount.rb