+
+ unless File.exists? "#{dir}/vmlinuz"
+ system("chroot", dir, "apt-get", "-qy", "update")
+ system("chroot", dir, "apt-get", "-y", "install", "linux-image-amd64")
+ end
+
+ puts "Update grub.cfg..."
+ system("mkdir", "-p", "#{dir}/boot/grub/i386-pc") or raise "Failed to create grub dir"
+ system("cp -a /usr/lib/grub/i386-pc/*.mod #{dir}/boot/grub/i386-pc/") or raise "Failed to copy grub modules"
+ if File.exists? "#{dir}/boot/grub/grub.cfg"
+ grubconf = File.read "#{dir}/boot/grub/grub.cfg"
+ if old_uuid = grubconf[/root=UUID=(\S+)/, 1]
+ File.write "#{dir}/boot/grub/grub.cfg", grubconf.gsub(/#{old_uuid}/, rootfs_uuid)
+ end
+ else
+ File.write "#{dir}/boot/grub/grub.cfg", <<-EOC
+ set timeout=5
+ insmod part_gpt
+ insmod ext2
+ insmod linux
+ search --no-floppy --fs-uuid --set=root #{rootfs_uuid}
+ menuentry 'Linux' {
+ linux /vmlinuz root=UUID=#{rootfs_uuid} ro
+ initrd /initrd.img
+ }
+ EOC
+ end