class Dock0::Image
An Image
is a rootfs for a system
Public Instance Methods
apply_overlay()
click to toggle source
# File lib/dock0/image.rb, line 48 def apply_overlay puts "Applying overlay from #{@paths[:overlay]}" overlay_path = @paths[:overlay] + '/.' FileUtils.cp_r overlay_path, @paths[:build] end
default_config()
click to toggle source
# File lib/dock0/image.rb, line 7 def default_config # rubocop:disable Metrics/MethodLength { paths: { build_file: './root.fs', build: './build', package_list: './packages', overlay: './overlay', scripts: './scripts', output: './root.fs.sfs' }, fs: { size: 512, type: 'ext4', flags: '-F' } } end
easy_mode()
click to toggle source
# File lib/dock0/image.rb, line 73 def easy_mode cleanup @paths.values_at(:build_file, :build, :output) prepare_root install_packages apply_overlay run_scripts run_commands finalize cleanup @paths.values_at(:build_file, :build) end
finalize()
click to toggle source
# File lib/dock0/image.rb, line 66 def finalize puts 'Packing up root FS' run "umount #{@paths[:build]}" FileUtils.rm_f @paths[:output] run "mksquashfs #{@paths[:build_file]} #{@paths[:output]}" end
install_packages()
click to toggle source
# File lib/dock0/image.rb, line 41 def install_packages File.read(@paths[:package_list]).split("\n").each do |package| puts "Installing #{package}" run "pacstrap -G -M #{@paths[:build]} #{package}" end end
prepare_root()
click to toggle source
# File lib/dock0/image.rb, line 29 def prepare_root build_file = @paths[:build_file] filesystem = @config[:fs] puts "Making build FS at #{build_file}" run "dd if=/dev/zero of=#{build_file} bs=1MB count=#{filesystem[:size]}" mkfs = "mkfs.#{filesystem[:type]} #{filesystem[:flags]}" run "#{mkfs} #{build_file}" puts "Mounting FS at #{@paths[:build]}" FileUtils.mkdir_p @paths[:build] run "mount #{build_file} #{@paths[:build]}" end
run_chroot(cmd)
click to toggle source
# File lib/dock0/image.rb, line 25 def run_chroot(cmd) run "arch-chroot #{@paths[:build]} #{cmd}" end
run_commands()
click to toggle source
# File lib/dock0/image.rb, line 54 def run_commands cmds = @config.fetch(:commands, {}) cmds.fetch(:chroot, []).each do |cmd| puts "Running #{cmd} in chroot" run_chroot cmd end cmds.fetch(:host, []).each do |cmd| puts "Running #{cmd} on host" run cmd end end