summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlessandro Elias2016-02-16 18:02:43 +0100
committerAlessandro Elias2016-02-16 18:02:43 +0100
commitc7058ec4d60387152537287950714b7743907400 (patch)
treedb579c1abfc84723d0e9fed41a4e41500eb2b41e
parentFile mode incorrect, set to 0755. (diff)
downloadsystemd-init-c7058ec4d60387152537287950714b7743907400.tar.gz
systemd-init-c7058ec4d60387152537287950714b7743907400.tar.xz
systemd-init-c7058ec4d60387152537287950714b7743907400.zip
Starting merge with actual code.
Signed-off-by: Alessandro Elias <ae11@c3sl.ufpr.br>
-rwxr-xr-xbuilder/build-initramfs.sh2
-rw-r--r--builder/hd-boot/.dialog_warnrc144
-rw-r--r--builder/hd-boot/common-lib.sh66
-rw-r--r--builder/hd-boot/dnbd3-conf/alt-servers1
-rw-r--r--builder/hd-boot/dnbd3-conf/server.conf38
-rw-r--r--builder/hd-boot/etc/cmdline.d/net.conf1
-rw-r--r--builder/hd-boot/etc/conf.d/debug.conf2
-rw-r--r--builder/hd-boot/grub/etc/default/grub35
-rwxr-xr-xbuilder/hd-boot/grub/etc/grub.d/00_header390
-rwxr-xr-xbuilder/hd-boot/grub/etc/grub.d/05_debian_theme192
-rwxr-xr-xbuilder/hd-boot/grub/etc/grub.d/10_linux367
-rwxr-xr-xbuilder/hd-boot/grub/etc/grub.d/20_linux_xen288
-rwxr-xr-xbuilder/hd-boot/grub/etc/grub.d/30_os-prober371
-rwxr-xr-xbuilder/hd-boot/grub/etc/grub.d/30_uefi-firmware46
-rwxr-xr-xbuilder/hd-boot/grub/etc/grub.d/40_custom5
-rwxr-xr-xbuilder/hd-boot/grub/etc/grub.d/41_custom9
-rw-r--r--builder/hd-boot/grub/etc/grub.d/README11
-rwxr-xr-xbuilder/hd-boot/grub/usr/bin/grub-editenvbin0 -> 226640 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/bin/grub-mkrelpathbin0 -> 222032 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/bin/grub-ntldr-imgbin0 -> 31920 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/bin/grub-script-checkbin0 -> 248464 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/bin/linux-boot-prober61
-rwxr-xr-xbuilder/hd-boot/grub/usr/bin/os-prober166
l---------builder/hd-boot/grub/usr/lib/grub/grub-mkconfig_lib1
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/915resolution.modbin0 -> 7816 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/acpi.modbin0 -> 10112 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/adler32.modbin0 -> 1380 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/affs.modbin0 -> 5696 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/afs.modbin0 -> 6804 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ahci.modbin0 -> 15580 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/all_video.modbin0 -> 704 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/aout.modbin0 -> 1104 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/archelp.modbin0 -> 3032 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/at_keyboard.modbin0 -> 4260 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ata.modbin0 -> 5684 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/backtrace.modbin0 -> 1712 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/bfs.modbin0 -> 7316 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/biosdisk.modbin0 -> 4648 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/bitmap.modbin0 -> 2320 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/bitmap_scale.modbin0 -> 3688 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/blocklist.modbin0 -> 2232 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/boot.imgbin0 -> 512 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/boot.modbin0 -> 2508 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/boot_hybrid.imgbin0 -> 512 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/bsd.modbin0 -> 29952 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/btrfs.modbin0 -> 14492 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/bufio.modbin0 -> 2164 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cat.modbin0 -> 2980 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cbfs.modbin0 -> 3856 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cbls.modbin0 -> 3656 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cbmemc.modbin0 -> 2456 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cbtable.modbin0 -> 1144 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cbtime.modbin0 -> 2628 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cdboot.imgbin0 -> 2048 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/chain.modbin0 -> 3572 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cmdline_cat_test.modbin0 -> 3088 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cmosdump.modbin0 -> 1284 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cmostest.modbin0 -> 1900 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cmp.modbin0 -> 2056 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/command.lst199
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/config.h64
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/configfile.modbin0 -> 2352 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cpio.modbin0 -> 2756 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cpio_be.modbin0 -> 2848 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cpuid.modbin0 -> 1792 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/crc64.modbin0 -> 1688 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/crypto.lst45
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/crypto.modbin0 -> 4960 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cryptodisk.modbin0 -> 10012 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/cs5536.modbin0 -> 3948 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/date.modbin0 -> 2244 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/datehook.modbin0 -> 1860 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/datetime.modbin0 -> 1336 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/disk.modbin0 -> 2480 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/diskboot.imgbin0 -> 512 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/diskfilter.modbin0 -> 9920 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/div_test.modbin0 -> 3900 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/dm_nv.modbin0 -> 1900 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/drivemap.modbin0 -> 5424 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/echo.modbin0 -> 2032 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu.modbin0 -> 24000 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu32.obin0 -> 7624 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu64.obin0 -> 11448 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ehci.modbin0 -> 15832 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/elf.modbin0 -> 5172 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/eval.modbin0 -> 1516 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/exfat.modbin0 -> 5548 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/exfctest.modbin0 -> 1536 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ext2.modbin0 -> 5616 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/extcmd.modbin0 -> 4616 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/fat.modbin0 -> 5700 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/file.modbin0 -> 16032 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/font.modbin0 -> 12560 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/freedos.modbin0 -> 2724 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/fs.lst36
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/fshelp.modbin0 -> 2624 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/functional_test.modbin0 -> 89824 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/g2hdr.binbin0 -> 512 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/g2hdr.imgbin0 -> 512 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/g2ldr.imgbin0 -> 10240 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/g2ldr.mbrbin0 -> 8192 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_arcfour.modbin0 -> 1720 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_blowfish.modbin0 -> 8156 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_camellia.modbin0 -> 33992 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_cast5.modbin0 -> 16672 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_crc.modbin0 -> 2984 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_des.modbin0 -> 19432 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_dsa.modbin0 -> 2356 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_idea.modbin0 -> 3016 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_md4.modbin0 -> 3200 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_md5.modbin0 -> 3796 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rfc2268.modbin0 -> 2532 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rijndael.modbin0 -> 19016 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rmd160.modbin0 -> 8136 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rsa.modbin0 -> 2148 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_seed.modbin0 -> 15424 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_serpent.modbin0 -> 16256 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha1.modbin0 -> 7576 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha256.modbin0 -> 4352 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha512.modbin0 -> 9348 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_tiger.modbin0 -> 12672 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_twofish.modbin0 -> 37556 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_whirlpool.modbin0 -> 24928 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gdb.modbin0 -> 25300 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/geli.modbin0 -> 5832 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gettext.modbin0 -> 4980 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxmenu.modbin0 -> 39144 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm.modbin0 -> 10036 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm_background.modbin0 -> 2936 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm_menu.modbin0 -> 5032 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gptsync.modbin0 -> 3884 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/grldr.imgbin0 -> 10240 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/grub/i386-pc/grub-bios-setupbin0 -> 769256 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/grub/i386-pc/grub-ntldr-imgbin0 -> 31920 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/gzio.modbin0 -> 8336 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/halt.modbin0 -> 4388 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/hashsum.modbin0 -> 5284 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/hdparm.modbin0 -> 7292 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/hello.modbin0 -> 1276 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/help.modbin0 -> 2636 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/hexdump.modbin0 -> 3192 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/hfs.modbin0 -> 7252 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/hfsplus.modbin0 -> 7640 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/hfspluscomp.modbin0 -> 3068 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/http.modbin0 -> 5620 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/hwmatch.modbin0 -> 47276 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/iorw.modbin0 -> 2888 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/iso9660.modbin0 -> 8612 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/jfs.modbin0 -> 6156 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/jpeg.modbin0 -> 6304 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/kernel.imgbin0 -> 28052 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/keylayouts.modbin0 -> 5060 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/keystatus.modbin0 -> 2020 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ldm.modbin0 -> 6608 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/legacy_password_test.modbin0 -> 14536 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/legacycfg.modbin0 -> 29736 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/linux.modbin0 -> 13184 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/linux16.modbin0 -> 7984 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/lnxboot.imgbin0 -> 1024 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/loadenv.modbin0 -> 5932 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/loopback.modbin0 -> 3012 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ls.modbin0 -> 4112 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/lsacpi.modbin0 -> 4852 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/lsapm.modbin0 -> 2352 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/lsmmap.modbin0 -> 1860 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/lspci.modbin0 -> 4892 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/luks.modbin0 -> 6688 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/lvm.modbin0 -> 6776 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/lzma_decompress.imgbin0 -> 2880 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/lzopio.modbin0 -> 8820 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/macbless.modbin0 -> 3376 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/macho.modbin0 -> 7604 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/mda_text.modbin0 -> 2096 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid09.modbin0 -> 2020 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid09_be.modbin0 -> 2088 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid1x.modbin0 -> 2036 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/memdisk.modbin0 -> 2060 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/memrw.modbin0 -> 2908 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/minicmd.modbin0 -> 3484 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/minix.modbin0 -> 3572 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/minix2.modbin0 -> 3644 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/minix2_be.modbin0 -> 3808 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/minix3.modbin0 -> 3604 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/minix3_be.modbin0 -> 3760 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/minix_be.modbin0 -> 3696 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/mmap.modbin0 -> 8572 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/moddep.lst259
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/grub/i386-pc/modinfo.sh36
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/morse.modbin0 -> 2436 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/mpi.modbin0 -> 28120 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/msdospart.modbin0 -> 2516 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/multiboot.modbin0 -> 13124 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/multiboot2.modbin0 -> 13624 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/nativedisk.modbin0 -> 4116 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/net.modbin0 -> 45932 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/newc.modbin0 -> 3016 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/nilfs2.modbin0 -> 6748 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/normal.modbin0 -> 115756 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ntfs.modbin0 -> 9856 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ntfscomp.modbin0 -> 4464 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ntldr.modbin0 -> 2616 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/odc.modbin0 -> 2832 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/offsetio.modbin0 -> 1580 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ohci.modbin0 -> 10484 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_acorn.modbin0 -> 1756 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_amiga.modbin0 -> 1960 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_apple.modbin0 -> 2220 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_bsd.modbin0 -> 2852 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_dfly.modbin0 -> 1840 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_dvh.modbin0 -> 1564 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_gpt.modbin0 -> 2460 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_msdos.modbin0 -> 2396 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_plan.modbin0 -> 1856 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_sun.modbin0 -> 1608 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/part_sunpc.modbin0 -> 1684 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/partmap.lst11
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/parttool.lst1
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/parttool.modbin0 -> 4656 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/password.modbin0 -> 1964 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/password_pbkdf2.modbin0 -> 2880 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/pata.modbin0 -> 4824 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/pbkdf2.modbin0 -> 1528 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/pbkdf2_test.modbin0 -> 2232 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/pci.modbin0 -> 1460 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/pcidump.modbin0 -> 2524 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/plan9.modbin0 -> 6344 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/play.modbin0 -> 2476 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/png.modbin0 -> 7464 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/priority_queue.modbin0 -> 1636 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/probe.modbin0 -> 2704 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/procfs.modbin0 -> 2184 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/progress.modbin0 -> 2132 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/pxe.modbin0 -> 3880 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/pxeboot.imgbin0 -> 1024 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/pxechain.modbin0 -> 2728 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/raid5rec.modbin0 -> 1468 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/raid6rec.modbin0 -> 2240 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/read.modbin0 -> 1512 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/reboot.modbin0 -> 1788 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/regexp.modbin0 -> 51128 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/reiserfs.modbin0 -> 8952 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/relocator.modbin0 -> 14944 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/romfs.modbin0 -> 4280 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/scsi.modbin0 -> 4780 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/search.modbin0 -> 3688 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/search_fs_file.modbin0 -> 3288 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/search_fs_uuid.modbin0 -> 3240 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/search_label.modbin0 -> 3184 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/sendkey.modbin0 -> 7172 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/serial.modbin0 -> 7740 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/setjmp.modbin0 -> 708 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/setjmp_test.modbin0 -> 1772 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/setpci.modbin0 -> 5388 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/sfs.modbin0 -> 5212 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/signature_test.modbin0 -> 6480 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/sleep.modbin0 -> 2336 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/sleep_test.modbin0 -> 2388 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/spkmodem.modbin0 -> 2140 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/squash4.modbin0 -> 6924 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/syslinuxcfg.modbin0 -> 17348 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/tar.modbin0 -> 3432 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/terminal.lst11
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/terminal.modbin0 -> 4408 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/terminfo.modbin0 -> 11736 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/test.modbin0 -> 5216 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/test_blockarg.modbin0 -> 1412 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/testload.modbin0 -> 2804 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/testspeed.modbin0 -> 2388 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/tftp.modbin0 -> 5388 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/tga.modbin0 -> 4500 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/time.modbin0 -> 1576 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/tr.modbin0 -> 2460 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/trig.modbin0 -> 1756 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/true.modbin0 -> 1272 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/truecrypt.modbin0 -> 3612 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/udf.modbin0 -> 7848 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs1.modbin0 -> 5512 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs1_be.modbin0 -> 5880 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs2.modbin0 -> 5584 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/uhci.modbin0 -> 6740 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/usb.modbin0 -> 10596 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/usb_keyboard.modbin0 -> 3896 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/usbms.modbin0 -> 7100 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_common.modbin0 -> 2128 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_ftdi.modbin0 -> 2420 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_pl2303.modbin0 -> 2760 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_usbdebug.modbin0 -> 1604 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/usbtest.modbin0 -> 3664 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/vbe.modbin0 -> 9972 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/verify.modbin0 -> 11684 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/vga.modbin0 -> 5108 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/vga_text.modbin0 -> 2204 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/video.lst4
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/video.modbin0 -> 6184 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/video_bochs.modbin0 -> 5772 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/video_cirrus.modbin0 -> 6040 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/video_colors.modbin0 -> 5736 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/video_fb.modbin0 -> 21188 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/videoinfo.modbin0 -> 4048 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/videotest.modbin0 -> 4328 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/videotest_checksum.modbin0 -> 2452 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/xfs.modbin0 -> 6276 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu.modbin0 -> 27112 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu_uuid.modbin0 -> 2204 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu_uuid_test.modbin0 -> 2084 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/xzio.modbin0 -> 15932 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/zfs.modbin0 -> 39688 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/zfscrypt.modbin0 -> 5528 bytes
-rw-r--r--builder/hd-boot/grub/usr/lib/grub/i386-pc/zfsinfo.modbin0 -> 6672 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/linux-boot-probes/50mounted-tests82
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/40grub107
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/40grub2110
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/50lilo126
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/90fallback53
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-prober/newnsbin0 -> 6184 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/50mounted-tests93
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/init/10filesystems39
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/05efi71
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/10freedos23
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/10qnx21
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/20macosx30
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/20microsoft115
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/30utility33
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/40lsb48
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/70hurd16
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/80minix28
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/83haiku35
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/90linux-distro138
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/90solaris19
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/efi/10elilo24
-rwxr-xr-xbuilder/hd-boot/grub/usr/lib/os-probes/mounted/efi/20microsoft28
l---------builder/hd-boot/grub/usr/sbin/grub-bios-setup1
-rwxr-xr-xbuilder/hd-boot/grub/usr/sbin/grub-installbin0 -> 966352 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/sbin/grub-macblessbin0 -> 757000 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/sbin/grub-mkconfig306
-rwxr-xr-xbuilder/hd-boot/grub/usr/sbin/grub-mkdevicemapbin0 -> 193360 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/sbin/grub-probebin0 -> 767176 bytes
-rwxr-xr-xbuilder/hd-boot/grub/usr/sbin/grub-reboot144
-rwxr-xr-xbuilder/hd-boot/grub/usr/sbin/grub-set-default137
-rw-r--r--builder/hd-boot/grub/usr/share/grub/ascii.h132
-rw-r--r--builder/hd-boot/grub/usr/share/grub/ascii.pf2bin0 -> 5000 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/grub/default/grub.md5sum3
-rw-r--r--builder/hd-boot/grub/usr/share/grub/euro.pf2bin0 -> 52151 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/grub/grub-mkconfig_lib395
-rw-r--r--builder/hd-boot/grub/usr/share/grub/unicode.pf2bin0 -> 2400500 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/grub/widthspec.h516
-rw-r--r--builder/hd-boot/grub/usr/share/locale/de_CH/LC_MESSAGES/grub.mobin0 -> 105444 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/en_US/LC_MESSAGES/mit-krb5.mobin0 -> 410 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/Linux-PAM.mobin0 -> 11385 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/adduser.mobin0 -> 19633 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/apt-utils.mobin0 -> 9554 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/apt.mobin0 -> 23698 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/bash.mobin0 -> 9580 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/console-data.mobin0 -> 3316 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/coreutils.mobin0 -> 169366 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/cpio.mobin0 -> 3693 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/debconf.mobin0 -> 10588 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/debian-tasks.mobin0 -> 431 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dialog.mobin0 -> 1282 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/diffutils.mobin0 -> 6754 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dnsmasq.mobin0 -> 454 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dpkg.mobin0 -> 59936 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/findutils.mobin0 -> 5487 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gdk-pixbuf.mobin0 -> 22923 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gettext-runtime.mobin0 -> 9603 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/glib20.mobin0 -> 100078 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gnupg.mobin0 -> 37351 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gprof.mobin0 -> 9984 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/grep.mobin0 -> 17282 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/grub.mobin0 -> 66071 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/install-keymap.mobin0 -> 2765 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libapt-inst1.5.mobin0 -> 3854 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libapt-pkg4.12.mobin0 -> 15763 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libc.mobin0 -> 82731 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/make.mobin0 -> 25786 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/man-db-gnulib.mobin0 -> 5094 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/man-db.mobin0 -> 7484 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/nano.mobin0 -> 42621 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/net-tools.mobin0 -> 41238 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/newt.mobin0 -> 536 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/opcodes.mobin0 -> 8467 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/sed.mobin0 -> 10316 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/shadow.mobin0 -> 59505 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/shared-mime-info.mobin0 -> 40414 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/sharutils.mobin0 -> 54087 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/tar.mobin0 -> 44748 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/tasksel.mobin0 -> 1251 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/wget.mobin0 -> 38635 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/xdg-user-dirs.mobin0 -> 1543 bytes
-rw-r--r--builder/hd-boot/grub/usr/share/os-prober/common.sh285
-rwxr-xr-xbuilder/hd-boot/hooks/gen-netfiles.sh43
-rwxr-xr-xbuilder/hd-boot/hooks/get_root_part.sh68
-rw-r--r--builder/hd-boot/hooks/ifup_lo.sh5
-rwxr-xr-xbuilder/hd-boot/hooks/mount-root-device.sh9
-rwxr-xr-xbuilder/hd-boot/hooks/partitioner.sh359
-rwxr-xr-xbuilder/hd-boot/hooks/prepare-kernel-command-line-parameter.sh28
-rwxr-xr-xbuilder/hd-boot/hooks/prepare-root-part.sh201
-rwxr-xr-xbuilder/hd-boot/module-setup.sh63
398 files changed, 6795 insertions, 1 deletions
diff --git a/builder/build-initramfs.sh b/builder/build-initramfs.sh
index e69f88be..b7ed0e9e 100755
--- a/builder/build-initramfs.sh
+++ b/builder/build-initramfs.sh
@@ -460,7 +460,7 @@ _loglevel=''
if [ "$verbose" == 'yes' ]; then
_loglevel='--verbose'
fi
-_modules='dnbd3-rootfs'
+_modules='dnbd3-rootfs hd-boot'
if [ "$debug" == 'yes' ]; then
_loglevel="$_loglevel --stdlog 4"
_modules="$_modules i18n terminfo"
diff --git a/builder/hd-boot/.dialog_warnrc b/builder/hd-boot/.dialog_warnrc
new file mode 100644
index 00000000..08738b0f
--- /dev/null
+++ b/builder/hd-boot/.dialog_warnrc
@@ -0,0 +1,144 @@
+#
+# Run-time configuration file for dialog
+#
+# Automatically generated by "dialog --create-rc <file>"
+#
+#
+# Types of values:
+#
+# Number - <number>
+# String - "string"
+# Boolean - <ON|OFF>
+# Attribute - (foreground,background,highlight?)
+
+# Set aspect-ration.
+aspect = 0
+
+# Set separator (for multiple widgets output).
+separate_widget = ""
+
+# Set tab-length (for textbox tab-conversion).
+tab_len = 0
+
+# Make tab-traversal for checklist, etc., include the list.
+visit_items = OFF
+
+# Shadow dialog boxes? This also turns on color.
+use_shadow = ON
+
+# Turn color support ON or OFF
+use_colors = ON
+
+# Screen color
+screen_color = (CYAN,RED,ON)
+
+# Shadow color
+shadow_color = (BLACK,BLACK,ON)
+
+# Dialog box color
+dialog_color = (BLACK,WHITE,ON)
+
+# Dialog box title color
+title_color = (RED,WHITE,ON)
+
+# Dialog box border color
+border_color = (WHITE,WHITE,ON)
+
+# Active button color
+button_active_color = (WHITE,BLUE,ON)
+
+# Inactive button color
+button_inactive_color = dialog_color
+
+# Active button key color
+button_key_active_color = button_active_color
+
+# Inactive button key color
+button_key_inactive_color = (RED,WHITE,OFF)
+
+# Active button label color
+button_label_active_color = (YELLOW,BLUE,ON)
+
+# Inactive button label color
+button_label_inactive_color = (BLACK,WHITE,ON)
+
+# Input box color
+inputbox_color = dialog_color
+
+# Input box border color
+inputbox_border_color = dialog_color
+
+# Search box color
+searchbox_color = dialog_color
+
+# Search box title color
+searchbox_title_color = title_color
+
+# Search box border color
+searchbox_border_color = border_color
+
+# File position indicator color
+position_indicator_color = title_color
+
+# Menu box color
+menubox_color = dialog_color
+
+# Menu box border color
+menubox_border_color = border_color
+
+# Item color
+item_color = dialog_color
+
+# Selected item color
+item_selected_color = button_active_color
+
+# Tag color
+tag_color = title_color
+
+# Selected tag color
+tag_selected_color = button_label_active_color
+
+# Tag key color
+tag_key_color = button_key_inactive_color
+
+# Selected tag key color
+tag_key_selected_color = (RED,BLUE,ON)
+
+# Check box color
+check_color = dialog_color
+
+# Selected check box color
+check_selected_color = button_active_color
+
+# Up arrow color
+uarrow_color = (GREEN,WHITE,ON)
+
+# Down arrow color
+darrow_color = uarrow_color
+
+# Item help-text color
+itemhelp_color = (WHITE,BLACK,OFF)
+
+# Active form text color
+form_active_text_color = button_active_color
+
+# Form text color
+form_text_color = (WHITE,CYAN,ON)
+
+# Readonly form item color
+form_item_readonly_color = (CYAN,WHITE,ON)
+
+# Dialog box gauge color
+gauge_color = title_color
+
+# Dialog box border2 color
+border2_color = dialog_color
+
+# Input box border2 color
+inputbox_border2_color = dialog_color
+
+# Search box border2 color
+searchbox_border2_color = dialog_color
+
+# Menu box border2 color
+menubox_border2_color = dialog_color
diff --git a/builder/hd-boot/common-lib.sh b/builder/hd-boot/common-lib.sh
new file mode 100644
index 00000000..0ab2229c
--- /dev/null
+++ b/builder/hd-boot/common-lib.sh
@@ -0,0 +1,66 @@
+PREFIX_DIALRC=/usr/lib/rebash
+DNBD3_CONFIG_DIR=/etc/dnbd3
+CONFIG_FILE_NAME="config"
+
+perror () {
+ if [[ "$1" == .dialog_[a-zA-Z]*$rc ]]; then
+ export DIALOGRC="${PREFIX_DIALRC}/${1}"
+ shift
+ fi
+
+ msg=$(echo "$@")
+ dialog --title "ERROR" --stdout --msgbox "$msg" 15 60
+ ret=$?
+ export DIALOGRC=
+
+ return $ret
+}
+
+pwarning () {
+ if [[ "$1" == .dialog_[a-zA-Z]*$rc ]]; then
+ export DIALOGRC="${PREFIX_DIALRC}/${1}"
+ shift
+ fi
+
+ msg=$(echo "$@")
+ dialog --title "WARNING" --stdout --msgbox "$msg" 15 60
+ ret=$?
+ export DIALOGRC=
+
+ return $ret
+}
+
+pquestion () {
+ if [[ "$1" == .dialog_[a-zA-Z]*$rc ]]; then
+ export DIALOGRC="${PREFIX_DIALRC}/${1}"
+ shift
+ fi
+ title="$1"
+ shift
+
+ msg=$(echo "$@")
+ dialog --title "$title" --stdout --defaultno --yesno "$msg" 15 60
+ ret=$?
+ export DIALOGRC=
+
+ return $ret
+}
+
+pdebug ()
+{
+ echo "$@" 1>&2
+}
+
+get_root_dir()
+{
+ local base_path
+
+ base_path=$(cat "${DNBD3_CONFIG_DIR}/server.conf" | awk -F'=' '/basePath/ {print $2}')
+ [ "${base_path:0:1}" = "/" ] && base_path="${base_path:1}"
+
+ echo "/${base_path%%/*}"
+}
+
+get_cache_dir()
+{ echo "$(cat ${DNBD3_CONFIG_DIR}/server.conf | awk -F'=' '/basePath/ {print $2}')"; }
+
diff --git a/builder/hd-boot/dnbd3-conf/alt-servers b/builder/hd-boot/dnbd3-conf/alt-servers
new file mode 100644
index 00000000..59f35022
--- /dev/null
+++ b/builder/hd-boot/dnbd3-conf/alt-servers
@@ -0,0 +1 @@
+10.66.0.1
diff --git a/builder/hd-boot/dnbd3-conf/server.conf b/builder/hd-boot/dnbd3-conf/server.conf
new file mode 100644
index 00000000..447ebe2c
--- /dev/null
+++ b/builder/hd-boot/dnbd3-conf/server.conf
@@ -0,0 +1,38 @@
+[dnbd3]
+; port to listen on (default: 5003)
+listenPort=5003
+; relative root directory for images, ending in .r[1-9][0-9]*
+basePath=/.dnbd3/cache
+; artificial connection delay for connecting servers
+serverPenalty=0
+; artificial connection delay for connecting clients
+clientPenalty=0
+; is this server a proxy? if true, requests for non-existing images will be relayed to known alt-servers
+isProxy=true
+; Allow cache to be used even if there is no up link.
+allowConnNoUplink=true
+; if proxy is true and an image is incomplete, should idle bandwidth be used to replicate missing blocks?
+backgroundReplication=false
+; if true (which is the default), images will automatically be removed from the list if they can't be accessed
+removeMissingImages=true
+; timeout in ms for send/recv on connections to uplink servers (used for replication)
+uplinkTimeout=10250
+; timeout in ms for send/recv on connections to clients (using an image on this server)
+clientTimeout=15000
+
+; Log related config
+[logging]
+; log file path and name
+; protip: use SIGUSR2 to reopen log file
+file=/run/log/dnbd3.log
+; which type of messages to log to file
+fileMask=ERROR WARNING MINOR INFO DEBUG1 DEBUG2
+; which to log to console (stdout)
+consoleMask=ERROR WARNING MINOR INFO
+; Valid types (warning: specifying invalid types will not yield an error!)
+; ERROR Fatal error, server will terminate
+; WARNING Major issue, something is broken but keep running
+; MINOR Minor issue, more of a hickup than serious problem
+; INFO Informational message
+; DEBUG1 Debug information, used for medium verbosity
+; DEBUG2 Used for debug messages that would show up a lot
diff --git a/builder/hd-boot/etc/cmdline.d/net.conf b/builder/hd-boot/etc/cmdline.d/net.conf
new file mode 100644
index 00000000..74cf3089
--- /dev/null
+++ b/builder/hd-boot/etc/cmdline.d/net.conf
@@ -0,0 +1 @@
+rd.neednet
diff --git a/builder/hd-boot/etc/conf.d/debug.conf b/builder/hd-boot/etc/conf.d/debug.conf
new file mode 100644
index 00000000..7bad341a
--- /dev/null
+++ b/builder/hd-boot/etc/conf.d/debug.conf
@@ -0,0 +1,2 @@
+#export RD_DEBUG=yes
+export DRACUT_QUIET=no
diff --git a/builder/hd-boot/grub/etc/default/grub b/builder/hd-boot/grub/etc/default/grub
new file mode 100644
index 00000000..629f571c
--- /dev/null
+++ b/builder/hd-boot/grub/etc/default/grub
@@ -0,0 +1,35 @@
+# If you change this file, run 'update-grub' afterwards to update
+# /boot/grub/grub.cfg.
+# For full documentation of the options in this file, see:
+# info -f grub -n 'Simple configuration'
+
+GRUB_DEFAULT=0
+GRUB_TIMEOUT=5
+GRUB_DISTRIBUTOR="OpenSLX"
+GRUB_CMDLINE_LINUX_DEFAULT=""
+GRUB_CMDLINE_LINUX="loglevel=3 slxsrv=10.66.0.1 slxbase=slx-local/ rd.shell rd.info log_buf_len=1M"
+
+#GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
+#GRUB_TERMINAL_INPUT="serial"
+#GRUB_TERMINAL_OUTPUT="serial"
+# Uncomment to enable BadRAM filtering, modify to suit your needs
+# This works with Linux (no patch required) and with any kernel that obtains
+# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
+#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
+
+# Uncomment to disable graphical terminal (grub-pc only)
+#GRUB_TERMINAL=console
+
+# The resolution used on graphical terminal
+# note that you can use only modes which your graphic card supports via VBE
+# you can see them in real GRUB with the command `vbeinfo'
+#GRUB_GFXMODE=640x480
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries
+#GRUB_DISABLE_RECOVERY="true"
+
+# Uncomment to get a beep at grub start
+#GRUB_INIT_TUNE="480 440 1"
diff --git a/builder/hd-boot/grub/etc/grub.d/00_header b/builder/hd-boot/grub/etc/grub.d/00_header
new file mode 100755
index 00000000..149e2cbc
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/00_header
@@ -0,0 +1,390 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+grub_lang=`echo $LANG | cut -d . -f 1`
+grubdir="`echo "/boot/grub" | sed 's,//*,/,g'`"
+quick_boot="0"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+# Do this as early as possible, since other commands might depend on it.
+# (e.g. the `loadfont' command might need lvm or raid modules)
+for i in ${GRUB_PRELOAD_MODULES} ; do
+ echo "insmod $i"
+done
+
+if [ "x${GRUB_DEFAULT}" = "x" ] ; then GRUB_DEFAULT=0 ; fi
+if [ "x${GRUB_DEFAULT}" = "xsaved" ] ; then GRUB_DEFAULT='${saved_entry}' ; fi
+if [ "x${GRUB_TIMEOUT}" = "x" ] ; then GRUB_TIMEOUT=5 ; fi
+if [ "x${GRUB_GFXMODE}" = "x" ] ; then GRUB_GFXMODE=auto ; fi
+
+if [ "x${GRUB_DEFAULT_BUTTON}" = "x" ] ; then GRUB_DEFAULT_BUTTON="$GRUB_DEFAULT" ; fi
+if [ "x${GRUB_DEFAULT_BUTTON}" = "xsaved" ] ; then GRUB_DEFAULT_BUTTON='${saved_entry}' ; fi
+if [ "x${GRUB_TIMEOUT_BUTTON}" = "x" ] ; then GRUB_TIMEOUT_BUTTON="$GRUB_TIMEOUT" ; fi
+
+cat << EOF
+if [ -s \$prefix/grubenv ]; then
+ set have_grubenv=true
+ load_env
+fi
+EOF
+if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
+ cat <<EOF
+if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
+ set default="${GRUB_DEFAULT_BUTTON}"
+elif [ "\${next_entry}" ] ; then
+ set default="\${next_entry}"
+ set next_entry=
+ save_env next_entry
+ set boot_once=true
+else
+ set default="${GRUB_DEFAULT}"
+fi
+EOF
+else
+ cat <<EOF
+if [ "\${next_entry}" ] ; then
+ set default="\${next_entry}"
+ set next_entry=
+ save_env next_entry
+ set boot_once=true
+else
+ set default="${GRUB_DEFAULT}"
+fi
+EOF
+fi
+cat <<EOF
+
+if [ x"\${feature_menuentry_id}" = xy ]; then
+ menuentry_id_option="--id"
+else
+ menuentry_id_option=""
+fi
+
+export menuentry_id_option
+
+if [ "\${prev_saved_entry}" ]; then
+ set saved_entry="\${prev_saved_entry}"
+ save_env saved_entry
+ set prev_saved_entry=
+ save_env prev_saved_entry
+ set boot_once=true
+fi
+
+function savedefault {
+ if [ -z "\${boot_once}" ]; then
+ saved_entry="\${chosen}"
+ save_env saved_entry
+ fi
+}
+EOF
+
+if [ "$quick_boot" = 1 ]; then
+ cat <<EOF
+function recordfail {
+ set recordfail=1
+EOF
+ FS="$(grub-probe --target=fs "${grubdir}")"
+ case "$FS" in
+ btrfs | cpiofs | newc | odc | romfs | squash4 | tarfs | zfs)
+ cat <<EOF
+ # GRUB lacks write support for $FS, so recordfail support is disabled.
+EOF
+ ;;
+ *)
+ cat <<EOF
+ if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
+EOF
+ esac
+ cat <<EOF
+}
+EOF
+fi
+
+cat <<EOF
+function load_video {
+EOF
+if [ -n "${GRUB_VIDEO_BACKEND}" ]; then
+ cat <<EOF
+ insmod ${GRUB_VIDEO_BACKEND}
+EOF
+else
+# If all_video.mod isn't available load all modules available
+# with versions prior to introduction of all_video.mod
+cat <<EOF
+ if [ x\$feature_all_video_module = xy ]; then
+ insmod all_video
+ else
+ insmod efi_gop
+ insmod efi_uga
+ insmod ieee1275_fb
+ insmod vbe
+ insmod vga
+ insmod video_bochs
+ insmod video_cirrus
+ fi
+EOF
+fi
+cat <<EOF
+}
+
+EOF
+
+serial=0;
+gfxterm=0;
+for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
+ if [ xserial = "x$x" ]; then
+ serial=1;
+ fi
+ if [ xgfxterm = "x$x" ]; then
+ gfxterm=1;
+ fi
+done
+
+if [ "x$serial" = x1 ]; then
+ if [ "x${GRUB_SERIAL_COMMAND}" = "x" ] ; then
+ grub_warn "$(gettext "Requested serial terminal but GRUB_SERIAL_COMMAND is unspecified. Default parameters will be used.")"
+ GRUB_SERIAL_COMMAND=serial
+ fi
+ echo "${GRUB_SERIAL_COMMAND}"
+fi
+
+if [ "x$gfxterm" = x1 ]; then
+ if [ -n "$GRUB_FONT" ] ; then
+ # Make the font accessible
+ prepare_grub_to_access_device `${grub_probe} --target=device "${GRUB_FONT}"`
+ cat << EOF
+if loadfont `make_system_path_relative_to_its_root "${GRUB_FONT}"` ; then
+EOF
+ else
+ for dir in "${pkgdatadir}" "`echo '/boot/grub' | sed "s,//*,/,g"`" /usr/share/grub ; do
+ for basename in unicode unifont ascii; do
+ path="${dir}/${basename}.pf2"
+ if is_path_readable_by_grub "${path}" > /dev/null ; then
+ font_path="${path}"
+ else
+ continue
+ fi
+ break 2
+ done
+ done
+ if [ -n "${font_path}" ] ; then
+ cat << EOF
+if [ x\$feature_default_font_path = xy ] ; then
+ font=unicode
+else
+EOF
+ # Make the font accessible
+ prepare_grub_to_access_device `${grub_probe} --target=device "${font_path}"`
+ cat << EOF
+ font="`make_system_path_relative_to_its_root "${font_path}"`"
+fi
+
+if loadfont \$font ; then
+EOF
+ else
+ cat << EOF
+if loadfont unicode ; then
+EOF
+ fi
+ fi
+
+ cat << EOF
+ set gfxmode=${GRUB_GFXMODE}
+ load_video
+ insmod gfxterm
+EOF
+
+# Gettext variables and module
+if [ "x${LANG}" != "xC" ] && [ "x${LANG}" != "x" ]; then
+ cat << EOF
+ set locale_dir=\$prefix/locale
+ set lang=${grub_lang}
+ insmod gettext
+EOF
+fi
+
+cat <<EOF
+fi
+EOF
+fi
+
+case x${GRUB_TERMINAL_INPUT} in
+ x)
+ # Just use the native terminal
+ ;;
+ x*)
+ cat << EOF
+terminal_input ${GRUB_TERMINAL_INPUT}
+EOF
+ ;;
+esac
+
+case x${GRUB_TERMINAL_OUTPUT} in
+ x)
+ # Just use the native terminal
+ ;;
+ x*)
+ cat << EOF
+terminal_output ${GRUB_TERMINAL_OUTPUT}
+EOF
+ ;;
+esac
+
+if [ "x$gfxterm" = x1 ]; then
+ if [ "x$GRUB_THEME" != x ] && [ -f "$GRUB_THEME" ] \
+ && is_path_readable_by_grub "$GRUB_THEME"; then
+ gettext_printf "Found theme: %s\n" "$GRUB_THEME" >&2
+
+ prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_THEME"`
+ cat << EOF
+insmod gfxmenu
+EOF
+ themedir="`dirname "$GRUB_THEME"`"
+ for x in "$themedir"/*.pf2 "$themedir"/f/*.pf2; do
+ if [ -f "$x" ]; then
+ cat << EOF
+loadfont (\$root)`make_system_path_relative_to_its_root $x`
+EOF
+ fi
+ done
+ if [ x"`echo "$themedir"/*.jpg`" != x"$themedir/*.jpg" ] || [ x"`echo "$themedir"/*.jpeg`" != x"$themedir/*.jpeg" ]; then
+ cat << EOF
+insmod jpeg
+EOF
+ fi
+ if [ x"`echo "$themedir"/*.png`" != x"$themedir/*.png" ]; then
+ cat << EOF
+insmod png
+EOF
+ fi
+ if [ x"`echo "$themedir"/*.tga`" != x"$themedir/*.tga" ]; then
+ cat << EOF
+insmod tga
+EOF
+ fi
+
+ cat << EOF
+set theme=(\$root)`make_system_path_relative_to_its_root $GRUB_THEME`
+export theme
+EOF
+ elif [ "x$GRUB_BACKGROUND" != x ] && [ -f "$GRUB_BACKGROUND" ] \
+ && is_path_readable_by_grub "$GRUB_BACKGROUND"; then
+ gettext_printf "Found background: %s\n" "$GRUB_BACKGROUND" >&2
+ case "$GRUB_BACKGROUND" in
+ *.png) reader=png ;;
+ *.tga) reader=tga ;;
+ *.jpg|*.jpeg) reader=jpeg ;;
+ *) gettext "Unsupported image format" >&2; echo >&2; exit 1 ;;
+ esac
+ prepare_grub_to_access_device `${grub_probe} --target=device "$GRUB_BACKGROUND"`
+ cat << EOF
+insmod $reader
+background_image -m stretch `make_system_path_relative_to_its_root "$GRUB_BACKGROUND"`
+EOF
+ fi
+fi
+
+make_timeout ()
+{
+ cat << EOF
+if [ "\${recordfail}" = 1 ] ; then
+ set timeout=${GRUB_RECORDFAIL_TIMEOUT:--1}
+else
+EOF
+ if [ "x${3}" != "x" ] ; then
+ timeout="${2}"
+ style="${3}"
+ elif [ "x${1}" != "x" ] && \
+ ([ "$quick_boot" = 1 ] || [ "x${1}" != "x0" ]) ; then
+ # Handle the deprecated GRUB_HIDDEN_TIMEOUT scheme.
+ timeout="${1}"
+ if [ "x${2}" != "x0" ] ; then
+ grub_warn "$(gettext "Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.")"
+ fi
+ if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
+ style="hidden"
+ verbose=
+ else
+ style="countdown"
+ verbose=" --verbose"
+ fi
+ else
+ # No hidden timeout, so treat as GRUB_TIMEOUT_STYLE=menu
+ timeout="${2}"
+ style="menu"
+ fi
+ cat << EOF
+ if [ x\$feature_timeout_style = xy ] ; then
+ set timeout_style=${style}
+ set timeout=${timeout}
+EOF
+ if [ "x${style}" = "xmenu" ] ; then
+ cat << EOF
+ # Fallback normal timeout code in case the timeout_style feature is
+ # unavailable.
+ else
+ set timeout=${timeout}
+EOF
+ else
+ cat << EOF
+ # Fallback hidden-timeout code in case the timeout_style feature is
+ # unavailable.
+ elif sleep${verbose} --interruptible ${timeout} ; then
+ set timeout=0
+EOF
+ fi
+ cat << EOF
+ fi
+fi
+EOF
+}
+
+if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
+ cat <<EOF
+if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
+EOF
+make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_STYLE_BUTTON}"
+echo else
+make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" "${GRUB_TIMEOUT_STYLE}"
+echo fi
+else
+make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}" "${GRUB_TIMEOUT_STYLE}"
+fi
+
+if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ] && [ "x$GRUB_BUTTON_CMOS_CLEAN" = "xyes" ]; then
+ cat <<EOF
+cmosclean $GRUB_BUTTON_CMOS_ADDRESS
+EOF
+fi
+
+# Play an initial tune
+if [ "x${GRUB_INIT_TUNE}" != "x" ] ; then
+ echo "play ${GRUB_INIT_TUNE}"
+fi
+
+if [ "x${GRUB_BADRAM}" != "x" ] ; then
+ echo "badram ${GRUB_BADRAM}"
+fi
diff --git a/builder/hd-boot/grub/etc/grub.d/05_debian_theme b/builder/hd-boot/grub/etc/grub.d/05_debian_theme
new file mode 100755
index 00000000..77564f21
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/05_debian_theme
@@ -0,0 +1,192 @@
+#!/bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2010 Alexander Kurtz <kurtz.alex@googlemail.com>
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+# Include the GRUB helper library for grub-mkconfig.
+. /usr/share/grub/grub-mkconfig_lib
+
+# We want to work in /boot/grub/ only.
+test -d /boot/grub; cd /boot/grub
+
+# Set the location of a possibly necessary cache file for the background image.
+# NOTE: This MUST BE A DOTFILE to avoid confusing it with user-defined images.
+BACKGROUND_CACHE=".background_cache"
+
+set_default_theme(){
+ case $GRUB_DISTRIBUTOR in
+ Tanglu|Ubuntu|Kubuntu)
+ # Set a monochromatic theme for Tanglu/Ubuntu.
+ echo "${1}set menu_color_normal=white/black"
+ echo "${1}set menu_color_highlight=black/light-gray"
+
+ if [ -e /lib/plymouth/themes/default.grub ]; then
+ sed "s/^/${1}/" /lib/plymouth/themes/default.grub
+ fi
+ ;;
+ *)
+ # Set the traditional Debian blue theme.
+ echo "${1}set menu_color_normal=cyan/blue"
+ echo "${1}set menu_color_highlight=white/blue"
+ ;;
+ esac
+}
+
+module_available(){
+ local module
+ for module in "${1}.mod" */"${1}.mod"; do
+ if [ -f "${module}" ]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+set_background_image(){
+ # Step #1: Search all available output modes ...
+ local output
+ for output in ${GRUB_TERMINAL_OUTPUT}; do
+ if [ "x$output" = "xgfxterm" ]; then
+ break
+ fi
+ done
+
+ # ... and check if we are able to display a background image at all.
+ if ! [ "x${output}" = "xgfxterm" ]; then
+ return 1
+ fi
+
+ # Step #2: Check if the specified background image exists.
+ if ! [ -f "${1}" ]; then
+ return 2
+ fi
+
+ # Step #3: Search the correct GRUB module for our background image.
+ local reader
+ case "${1}" in
+ *.jpg|*.JPG|*.jpeg|*.JPEG) reader="jpeg";;
+ *.png|*.PNG) reader="png";;
+ *.tga|*.TGA) reader="tga";;
+ *) return 3;; # Unknown image type.
+ esac
+
+ # Step #4: Check if the necessary GRUB module is available.
+ if ! module_available "${reader}"; then
+ return 4
+ fi
+
+ # Step #5: Check if GRUB can read the background image directly.
+ # If so, we can remove the cache file (if any). Otherwise the backgound
+ # image needs to be cached under /boot/grub/.
+ if is_path_readable_by_grub "${1}"; then
+ rm --force "${BACKGROUND_CACHE}.jpeg" \
+ "${BACKGROUND_CACHE}.png" "${BACKGROUND_CACHE}.tga"
+ elif cp "${1}" "${BACKGROUND_CACHE}.${reader}"; then
+ set -- "${BACKGROUND_CACHE}.${reader}" "${2}" "${3}"
+ else
+ return 5
+ fi
+
+ # Step #6: Prepare GRUB to read the background image.
+ if ! prepare_grub_to_access_device "`${grub_probe} --target=device "${1}"`"; then
+ return 6
+ fi
+
+ # Step #7: Everything went fine, print out a message to stderr ...
+ echo "Found background image: ${1}" >&2
+
+ # ... and write our configuration snippet to stdout. Use the colors
+ # desktop-base specified. If we're using a user-defined background, use
+ # the default colors since we've got no idea how the image looks like.
+ # If loading the background image fails, use the default theme.
+ echo "insmod ${reader}"
+ echo "if background_image `make_system_path_relative_to_its_root "${1}"`; then"
+ if [ -n "${2}" ]; then
+ echo " set color_normal=${2}"
+ fi
+ if [ -n "${3}" ]; then
+ echo " set color_highlight=${3}"
+ fi
+ if [ -z "${2}" ] && [ -z "${3}" ]; then
+ echo " true"
+ fi
+ echo "else"
+ set_default_theme " "
+ echo "fi"
+}
+
+# Earlier versions of grub-pc copied the default background image to /boot/grub
+# during postinst. Remove those obsolete images if they haven't been touched by
+# the user. They are still available under /usr/share/images/desktop-base/ if
+# desktop-base is installed.
+while read checksum background; do
+ if [ -f "${background}" ] && [ "x`sha1sum "${background}"`" = "x${checksum} ${background}" ]; then
+ echo "Removing old background image: ${background}" >&2
+ rm "${background}"
+ fi
+done <<EOF
+648ee65dd0c157a69b019a5372cbcfea4fc754a5 debian-blueish-wallpaper-640x480.png
+0431e97a6c661084c59676c4baeeb8c2f602edb8 debian-blueish-wallpaper-640x480.png
+968ecf6696c5638cfe80e8e70aba239526270864 debian-blueish-wallpaper-640x480.tga
+11143e8c92a073401de0b0fd42d0c052af4ccd9b moreblue-orbit-grub.png
+d00d5e505ab63f2d53fa880bfac447e2d3bb197c moreblue-orbit-grub.png
+f5b12c1009ec0a3b029185f6b66cd0d7e5611019 moreblue-orbit-grub.png
+EOF
+
+# Include the configuration of desktop-base if available.
+if [ -f "/usr/share/desktop-base/grub_background.sh" ]; then
+ . "/usr/share/desktop-base/grub_background.sh"
+fi
+
+# First check whether the user has specified a background image explicitly.
+# If so, try to use it. Don't try the other possibilities in that case
+# (#608263).
+if [ -n "${GRUB_BACKGROUND+x}" ]; then
+ set_background_image "${GRUB_BACKGROUND}" || set_default_theme
+ exit 0
+fi
+
+# Next search for pictures the user put into /boot/grub/ and use the first one.
+for background in *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG *.tga *.TGA; do
+ if set_background_image "${background}"; then
+ exit 0
+ fi
+done
+
+# Next try to use the background image and colors specified by desktop-base.
+if set_background_image "${WALLPAPER}" "${COLOR_NORMAL}" "${COLOR_HIGHLIGHT}"; then
+ exit 0
+fi
+
+# If we haven't found a background image yet, use the default from desktop-base.
+case $GRUB_DISTRIBUTOR in
+ Ubuntu|Kubuntu)
+ ;;
+ Tanglu)
+ if set_background_image "/usr/share/images/grub/grub.png"; then
+ exit 0
+ fi
+ ;;
+ *)
+ if set_background_image "/usr/share/images/desktop-base/desktop-grub.png"; then
+ exit 0
+ fi
+ ;;
+esac
+
+# Finally, if all of the above fails, use the default theme.
+set_default_theme
diff --git a/builder/hd-boot/grub/etc/grub.d/10_linux b/builder/hd-boot/grub/etc/grub.d/10_linux
new file mode 100755
index 00000000..0ba805ba
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/10_linux
@@ -0,0 +1,367 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+ubuntu_recovery="0"
+quiet_boot="0"
+quick_boot="0"
+gfxpayload_dynamic="0"
+vt_handoff="0"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class gnu-linux --class gnu --class os"
+SUPPORTED_INITS="sysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart"
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+ OS=GNU/Linux
+else
+ case ${GRUB_DISTRIBUTOR} in
+ Ubuntu|Kubuntu)
+ OS="${GRUB_DISTRIBUTOR}"
+ ;;
+ *)
+ OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+ ;;
+ esac
+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+fi
+
+# loop-AES arranges things so that /dev/loop/X can be our root device, but
+# the initrds that Linux uses don't like that.
+case ${GRUB_DEVICE} in
+ /dev/loop/*|/dev/loop[0-9])
+ GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
+ # We can't cope with devices loop-mounted from files here.
+ case ${GRUB_DEVICE} in
+ /dev/*) ;;
+ *) exit 0 ;;
+ esac
+ ;;
+esac
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+ || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+ || uses_abstraction "${GRUB_DEVICE}" lvm; then
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+ LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+case x"$GRUB_FS" in
+ xbtrfs)
+ rootsubvol="`make_system_path_relative_to_its_root /`"
+ rootsubvol="${rootsubvol#/}"
+ if [ "x${rootsubvol}" != x ]; then
+ GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
+ fi;;
+ xzfs)
+ rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
+ bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
+ LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs}"
+ ;;
+esac
+
+title_correction_code=
+
+if [ -x /lib/recovery-mode/recovery-menu ]; then
+ GRUB_CMDLINE_LINUX_RECOVERY=recovery
+else
+ GRUB_CMDLINE_LINUX_RECOVERY=single
+fi
+if [ "$ubuntu_recovery" = 1 ]; then
+ GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset"
+fi
+
+if [ "$vt_handoff" = 1 ]; then
+ for word in $GRUB_CMDLINE_LINUX_DEFAULT; do
+ if [ "$word" = splash ]; then
+ GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \$vt_handoff"
+ fi
+ done
+fi
+
+linux_entry ()
+{
+ os="$1"
+ version="$2"
+ type="$3"
+ args="$4"
+
+ if [ -z "$boot_device_id" ]; then
+ boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ fi
+ if [ x$type != xsimple ] ; then
+ case $type in
+ recovery)
+ title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" "${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")" ;;
+ init-*)
+ title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" "${version}" "${type#init-}")" ;;
+ *)
+ title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
+ esac
+ if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
+ replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
+ quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
+ title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
+ grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
+ fi
+ echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+ else
+ echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+ fi
+ if [ "$quick_boot" = 1 ]; then
+ echo " recordfail" | sed "s/^/$submenu_indentation/"
+ fi
+ if [ x$type != xrecovery ] ; then
+ save_default_entry | grub_add_tab
+ fi
+
+ # Use ELILO's generic "efifb" when it's known to be available.
+ # FIXME: We need an interface to select vesafb in case efifb can't be used.
+ if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
+ echo " load_video" | sed "s/^/$submenu_indentation/"
+ else
+ if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
+ echo " load_video" | sed "s/^/$submenu_indentation/"
+ fi
+ fi
+ if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
+ ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
+ echo " gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
+ fi
+
+ echo " insmod gzio" | sed "s/^/$submenu_indentation/"
+ echo " if [ x\$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi" | sed "s/^/$submenu_indentation/"
+
+ if [ x$dirname = x/ ]; then
+ if [ -z "${prepare_root_cache}" ]; then
+ prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
+ fi
+ printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/"
+ else
+ if [ -z "${prepare_boot_cache}" ]; then
+ prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
+ fi
+ printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
+ fi
+ if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
+ message="$(gettext_printf "Loading Linux %s ..." ${version})"
+ sed "s/^/$submenu_indentation/" << EOF
+ echo '$(echo "$message" | grub_quote)'
+EOF
+ fi
+ if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
+ sed "s/^/$submenu_indentation/" << EOF
+ linux ${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
+EOF
+ else
+ sed "s/^/$submenu_indentation/" << EOF
+ linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
+EOF
+ fi
+ if test -n "${initrd}" ; then
+ # TRANSLATORS: ramdisk isn't identifier. Should be translated.
+ if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
+ message="$(gettext_printf "Loading initial ramdisk ...")"
+ sed "s/^/$submenu_indentation/" << EOF
+ echo '$(echo "$message" | grub_quote)'
+EOF
+ fi
+ sed "s/^/$submenu_indentation/" << EOF
+ initrd ${rel_dirname}/${initrd}
+EOF
+ fi
+ sed "s/^/$submenu_indentation/" << EOF
+}
+EOF
+}
+
+machine=`uname -m`
+case "x$machine" in
+ xi?86 | xx86_64)
+ list=`for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
+ if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+ done` ;;
+ *)
+ list=`for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
+ if grub_file_is_not_garbage "$i" ; then echo -n "$i " ; fi
+ done` ;;
+esac
+
+case "$machine" in
+ i?86) GENKERNEL_ARCH="x86" ;;
+ mips|mips64) GENKERNEL_ARCH="mips" ;;
+ mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
+ arm*) GENKERNEL_ARCH="arm" ;;
+ *) GENKERNEL_ARCH="$machine" ;;
+esac
+
+prepare_boot_cache=
+prepare_root_cache=
+boot_device_id=
+title_correction_code=
+
+cat << 'EOF'
+function gfxmode {
+ set gfxpayload="${1}"
+EOF
+if [ "$vt_handoff" = 1 ]; then
+ cat << 'EOF'
+ if [ "${1}" = "keep" ]; then
+ set vt_handoff=vt.handoff=7
+ else
+ set vt_handoff=
+ fi
+EOF
+fi
+cat << EOF
+}
+EOF
+
+# Use ELILO's generic "efifb" when it's known to be available.
+# FIXME: We need an interface to select vesafb in case efifb can't be used.
+if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 0 ]; then
+ echo "set linux_gfx_mode=$GRUB_GFXPAYLOAD_LINUX"
+else
+ cat << EOF
+if [ "\${recordfail}" != 1 ]; then
+ if [ -e \${prefix}/gfxblacklist.txt ]; then
+ if hwmatch \${prefix}/gfxblacklist.txt 3; then
+ if [ \${match} = 0 ]; then
+ set linux_gfx_mode=keep
+ else
+ set linux_gfx_mode=text
+ fi
+ else
+ set linux_gfx_mode=text
+ fi
+ else
+ set linux_gfx_mode=keep
+ fi
+else
+ set linux_gfx_mode=text
+fi
+EOF
+fi
+cat << EOF
+export linux_gfx_mode
+EOF
+
+# Extra indentation to add to menu entries in a submenu. We're not in a submenu
+# yet, so it's empty. In a submenu it will be equal to '\t' (one tab).
+submenu_indentation=""
+
+is_top_level=true
+while [ "x$list" != "x" ] ; do
+ linux=`version_find_latest $list`
+ case $linux in
+ *.efi.signed)
+ # We handle these in linux_entry.
+ list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
+ continue
+ ;;
+ esac
+ gettext_printf "Found linux image: %s\n" "$linux" >&2
+ basename=`basename $linux`
+ dirname=`dirname $linux`
+ rel_dirname=`make_system_path_relative_to_its_root $dirname`
+ version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+ alt_version=`echo $version | sed -e "s,\.old$,,g"`
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+ initrd=
+ for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
+ "initrd-${version}" "initramfs-${version}.img" \
+ "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
+ "initrd-${alt_version}" "initramfs-${alt_version}.img" \
+ "initramfs-genkernel-${version}" \
+ "initramfs-genkernel-${alt_version}" \
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
+ if test -e "${dirname}/${i}" ; then
+ initrd="$i"
+ break
+ fi
+ done
+
+ config=
+ for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
+ if test -e "${i}" ; then
+ config="${i}"
+ break
+ fi
+ done
+
+ initramfs=
+ if test -n "${config}" ; then
+ initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
+ fi
+
+ if test -n "${initrd}" ; then
+ gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2
+ elif test -z "${initramfs}" ; then
+ # "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. Since there's
+ # no initrd or builtin initramfs, it can't work here.
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+
+ submenu_indentation="$grub_tab"
+
+ if [ -z "$boot_device_id" ]; then
+ boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ fi
+ # TRANSLATORS: %s is replaced with an OS name
+ echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
+ is_top_level=false
+ fi
+
+ linux_entry "${OS}" "${version}" advanced \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+ for supported_init in ${SUPPORTED_INITS}; do
+ init_path="${supported_init#*:}"
+ if [ -x "${init_path}" ] && [ "$(readlink -f /sbin/init)" != "${init_path}" ]; then
+ linux_entry "${OS}" "${version}" "init-${supported_init%%:*}" \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} init=${init_path}"
+ fi
+ done
+ if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+ linux_entry "${OS}" "${version}" recovery \
+ "${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
+ fi
+
+ list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
+done
+
+# If at least one kernel was found, then we need to
+# add a closing '}' for the submenu command.
+if [ x"$is_top_level" != xtrue ]; then
+ echo '}'
+fi
+
+echo "$title_correction_code"
diff --git a/builder/hd-boot/grub/etc/grub.d/20_linux_xen b/builder/hd-boot/grub/etc/grub.d/20_linux_xen
new file mode 100755
index 00000000..864f95ba
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/20_linux_xen
@@ -0,0 +1,288 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class gnu-linux --class gnu --class os --class xen"
+SUPPORTED_INITS="sysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart"
+
+if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+ OS=GNU/Linux
+else
+ OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+fi
+
+# loop-AES arranges things so that /dev/loop/X can be our root device, but
+# the initrds that Linux uses don't like that.
+case ${GRUB_DEVICE} in
+ /dev/loop/*|/dev/loop[0-9])
+ GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
+ # We can't cope with devices loop-mounted from files here.
+ case ${GRUB_DEVICE} in
+ /dev/*) ;;
+ *) exit 0 ;;
+ esac
+ ;;
+esac
+
+if [ "x${GRUB_DEVICE_UUID}" = "x" ] || [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
+ || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
+ || uses_abstraction "${GRUB_DEVICE}" lvm; then
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+ LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+# Allow overriding GRUB_CMDLINE_LINUX and GRUB_CMDLINE_LINUX_DEFAULT.
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE}" ]; then
+ GRUB_CMDLINE_LINUX="${GRUB_CMDLINE_LINUX_XEN_REPLACE}"
+fi
+if [ "${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}" ]; then
+ GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT}"
+fi
+
+case x"$GRUB_FS" in
+ xbtrfs)
+ rootsubvol="`make_system_path_relative_to_its_root /`"
+ rootsubvol="${rootsubvol#/}"
+ if [ "x${rootsubvol}" != x ]; then
+ GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
+ fi;;
+ xzfs)
+ rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
+ bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
+ LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs}"
+ ;;
+esac
+
+title_correction_code=
+
+linux_entry ()
+{
+ os="$1"
+ version="$2"
+ xen_version="$3"
+ type="$4"
+ args="$5"
+ xen_args="$6"
+ if [ -z "$boot_device_id" ]; then
+ boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ fi
+ if [ x$type != xsimple ] ; then
+ if [ x$type = xrecovery ] ; then
+ title="$(gettext_printf "%s, with Xen %s and Linux %s (%s)" "${os}" "${xen_version}" "${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")"
+ elif [ "${type#init-}" != "$type" ] ; then
+ title="$(gettext_printf "%s, with Xen %s and Linux %s (%s)" "${os}" "${xen_version}" "${version}" "${type#init-}")"
+ else
+ title="$(gettext_printf "%s, with Xen %s and Linux %s" "${os}" "${xen_version}" "${version}")"
+ fi
+ replacement_title="$(echo "Advanced options for ${OS}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
+ if [ x"Xen ${xen_version}>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
+ quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
+ title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
+ grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
+ fi
+ echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+ else
+ title="$(gettext_printf "%s, with Xen hypervisor" "${os}")"
+ echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'xen-gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
+ fi
+ if [ x$type != xrecovery ] ; then
+ save_default_entry | grub_add_tab | sed "s/^/$submenu_indentation/"
+ fi
+
+ if [ -z "${prepare_boot_cache}" ]; then
+ prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
+ fi
+ printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
+ xmessage="$(gettext_printf "Loading Xen %s ..." ${xen_version})"
+ lmessage="$(gettext_printf "Loading Linux %s ..." ${version})"
+ sed "s/^/$submenu_indentation/" << EOF
+ echo '$(echo "$xmessage" | grub_quote)'
+ if [ "\$grub_platform" = "pc" -o "\$grub_platform" = "" ]; then
+ xen_rm_opts=
+ else
+ xen_rm_opts="no-real-mode edd=off"
+ fi
+ multiboot ${rel_xen_dirname}/${xen_basename} placeholder ${xen_args} \${xen_rm_opts}
+ echo '$(echo "$lmessage" | grub_quote)'
+ module ${rel_dirname}/${basename} placeholder root=${linux_root_device_thisversion} ro ${args}
+EOF
+ if test -n "${initrd}" ; then
+ # TRANSLATORS: ramdisk isn't identifier. Should be translated.
+ message="$(gettext_printf "Loading initial ramdisk ...")"
+ sed "s/^/$submenu_indentation/" << EOF
+ echo '$(echo "$message" | grub_quote)'
+ module --nounzip ${rel_dirname}/${initrd}
+EOF
+ fi
+ sed "s/^/$submenu_indentation/" << EOF
+}
+EOF
+}
+
+linux_list=`for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
+ if grub_file_is_not_garbage "$i"; then
+ basename=$(basename $i)
+ version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
+ dirname=$(dirname $i)
+ config=
+ for j in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
+ if test -e "${j}" ; then
+ config="${j}"
+ break
+ fi
+ done
+ if (grep -qx "CONFIG_XEN_DOM0=y" "${config}" 2> /dev/null || grep -qx "CONFIG_XEN_PRIVILEGED_GUEST=y" "${config}" 2> /dev/null); then echo -n "$i " ; fi
+ fi
+ done`
+if [ "x${linux_list}" = "x" ] ; then
+ exit 0
+fi
+
+file_is_not_sym () {
+ case "$1" in
+ */xen-syms-*)
+ return 1;;
+ *)
+ return 0;;
+ esac
+}
+
+xen_list=`for i in /boot/xen*; do
+ if grub_file_is_not_garbage "$i" && file_is_not_sym "$i" ; then echo -n "$i " ; fi
+ done`
+prepare_boot_cache=
+boot_device_id=
+
+title_correction_code=
+
+machine=`uname -m`
+
+case "$machine" in
+ i?86) GENKERNEL_ARCH="x86" ;;
+ mips|mips64) GENKERNEL_ARCH="mips" ;;
+ mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
+ arm*) GENKERNEL_ARCH="arm" ;;
+ *) GENKERNEL_ARCH="$machine" ;;
+esac
+
+# Extra indentation to add to menu entries in a submenu. We're not in a submenu
+# yet, so it's empty. In a submenu it will be equal to '\t' (one tab).
+submenu_indentation=""
+
+is_top_level=true
+
+while [ "x${xen_list}" != "x" ] ; do
+ list="${linux_list}"
+ current_xen=`version_find_latest $xen_list`
+ xen_basename=`basename ${current_xen}`
+ xen_dirname=`dirname ${current_xen}`
+ rel_xen_dirname=`make_system_path_relative_to_its_root $xen_dirname`
+ xen_version=`echo $xen_basename | sed -e "s,.gz$,,g;s,^xen-,,g"`
+ if [ -z "$boot_device_id" ]; then
+ boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ fi
+ if [ "x$is_top_level" != xtrue ]; then
+ echo " submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
+ fi
+ while [ "x$list" != "x" ] ; do
+ linux=`version_find_latest $list`
+ gettext_printf "Found linux image: %s\n" "$linux" >&2
+ basename=`basename $linux`
+ dirname=`dirname $linux`
+ rel_dirname=`make_system_path_relative_to_its_root $dirname`
+ version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
+ alt_version=`echo $version | sed -e "s,\.old$,,g"`
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+ initrd=
+ for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
+ "initrd-${version}" "initramfs-${version}.img" \
+ "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
+ "initrd-${alt_version}" "initramfs-${alt_version}.img" \
+ "initramfs-genkernel-${version}" \
+ "initramfs-genkernel-${alt_version}" \
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" ; do
+ if test -e "${dirname}/${i}" ; then
+ initrd="$i"
+ break
+ fi
+ done
+ if test -n "${initrd}" ; then
+ gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2
+ else
+ # "UUID=" magic is parsed by initrds. Since there's no initrd, it can't work here.
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" simple \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
+
+ submenu_indentation="$grub_tab$grub_tab"
+
+ if [ -z "$boot_device_id" ]; then
+ boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+ fi
+ # TRANSLATORS: %s is replaced with an OS name
+ echo "submenu '$(gettext_printf "Advanced options for %s (with Xen hypervisor)" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
+ echo " submenu '$(gettext_printf "Xen hypervisor, version %s" "${xen_version}" | grub_quote)' \$menuentry_id_option 'xen-hypervisor-$xen_version-$boot_device_id' {"
+ is_top_level=false
+ fi
+
+ linux_entry "${OS}" "${version}" "${xen_version}" advanced \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
+ for supported_init in ${SUPPORTED_INITS}; do
+ init_path="${supported_init#*:}"
+ if [ -x "${init_path}" ] && [ "$(readlink -f /sbin/init)" != "${init_path}" ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" "init-${supported_init%%:*}" \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} init=${init_path}" "${GRUB_CMDLINE_XEN} ${GRUB_CMDLINE_XEN_DEFAULT}"
+
+ fi
+ done
+ if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+ linux_entry "${OS}" "${version}" "${xen_version}" recovery \
+ "single ${GRUB_CMDLINE_LINUX}" "${GRUB_CMDLINE_XEN}"
+ fi
+
+ list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
+ done
+ if [ x"$is_top_level" != xtrue ]; then
+ echo ' }'
+ fi
+ xen_list=`echo $xen_list | tr ' ' '\n' | fgrep -vx "$current_xen" | tr '\n' ' '`
+done
+
+# If at least one kernel was found, then we need to
+# add a closing '}' for the submenu command.
+if [ x"$is_top_level" != xtrue ]; then
+ echo '}'
+fi
+
+echo "$title_correction_code"
diff --git a/builder/hd-boot/grub/etc/grub.d/30_os-prober b/builder/hd-boot/grub/etc/grub.d/30_os-prober
new file mode 100755
index 00000000..bb698c01
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/30_os-prober
@@ -0,0 +1,371 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+quick_boot="0"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+found_other_os=
+
+adjust_timeout () {
+ if [ "$quick_boot" = 1 ] && [ "x${found_other_os}" != "x" ]; then
+ cat << EOF
+set timeout_style=menu
+if [ "\${timeout}" = 0 ]; then
+ set timeout=10
+fi
+EOF
+ fi
+}
+
+if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
+ exit 0
+fi
+
+if [ -z "`which os-prober 2> /dev/null`" -o -z "`which linux-boot-prober 2> /dev/null`" ] ; then
+ # missing os-prober and/or linux-boot-prober
+ exit 0
+fi
+
+OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"
+if [ -z "${OSPROBED}" ] ; then
+ # empty os-prober output, nothing doing
+ exit 0
+fi
+
+osx_entry() {
+ found_other_os=1
+ if [ x$2 = x32 ]; then
+ # TRANSLATORS: it refers to kernel architecture (32-bit)
+ bitstr="$(gettext "(32-bit)")"
+ else
+ # TRANSLATORS: it refers to kernel architecture (64-bit)
+ bitstr="$(gettext "(64-bit)")"
+ fi
+ # TRANSLATORS: it refers on the OS residing on device %s
+ onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+ cat << EOF
+menuentry '$(echo "${LONGNAME} $bitstr $onstr" | grub_quote)' --class osx --class darwin --class os \$menuentry_id_option 'osprober-xnu-$2-$(grub_get_device_id "${DEVICE}")' {
+EOF
+ save_default_entry | grub_add_tab
+ prepare_grub_to_access_device ${DEVICE} | grub_add_tab
+ cat << EOF
+ load_video
+ set do_resume=0
+ if [ /var/vm/sleepimage -nt10 / ]; then
+ if xnu_resume /var/vm/sleepimage; then
+ set do_resume=1
+ fi
+ fi
+ if [ \$do_resume = 0 ]; then
+ xnu_uuid ${OSXUUID} uuid
+ if [ -f /Extra/DSDT.aml ]; then
+ acpi -e /Extra/DSDT.aml
+ fi
+ if [ /kernelcache -nt /System/Library/Extensions ]; then
+ $1 /kernelcache boot-uuid=\${uuid} rd=*uuid
+ else
+ $1 /mach_kernel boot-uuid=\${uuid} rd=*uuid
+ if [ /System/Library/Extensions.mkext -nt /System/Library/Extensions ]; then
+ xnu_mkext /System/Library/Extensions.mkext
+ else
+ xnu_kextdir /System/Library/Extensions
+ fi
+ fi
+ if [ -f /Extra/Extensions.mkext ]; then
+ xnu_mkext /Extra/Extensions.mkext
+ fi
+ if [ -d /Extra/Extensions ]; then
+ xnu_kextdir /Extra/Extensions
+ fi
+ if [ -f /Extra/devprop.bin ]; then
+ xnu_devprop_load /Extra/devprop.bin
+ fi
+ if [ -f /Extra/splash.jpg ]; then
+ insmod jpeg
+ xnu_splash /Extra/splash.jpg
+ fi
+ if [ -f /Extra/splash.png ]; then
+ insmod png
+ xnu_splash /Extra/splash.png
+ fi
+ if [ -f /Extra/splash.tga ]; then
+ insmod tga
+ xnu_splash /Extra/splash.tga
+ fi
+ fi
+}
+EOF
+}
+
+used_osprober_linux_ids=
+
+wubi=
+
+for OS in ${OSPROBED} ; do
+ DEVICE="`echo ${OS} | cut -d ':' -f 1`"
+ LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
+ LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
+ BOOT="`echo ${OS} | cut -d ':' -f 4`"
+ if UUID="`${grub_probe} --target=fs_uuid --device ${DEVICE%@*}`"; then
+ EXPUUID="$UUID"
+
+ if [ x"${DEVICE#*@}" != x ] ; then
+ EXPUUID="${EXPUUID}@${DEVICE#*@}"
+ fi
+
+ if [ "x${GRUB_OS_PROBER_SKIP_LIST}" != "x" -a "x`echo ${GRUB_OS_PROBER_SKIP_LIST} | grep -i -e '\b'${EXPUUID}'\b'`" != "x" ] ; then
+ echo "Skipped ${LONGNAME} on ${DEVICE} by user request." >&2
+ continue
+ fi
+ fi
+
+ BTRFS="`echo ${OS} | cut -d ':' -f 5`"
+ if [ "x$BTRFS" = "xbtrfs" ]; then
+ BTRFSuuid="`echo ${OS} | cut -d ':' -f 6`"
+ BTRFSsubvol="`echo ${OS} | cut -d ':' -f 7`"
+ fi
+
+ if [ -z "${LONGNAME}" ] ; then
+ LONGNAME="${LABEL}"
+ fi
+
+ gettext_printf "Found %s on %s\n" "${LONGNAME}" "${DEVICE}" >&2
+
+ case ${BOOT} in
+ chain)
+
+ case ${LONGNAME} in
+ Windows*)
+ if [ -z "$wubi" ]; then
+ if [ -x /usr/share/lupin-support/grub-mkimage ] && \
+ /usr/share/lupin-support/grub-mkimage --test; then
+ wubi=yes
+ else
+ wubi=no
+ fi
+ fi
+ if [ "$wubi" = yes ]; then
+ echo "Skipping ${LONGNAME} on Wubi system" >&2
+ continue
+ fi
+ ;;
+ esac
+
+ found_other_os=1
+ onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+ cat << EOF
+menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class windows --class os \$menuentry_id_option 'osprober-chain-$(grub_get_device_id "${DEVICE}")' {
+EOF
+ save_default_entry | grub_add_tab
+ prepare_grub_to_access_device ${DEVICE} | grub_add_tab
+
+ if [ x"`${grub_probe} --device ${DEVICE} --target=partmap`" = xmsdos ]; then
+ cat << EOF
+ parttool \${root} hidden-
+EOF
+ fi
+
+ case ${LONGNAME} in
+ Windows\ Vista*|Windows\ 7*|Windows\ Server\ 2008*)
+ ;;
+ *)
+ cat << EOF
+ drivemap -s (hd0) \${root}
+EOF
+ ;;
+ esac
+
+ cat <<EOF
+ chainloader +1
+}
+EOF
+ ;;
+ efi)
+
+ found_other_os=1
+ EFIPATH=${DEVICE#*@}
+ DEVICE=${DEVICE%@*}
+ onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+ cat << EOF
+menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class windows --class os \$menuentry_id_option 'osprober-efi-$(grub_get_device_id "${DEVICE}")' {
+EOF
+ save_default_entry | sed -e "s/^/\t/"
+ prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
+
+ cat <<EOF
+ chainloader ${EFIPATH}
+}
+EOF
+ ;;
+ linux)
+ if [ "x$BTRFS" = "xbtrfs" ]; then
+ LINUXPROBED="`linux-boot-prober btrfs ${BTRFSuuid} ${BTRFSsubvol} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
+ else
+ LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
+ fi
+ prepare_boot_cache=
+ boot_device_id=
+ is_top_level=true
+ title_correction_code=
+ OS="${LONGNAME}"
+
+ for LINUX in ${LINUXPROBED} ; do
+ LROOT="`echo ${LINUX} | cut -d ':' -f 1`"
+ LBOOT="`echo ${LINUX} | cut -d ':' -f 2`"
+ LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`"
+ LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`"
+ LINITRD="`echo ${LINUX} | cut -d ':' -f 5`"
+ LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`"
+
+ if [ -z "${LLABEL}" ] ; then
+ LLABEL="${LONGNAME}"
+ fi
+
+ if [ "${LROOT}" != "${LBOOT}" ]; then
+ LKERNEL="${LKERNEL#/boot}"
+ LINITRD="${LINITRD#/boot}"
+ fi
+
+ if [ -z "${prepare_boot_cache}" ]; then
+ prepare_boot_cache="$(prepare_grub_to_access_device ${LBOOT} | grub_add_tab)"
+ [ "${prepare_boot_cache}" ] || continue
+ fi
+
+ found_other_os=1
+ onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+ recovery_params="$(echo "${LPARAMS}" | grep 'single\|recovery')" || true
+ counter=1
+ while echo "$used_osprober_linux_ids" | grep 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id' > /dev/null; do
+ counter=$((counter+1));
+ done
+ if [ -z "$boot_device_id" ]; then
+ boot_device_id="$(grub_get_device_id "${DEVICE}")"
+ fi
+ used_osprober_linux_ids="$used_osprober_linux_ids 'osprober-gnulinux-$LKERNEL-${recovery_params}-$counter-$boot_device_id'"
+
+ if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xy ]; then
+ cat << EOF
+menuentry '$(echo "$OS $onstr" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-simple-$boot_device_id' {
+EOF
+ save_default_entry | grub_add_tab
+ printf '%s\n' "${prepare_boot_cache}"
+ cat << EOF
+ linux ${LKERNEL} ${LPARAMS}
+EOF
+ if [ -n "${LINITRD}" ] ; then
+ cat << EOF
+ initrd ${LINITRD}
+EOF
+ fi
+ cat << EOF
+}
+EOF
+ echo "submenu '$(gettext_printf "Advanced options for %s" "${OS} $onstr" | grub_quote)' \$menuentry_id_option 'osprober-gnulinux-advanced-$boot_device_id' {"
+ is_top_level=false
+ fi
+ title="${LLABEL} $onstr"
+ cat << EOF
+ menuentry '$(echo "$title" | grub_quote)' --class gnu-linux --class gnu --class os \$menuentry_id_option 'osprober-gnulinux-$LKERNEL-${recovery_params}-$boot_device_id' {
+EOF
+ save_default_entry | sed -e "s/^/$grub_tab$grub_tab/"
+ printf '%s\n' "${prepare_boot_cache}" | grub_add_tab
+ cat << EOF
+ linux ${LKERNEL} ${LPARAMS}
+EOF
+ if [ -n "${LINITRD}" ] ; then
+ cat << EOF
+ initrd ${LINITRD}
+EOF
+ fi
+ cat << EOF
+ }
+EOF
+ if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
+ replacement_title="$(echo "Advanced options for ${OS} $onstr" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
+ quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
+ title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
+ grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
+ fi
+ done
+ if [ x"$is_top_level" != xtrue ]; then
+ echo '}'
+ fi
+ echo "$title_correction_code"
+ ;;
+ macosx)
+ if [ "${UUID}" ]; then
+ OSXUUID="${UUID}"
+ osx_entry xnu_kernel 32
+ osx_entry xnu_kernel64 64
+ fi
+ ;;
+ hurd)
+ found_other_os=1
+ onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+ cat << EOF
+menuentry '$(echo "${LONGNAME} $onstr" | grub_quote)' --class hurd --class gnu --class os \$menuentry_id_option 'osprober-gnuhurd-/boot/gnumach.gz-false-$(grub_get_device_id "${DEVICE}")' {
+EOF
+ save_default_entry | grub_add_tab
+ prepare_grub_to_access_device ${DEVICE} | grub_add_tab
+ grub_device="`${grub_probe} --device ${DEVICE} --target=drive`"
+ mach_device="`echo "${grub_device}" | sed -e 's/(\(hd.*\),msdos\(.*\))/\1s\2/'`"
+ grub_fs="`${grub_probe} --device ${DEVICE} --target=fs`"
+ case "${grub_fs}" in
+ *fs) hurd_fs="${grub_fs}" ;;
+ *) hurd_fs="${grub_fs}fs" ;;
+ esac
+ cat << EOF
+ multiboot /boot/gnumach.gz root=device:${mach_device}
+ module /hurd/${hurd_fs}.static ${hurd_fs} --readonly \\
+ --multiboot-command-line='\${kernel-command-line}' \\
+ --host-priv-port='\${host-port}' \\
+ --device-master-port='\${device-port}' \\
+ --exec-server-task='\${exec-task}' -T typed '\${root}' \\
+ '\$(task-create)' '\$(task-resume)'
+ module /lib/ld.so.1 exec /hurd/exec '\$(exec-task=task-create)'
+}
+EOF
+ ;;
+ minix)
+ cat << EOF
+menuentry "${LONGNAME} (on ${DEVICE}, Multiboot)" {
+EOF
+ save_default_entry | sed -e "s/^/\t/"
+ prepare_grub_to_access_device ${DEVICE} | sed -e "s/^/\t/"
+ cat << EOF
+ multiboot /boot/image_latest
+}
+EOF
+ ;;
+ *)
+ echo -n " "
+ # TRANSLATORS: %s is replaced by OS name.
+ gettext_printf "%s is not yet supported by grub-mkconfig.\n" "${LONGNAME}" >&2
+ ;;
+ esac
+done
+
+adjust_timeout
diff --git a/builder/hd-boot/grub/etc/grub.d/30_uefi-firmware b/builder/hd-boot/grub/etc/grub.d/30_uefi-firmware
new file mode 100755
index 00000000..1c5fcd4c
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/30_uefi-firmware
@@ -0,0 +1,46 @@
+#! /bin/sh
+set -e
+
+# grub-mkconfig helper script.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+efi_vars_dir=/sys/firmware/efi/vars
+EFI_GLOBAL_VARIABLE=8be4df61-93ca-11d2-aa0d-00e098032b8c
+OsIndications="$efi_vars_dir/OsIndicationsSupported-$EFI_GLOBAL_VARIABLE/data"
+
+if [ -e "$OsIndications" ] && \
+ [ "$(( $(printf %x \'"$(cat $OsIndications | cut -b1)") & 1 ))" = 1 ]; then
+ LABEL="System setup"
+
+ gettext_printf "Adding boot menu entry for EFI firmware configuration\n" >&2
+
+ onstr="$(gettext_printf "(on %s)" "${DEVICE}")"
+
+ cat << EOF
+menuentry '$LABEL' \$menuentry_id_option 'uefi-firmware' {
+ fwsetup
+}
+EOF
+fi
diff --git a/builder/hd-boot/grub/etc/grub.d/40_custom b/builder/hd-boot/grub/etc/grub.d/40_custom
new file mode 100755
index 00000000..48068de4
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/40_custom
@@ -0,0 +1,5 @@
+#!/bin/sh
+exec tail -n +3 $0
+# This file provides an easy way to add custom menu entries. Simply type the
+# menu entries you want to add after this comment. Be careful not to change
+# the 'exec tail' line above.
diff --git a/builder/hd-boot/grub/etc/grub.d/41_custom b/builder/hd-boot/grub/etc/grub.d/41_custom
new file mode 100755
index 00000000..fcc21a98
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/41_custom
@@ -0,0 +1,9 @@
+#!/bin/sh
+cat <<EOF
+if [ -f \${config_directory}/custom.cfg ]; then
+ source \${config_directory}/custom.cfg
+elif [ -z "\${config_directory}" -a -f \$prefix/custom.cfg ]; then
+ source \$prefix/custom.cfg;
+fi
+EOF
+
diff --git a/builder/hd-boot/grub/etc/grub.d/README b/builder/hd-boot/grub/etc/grub.d/README
new file mode 100644
index 00000000..3ea109d5
--- /dev/null
+++ b/builder/hd-boot/grub/etc/grub.d/README
@@ -0,0 +1,11 @@
+
+All executable files in this directory are processed in shell expansion order.
+
+ 00_*: Reserved for 00_header.
+ 10_*: Native boot entries.
+ 20_*: Third party apps (e.g. memtest86+).
+
+The number namespace in-between is configurable by system installer and/or
+administrator. For example, you can add an entry to boot another OS as
+01_otheros, 11_otheros, etc, depending on the position you want it to occupy in
+the menu; and then adjust the default setting via /etc/default/grub.
diff --git a/builder/hd-boot/grub/usr/bin/grub-editenv b/builder/hd-boot/grub/usr/bin/grub-editenv
new file mode 100755
index 00000000..33147186
--- /dev/null
+++ b/builder/hd-boot/grub/usr/bin/grub-editenv
Binary files differ
diff --git a/builder/hd-boot/grub/usr/bin/grub-mkrelpath b/builder/hd-boot/grub/usr/bin/grub-mkrelpath
new file mode 100755
index 00000000..354b4884
--- /dev/null
+++ b/builder/hd-boot/grub/usr/bin/grub-mkrelpath
Binary files differ
diff --git a/builder/hd-boot/grub/usr/bin/grub-ntldr-img b/builder/hd-boot/grub/usr/bin/grub-ntldr-img
new file mode 100755
index 00000000..cc3e2196
--- /dev/null
+++ b/builder/hd-boot/grub/usr/bin/grub-ntldr-img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/bin/grub-script-check b/builder/hd-boot/grub/usr/bin/grub-script-check
new file mode 100755
index 00000000..6502c7c1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/bin/grub-script-check
Binary files differ
diff --git a/builder/hd-boot/grub/usr/bin/linux-boot-prober b/builder/hd-boot/grub/usr/bin/linux-boot-prober
new file mode 100755
index 00000000..e32dc84b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/bin/linux-boot-prober
@@ -0,0 +1,61 @@
+#!/bin/sh
+. /usr/share/os-prober/common.sh
+
+set -e
+
+newns "$@"
+require_tmpdir
+
+grep "^/dev/" /proc/mounts | parse_proc_mounts >"$OS_PROBER_TMP/mounted-map" || true
+
+partition="$1"
+
+if [ -z "$partition" ]; then
+ echo "usage: linux-boot-prober partition" >&2
+ exit 1
+fi
+
+if ! mapped="$(mapdevfs "$partition")"; then
+ log "Device '$partition' does not exist; skipping"
+ continue
+fi
+
+if ! grep -q "^$mapped " "$OS_PROBER_TMP/mounted-map"; then
+ for test in /usr/lib/linux-boot-probes/*; do
+ debug "running $test"
+ if [ -x $test ] && [ -f $test ]; then
+ if $test "$partition"; then
+ debug "linux detected by $test"
+ break
+ fi
+ fi
+ done
+else
+ mpoint=$(grep "^$mapped " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 2)
+ mpoint="$(unescape_mount "$mpoint")"
+ if [ "$mpoint" != "/target/boot" ] && [ "$mpoint" != "/target" ] && [ "$mpoint" != "/" ]; then
+ type=$(grep "^$mapped " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 3)
+ if ! grep -q " $mpoint/boot " "$OS_PROBER_TMP/mounted-map"; then
+ linux_mount_boot "$partition" "$mpoint"
+ bootpart="${mountboot%% *}"
+ bootmounted="${mountboot#* }"
+ else
+ bootpart="$partition"
+ bootmounted=0
+ fi
+ for test in /usr/lib/linux-boot-probes/mounted/*; do
+ if [ -f $test ] && [ -x $test ]; then
+ debug "running $test on mounted $partition"
+ if $test "$partition" "$bootpart" "$mpoint" "$type"; then
+ debug "$test succeeded"
+ break
+ fi
+ fi
+ done
+ if [ "$bootmounted" = 1 ]; then
+ if ! umount "$mpoint/boot"; then
+ warn "failed to umount $mpoint/boot"
+ fi
+ fi
+ fi
+fi
diff --git a/builder/hd-boot/grub/usr/bin/os-prober b/builder/hd-boot/grub/usr/bin/os-prober
new file mode 100755
index 00000000..d67f0b3d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/bin/os-prober
@@ -0,0 +1,166 @@
+#!/bin/sh
+set -e
+
+. /usr/share/os-prober/common.sh
+
+newns "$@"
+require_tmpdir
+
+log_output () {
+ if type log-output >/dev/null 2>&1; then
+ log-output -t os-prober --pass-stdout $@
+ else
+ $@
+ fi
+}
+
+on_sataraid () {
+ type dmraid >/dev/null 2>&1 || return 1
+ local parent="${1%/*}"
+ local device="/dev/${parent##*/}"
+ if dmraid -r -c | grep -q "$device"; then
+ return 0
+ fi
+ return 1
+}
+
+partitions () {
+ # Exclude partitions that have whole_disk sysfs attribute set.
+ if [ -d /sys/block ]; then
+ # Exclude partitions on physical disks that are part of a
+ # Serial ATA RAID disk.
+ for part in /sys/block/*/*[0-9]; do
+ if [ -f "$part/start" ] && \
+ [ ! -f "$part/whole_disk" ] && ! on_sataraid $part; then
+ name="$(echo "${part##*/}" | sed 's,[!.],/,g')"
+ if [ -e "/dev/$name" ]; then
+ echo "/dev/$name"
+ fi
+ fi
+ done
+
+ # Add Serial ATA RAID devices
+ if type dmraid >/dev/null 2>&1 && \
+ dmraid -s -c >/dev/null 2>&1; then
+ for raidset in $(dmraid -sa -c); do
+ for part in /dev/mapper/"$raidset"*[0-9]; do
+ echo "$part"
+ done
+ done
+ fi
+ elif [ "$(uname -s)" = Linux ]; then
+ echo "Cannot find list of partitions! (Try mounting /sys.)" >&2
+ exit 1
+ else
+ # We don't know how to probe OSes on non-Linux kernels. For
+ # now, just don't get in the way.
+ exit 0
+ fi
+
+ # Also detect OSes on LVM volumes (assumes LVM is active)
+ if type lvs >/dev/null 2>&1; then
+ echo "$(LVM_SUPPRESS_FD_WARNINGS=1 log_output lvs --noheadings --separator : -o vg_name,lv_name |
+ sed "s|-|--|g;s|^[[:space:]]*\(.*\):\(.*\)$|/dev/mapper/\1-\2|")"
+ fi
+}
+
+parse_proc_swaps () {
+ while read line; do
+ set -f
+ set -- $line
+ set +f
+ echo "$(mapdevfs $1) swap"
+ done
+}
+
+parse_proc_mdstat () {
+ if type udevadm >/dev/null 2>&1; then
+ udevinfo () {
+ udevadm info "$@"
+ }
+ fi
+ while read line; do
+ for word in $line; do
+ dev="${word%%\[*}"
+ # TODO: factor this out to something in di-utils if
+ # it's needed elsewhere
+ if [ -d /sys/block ] && type udevinfo >/dev/null 2>&1; then
+ if ! udevinfo -q path -n "/dev/$dev" 2>/dev/null | \
+ grep -q '/.*/.*/'; then
+ continue
+ fi
+ elif ! echo "$dev" | grep -q "/part"; then
+ continue
+ fi
+ raidpart="/dev/$dev"
+ echo "$(mapdevfs "$raidpart")"
+ done
+ done
+}
+
+# Needed for idempotency
+rm -f /var/lib/os-prober/labels
+
+for prog in /usr/lib/os-probes/init/*; do
+ if [ -x "$prog" ] && [ -f "$prog" ]; then
+ "$prog" || true
+ fi
+done
+
+# We need to properly canonicalize partitions with mount points and partitions
+# used in RAID
+grep "^/dev/" /proc/mounts | parse_proc_mounts >"$OS_PROBER_TMP/mounted-map" || true
+: >"$OS_PROBER_TMP/swaps-map"
+if [ -f /proc/swaps ]; then
+ grep "^/dev/" /proc/swaps | parse_proc_swaps >"$OS_PROBER_TMP/swaps-map" || true
+fi
+: >"$OS_PROBER_TMP/raided-map"
+if [ -f /proc/mdstat ] ; then
+ grep "^md" /proc/mdstat | parse_proc_mdstat >"$OS_PROBER_TMP/raided-map" || true
+fi
+
+for partition in $(partitions); do
+ if ! mapped="$(mapdevfs "$partition")"; then
+ log "Device '$partition' does not exist; skipping"
+ continue
+ fi
+
+ # Skip partitions used in software RAID arrays
+ if grep -q "^$mapped" "$OS_PROBER_TMP/raided-map" ; then
+ debug "$partition: part of software raid array"
+ continue
+ fi
+
+ # Skip partitions used as active swap
+ if grep -q "^$mapped " "$OS_PROBER_TMP/swaps-map" ; then
+ debug "$partition: is active swap"
+ continue
+ fi
+
+ if ! grep -q "^$mapped " "$OS_PROBER_TMP/mounted-map" ; then
+ for test in /usr/lib/os-probes/*; do
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running $test on $partition"
+ if "$test" "$partition"; then
+ debug "os detected by $test"
+ break
+ fi
+ fi
+ done
+ else
+ mpoint=$(grep "^$mapped " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 2)
+ mpoint="$(unescape_mount "$mpoint")"
+ if [ "$mpoint" != "/target/boot" ] && [ "$mpoint" != "/target" ] && [ "$mpoint" != "/" ]; then
+ type=$(grep "^$mapped " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 3)
+ for test in /usr/lib/os-probes/mounted/*; do
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running $test on mounted $partition"
+ if "$test" "$partition" "$mpoint" "$type"; then
+ debug "os detected by $test"
+ break
+ fi
+ fi
+ done
+ fi
+ fi
+done
diff --git a/builder/hd-boot/grub/usr/lib/grub/grub-mkconfig_lib b/builder/hd-boot/grub/usr/lib/grub/grub-mkconfig_lib
new file mode 120000
index 00000000..4d0e3cec
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/grub-mkconfig_lib
@@ -0,0 +1 @@
+../../share/grub/grub-mkconfig_lib \ No newline at end of file
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/915resolution.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/915resolution.mod
new file mode 100644
index 00000000..27c2e8e2
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/915resolution.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/acpi.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/acpi.mod
new file mode 100644
index 00000000..f7090167
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/acpi.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/adler32.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/adler32.mod
new file mode 100644
index 00000000..7c048703
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/adler32.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/affs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/affs.mod
new file mode 100644
index 00000000..4af25a45
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/affs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/afs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/afs.mod
new file mode 100644
index 00000000..2e572352
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/afs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ahci.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ahci.mod
new file mode 100644
index 00000000..02fe704a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ahci.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/all_video.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/all_video.mod
new file mode 100644
index 00000000..29e79fa1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/all_video.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/aout.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/aout.mod
new file mode 100644
index 00000000..5e02060a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/aout.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/archelp.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/archelp.mod
new file mode 100644
index 00000000..a09cf0f9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/archelp.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/at_keyboard.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/at_keyboard.mod
new file mode 100644
index 00000000..7d90457b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/at_keyboard.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ata.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ata.mod
new file mode 100644
index 00000000..085378e9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ata.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/backtrace.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/backtrace.mod
new file mode 100644
index 00000000..5fb4cb90
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/backtrace.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/bfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bfs.mod
new file mode 100644
index 00000000..d6627fa2
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/biosdisk.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/biosdisk.mod
new file mode 100644
index 00000000..991b3fc8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/biosdisk.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/bitmap.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bitmap.mod
new file mode 100644
index 00000000..fd47567e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bitmap.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/bitmap_scale.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bitmap_scale.mod
new file mode 100644
index 00000000..5ce06f83
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bitmap_scale.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/blocklist.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/blocklist.mod
new file mode 100644
index 00000000..614d3abb
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/blocklist.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot.img
new file mode 100644
index 00000000..81a7a30a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot.mod
new file mode 100644
index 00000000..e9c3a1c7
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot_hybrid.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot_hybrid.img
new file mode 100644
index 00000000..d3c63409
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/boot_hybrid.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/bsd.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bsd.mod
new file mode 100644
index 00000000..7e8e42df
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bsd.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/btrfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/btrfs.mod
new file mode 100644
index 00000000..7a9505f9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/btrfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/bufio.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bufio.mod
new file mode 100644
index 00000000..99cb5c5c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/bufio.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cat.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cat.mod
new file mode 100644
index 00000000..ac0710d6
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cat.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbfs.mod
new file mode 100644
index 00000000..71ad779b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbls.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbls.mod
new file mode 100644
index 00000000..70564bc4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbls.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbmemc.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbmemc.mod
new file mode 100644
index 00000000..45c76c10
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbmemc.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbtable.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbtable.mod
new file mode 100644
index 00000000..95552ee1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbtable.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbtime.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbtime.mod
new file mode 100644
index 00000000..393779fc
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cbtime.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cdboot.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cdboot.img
new file mode 100644
index 00000000..5305be41
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cdboot.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/chain.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/chain.mod
new file mode 100644
index 00000000..27bd172c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/chain.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmdline_cat_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmdline_cat_test.mod
new file mode 100644
index 00000000..f190a3b1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmdline_cat_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmosdump.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmosdump.mod
new file mode 100644
index 00000000..184107ad
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmosdump.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmostest.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmostest.mod
new file mode 100644
index 00000000..db689ddf
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmostest.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmp.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmp.mod
new file mode 100644
index 00000000..3585896f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cmp.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/command.lst b/builder/hd-boot/grub/usr/lib/grub/i386-pc/command.lst
new file mode 100644
index 00000000..d3d74ed4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/command.lst
@@ -0,0 +1,199 @@
+*acpi: acpi
+*all_functional_test: functional_test
+*background_image: gfxterm_background
+*cat: cat
+*cpuid: cpuid
+*crc: hashsum
+*cryptomount: cryptodisk
+*drivemap: drivemap
+*echo: echo
+*extract_syslinux_entries_configfile: syslinuxcfg
+*extract_syslinux_entries_source: syslinuxcfg
+*file: file
+*functional_test: functional_test
+*gettext: gettext
+*halt: halt
+*hashsum: hashsum
+*hdparm: hdparm
+*hello: hello
+*help: help
+*hexdump: hexdump
+*inb: iorw
+*inl: iorw
+*inw: iorw
+*keystatus: keystatus
+*kfreebsd: bsd
+*knetbsd: bsd
+*kopenbsd: bsd
+*list_env: loadenv
+*load_env: loadenv
+*loopback: loopback
+*ls: ls
+*lsacpi: lsacpi
+*lspci: lspci
+*md5sum: hashsum
+*menuentry: normal
+*pcidump: pcidump
+*plan9: plan9
+*probe: probe
+*read_byte: memrw
+*read_dword: memrw
+*read_word: memrw
+*regexp: regexp
+*save_env: loadenv
+*search: search
+*sendkey: sendkey
+*serial: serial
+*setpci: setpci
+*sha1sum: hashsum
+*sha256sum: hashsum
+*sha512sum: hashsum
+*sleep: sleep
+*submenu: normal
+*syslinux_configfile: syslinuxcfg
+*syslinux_source: syslinuxcfg
+*terminfo: terminfo
+*test_blockarg: test_blockarg
+*testspeed: testspeed
+*tr: tr
+*trust: verify
+*verify_detached: verify
+*xnu_splash: xnu
+*zfskey: zfscrypt
+.: configfile
+915resolution: 915resolution
+[: test
+authenticate: normal
+background_color: gfxterm_background
+backtrace: backtrace
+badram: mmap
+blocklist: blocklist
+boot: boot
+break: normal
+cat: minicmd
+cbmemc: cbmemc
+chainloader: chain
+clear: normal
+cmosclean: cmostest
+cmosdump: cmosdump
+cmosset: cmostest
+cmostest: cmostest
+cmp: cmp
+configfile: configfile
+continue: normal
+coreboot_boottime: cbtime
+cutmem: mmap
+date: date
+distrust: verify
+dump: minicmd
+efiemu_loadcore: efiemu
+efiemu_prepare: efiemu
+efiemu_unload: efiemu
+eval: eval
+exit: minicmd
+export: normal
+extract_entries_configfile: configfile
+extract_entries_source: configfile
+extract_legacy_entries_configfile: legacycfg
+extract_legacy_entries_source: legacycfg
+false: true
+freedos: freedos
+gdbstub: gdb
+gdbstub_break: gdb
+gdbstub_stop: gdb
+gptsync: gptsync
+help: minicmd
+hwmatch: hwmatch
+initrd16: linux16
+initrd: linux
+keymap: keylayouts
+kfreebsd_loadenv: bsd
+kfreebsd_module: bsd
+kfreebsd_module_elf: bsd
+knetbsd_module: bsd
+knetbsd_module_elf: bsd
+kopenbsd_ramdisk: bsd
+legacy_check_password: legacycfg
+legacy_configfile: legacycfg
+legacy_initrd: legacycfg
+legacy_initrd_nounzip: legacycfg
+legacy_kernel: legacycfg
+legacy_password: legacycfg
+legacy_source: legacycfg
+linux16: linux16
+linux: linux
+list_trusted: verify
+loadfont: font
+lsapm: lsapm
+lscoreboot: cbls
+lsfonts: font
+lsmmap: lsmmap
+lsmod: minicmd
+macppcbless: macbless
+mactelbless: macbless
+module2: multiboot2
+module: multiboot
+multiboot2: multiboot2
+multiboot: multiboot
+nativedisk: nativedisk
+net_add_addr: net
+net_add_dns: net
+net_add_route: net
+net_bootp: net
+net_del_addr: net
+net_del_dns: net
+net_del_route: net
+net_get_dhcp_option: net
+net_ipv6_autoconf: net
+net_ls_addr: net
+net_ls_cards: net
+net_ls_dns: net
+net_ls_routes: net
+net_nslookup: net
+normal: normal
+normal_exit: normal
+ntldr: ntldr
+outb: iorw
+outl: iorw
+outw: iorw
+parttool: parttool
+password: password
+password_pbkdf2: password_pbkdf2
+play: play
+pxechainloader: pxechain
+read: read
+reboot: reboot
+return: normal
+rmmod: minicmd
+search.file: search_fs_file
+search.fs_label: search_label
+search.fs_uuid: search_fs_uuid
+setparams: normal
+shift: normal
+source: configfile
+terminal_input: terminal
+terminal_output: terminal
+test: test
+testload: testload
+time: time
+true: true
+truecrypt: truecrypt
+usb: usbtest
+vbeinfo: videoinfo
+vbetest: videotest
+videoinfo: videoinfo
+videotest: videotest
+write_byte: memrw
+write_dword: memrw
+write_word: memrw
+xnu_devprop_load: xnu
+xnu_kernel64: xnu
+xnu_kernel: xnu
+xnu_kext: xnu
+xnu_kextdir: xnu
+xnu_mkext: xnu
+xnu_ramdisk: xnu
+xnu_resume: xnu
+xnu_uuid: xnu_uuid
+zfs-bootfs: zfsinfo
+zfsinfo: zfsinfo
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/config.h b/builder/hd-boot/grub/usr/lib/grub/i386-pc/config.h
new file mode 100644
index 00000000..9360bfa4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/config.h
@@ -0,0 +1,64 @@
+#undef _LARGEFILE_SOURCE
+#undef _FILE_OFFSET_BITS
+#define _LARGEFILE_SOURCE
+#define _FILE_OFFSET_BITS 64
+#if defined(__PPC__) && !defined(__powerpc__)
+#define __powerpc__ 1
+#endif
+
+#define GCRYPT_NO_DEPRECATED 1
+
+/* Define to 1 to enable disk cache statistics. */
+#define DISK_CACHE_STATS 0
+#define BOOT_TIME_STATS 0
+/* Define to 1 to make GRUB quieter at boot time. */
+#define QUIET_BOOT 0
+
+#if defined (GRUB_BUILD)
+#undef ENABLE_NLS
+#define BUILD_SIZEOF_LONG 8
+#define BUILD_SIZEOF_VOID_P 8
+#if defined __APPLE__
+# if defined __BIG_ENDIAN__
+# define BUILD_WORDS_BIGENDIAN 1
+# else
+# define BUILD_WORDS_BIGENDIAN 0
+# endif
+#else
+#define BUILD_WORDS_BIGENDIAN 0
+#endif
+#elif defined (GRUB_UTIL) || !defined (GRUB_MACHINE)
+#include <config-util.h>
+#else
+#define HAVE_FONT_SOURCE 1
+/* Define if C symbols get an underscore after compilation. */
+#define HAVE_ASM_USCORE 0
+/* Define it to \"addr32\" or \"addr32;\" to make GAS happy. */
+#define ADDR32 addr32
+/* Define it to \"data32\" or \"data32;\" to make GAS happy. */
+#define DATA32 data32
+/* Define it to one of __bss_start, edata and _edata. */
+#define BSS_START_SYMBOL __bss_start
+/* Define it to either end or _end. */
+#define END_SYMBOL end
+/* Name of package. */
+#define PACKAGE "grub"
+/* Version number of package. */
+#define VERSION "2.02~beta2"
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "GRUB 2.02~beta2-22"
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "2.02~beta2-22"
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "GRUB"
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "bug-grub@gnu.org"
+
+#define GRUB_TARGET_CPU "i386"
+#define GRUB_PLATFORM "pc"
+
+#define RE_ENABLE_I18N 1
+
+#define _GNU_SOURCE 1
+
+#endif
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/configfile.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/configfile.mod
new file mode 100644
index 00000000..79b1a5a2
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/configfile.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpio.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpio.mod
new file mode 100644
index 00000000..eb54d389
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpio.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpio_be.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpio_be.mod
new file mode 100644
index 00000000..5669a76a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpio_be.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpuid.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpuid.mod
new file mode 100644
index 00000000..24c8c21e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cpuid.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/crc64.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/crc64.mod
new file mode 100644
index 00000000..7790e20c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/crc64.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/crypto.lst b/builder/hd-boot/grub/usr/lib/grub/i386-pc/crypto.lst
new file mode 100644
index 00000000..77d9efc0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/crypto.lst
@@ -0,0 +1,45 @@
+RIJNDAEL: gcry_rijndael
+RIJNDAEL192: gcry_rijndael
+RIJNDAEL256: gcry_rijndael
+AES128: gcry_rijndael
+AES-128: gcry_rijndael
+AES-192: gcry_rijndael
+AES-256: gcry_rijndael
+ADLER32: adler32
+CRC64: crc64
+ARCFOUR: gcry_arcfour
+BLOWFISH: gcry_blowfish
+CAMELLIA128: gcry_camellia
+CAMELLIA192: gcry_camellia
+CAMELLIA256: gcry_camellia
+CAST5: gcry_cast5
+CRC32: gcry_crc
+CRC32RFC1510: gcry_crc
+CRC24RFC2440: gcry_crc
+DES: gcry_des
+3DES: gcry_des
+DSA: gcry_dsa
+IDEA: gcry_idea
+MD4: gcry_md4
+MD5: gcry_md5
+RFC2268_40: gcry_rfc2268
+AES: gcry_rijndael
+AES192: gcry_rijndael
+AES256: gcry_rijndael
+RIPEMD160: gcry_rmd160
+RSA: gcry_rsa
+SEED: gcry_seed
+SERPENT128: gcry_serpent
+SERPENT192: gcry_serpent
+SERPENT256: gcry_serpent
+SHA1: gcry_sha1
+SHA224: gcry_sha256
+SHA256: gcry_sha256
+SHA512: gcry_sha512
+SHA384: gcry_sha512
+TIGER192: gcry_tiger
+TIGER: gcry_tiger
+TIGER2: gcry_tiger
+TWOFISH: gcry_twofish
+TWOFISH128: gcry_twofish
+WHIRLPOOL: gcry_whirlpool
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/crypto.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/crypto.mod
new file mode 100644
index 00000000..64a30bf8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/crypto.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cryptodisk.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cryptodisk.mod
new file mode 100644
index 00000000..06960968
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cryptodisk.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/cs5536.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cs5536.mod
new file mode 100644
index 00000000..0f3e5200
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/cs5536.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/date.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/date.mod
new file mode 100644
index 00000000..e4fadcad
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/date.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/datehook.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/datehook.mod
new file mode 100644
index 00000000..ebaaa38a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/datehook.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/datetime.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/datetime.mod
new file mode 100644
index 00000000..79030a8c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/datetime.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/disk.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/disk.mod
new file mode 100644
index 00000000..0bc49673
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/disk.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/diskboot.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/diskboot.img
new file mode 100644
index 00000000..fac4a254
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/diskboot.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/diskfilter.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/diskfilter.mod
new file mode 100644
index 00000000..bf6d1753
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/diskfilter.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/div_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/div_test.mod
new file mode 100644
index 00000000..4cd6c723
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/div_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/dm_nv.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/dm_nv.mod
new file mode 100644
index 00000000..053b45f3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/dm_nv.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/drivemap.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/drivemap.mod
new file mode 100644
index 00000000..9e39846c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/drivemap.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/echo.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/echo.mod
new file mode 100644
index 00000000..8360eb19
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/echo.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu.mod
new file mode 100644
index 00000000..13528dc7
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu32.o b/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu32.o
new file mode 100644
index 00000000..3e379a8c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu32.o
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu64.o b/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu64.o
new file mode 100644
index 00000000..59924f2c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/efiemu64.o
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ehci.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ehci.mod
new file mode 100644
index 00000000..1b40ca91
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ehci.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/elf.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/elf.mod
new file mode 100644
index 00000000..2a7e9e5f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/elf.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/eval.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/eval.mod
new file mode 100644
index 00000000..e7057389
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/eval.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/exfat.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/exfat.mod
new file mode 100644
index 00000000..d276a8fa
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/exfat.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/exfctest.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/exfctest.mod
new file mode 100644
index 00000000..607a963f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/exfctest.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ext2.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ext2.mod
new file mode 100644
index 00000000..a4d3eaba
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ext2.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/extcmd.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/extcmd.mod
new file mode 100644
index 00000000..9ba69f99
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/extcmd.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/fat.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/fat.mod
new file mode 100644
index 00000000..1c48d791
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/fat.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/file.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/file.mod
new file mode 100644
index 00000000..82972845
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/file.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/font.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/font.mod
new file mode 100644
index 00000000..b19a063c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/font.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/freedos.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/freedos.mod
new file mode 100644
index 00000000..5d67aec3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/freedos.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/fs.lst b/builder/hd-boot/grub/usr/lib/grub/i386-pc/fs.lst
new file mode 100644
index 00000000..a069ccc6
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/fs.lst
@@ -0,0 +1,36 @@
+affs
+afs
+bfs
+btrfs
+cbfs
+cpio
+cpio_be
+exfat
+ext2
+fat
+hfs
+hfsplus
+iso9660
+jfs
+minix
+minix2
+minix2_be
+minix3
+minix3_be
+minix_be
+newc
+nilfs2
+ntfs
+odc
+procfs
+reiserfs
+romfs
+sfs
+squash4
+tar
+udf
+ufs1
+ufs1_be
+ufs2
+xfs
+zfs
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/fshelp.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/fshelp.mod
new file mode 100644
index 00000000..d54f6df4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/fshelp.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/functional_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/functional_test.mod
new file mode 100644
index 00000000..8db423b8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/functional_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2hdr.bin b/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2hdr.bin
new file mode 100644
index 00000000..898aeb9c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2hdr.bin
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2hdr.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2hdr.img
new file mode 100644
index 00000000..898aeb9c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2hdr.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2ldr.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2ldr.img
new file mode 100644
index 00000000..7afca852
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2ldr.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2ldr.mbr b/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2ldr.mbr
new file mode 100644
index 00000000..2cdd88ac
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/g2ldr.mbr
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_arcfour.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_arcfour.mod
new file mode 100644
index 00000000..2e1751f2
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_arcfour.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_blowfish.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_blowfish.mod
new file mode 100644
index 00000000..28cd0a52
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_blowfish.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_camellia.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_camellia.mod
new file mode 100644
index 00000000..c612117b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_camellia.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_cast5.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_cast5.mod
new file mode 100644
index 00000000..da19f6d1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_cast5.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_crc.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_crc.mod
new file mode 100644
index 00000000..70f16384
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_crc.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_des.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_des.mod
new file mode 100644
index 00000000..ac04ad0d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_des.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_dsa.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_dsa.mod
new file mode 100644
index 00000000..408062ca
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_dsa.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_idea.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_idea.mod
new file mode 100644
index 00000000..86ae8aa3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_idea.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_md4.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_md4.mod
new file mode 100644
index 00000000..a832bd8a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_md4.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_md5.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_md5.mod
new file mode 100644
index 00000000..dfaf0ff2
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_md5.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rfc2268.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rfc2268.mod
new file mode 100644
index 00000000..4bc8ad54
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rfc2268.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rijndael.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rijndael.mod
new file mode 100644
index 00000000..dedd7c38
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rijndael.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rmd160.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rmd160.mod
new file mode 100644
index 00000000..22ea32e9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rmd160.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rsa.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rsa.mod
new file mode 100644
index 00000000..556aa5c8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_rsa.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_seed.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_seed.mod
new file mode 100644
index 00000000..7dfd7459
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_seed.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_serpent.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_serpent.mod
new file mode 100644
index 00000000..56d10ac3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_serpent.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha1.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha1.mod
new file mode 100644
index 00000000..5651a83e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha1.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha256.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha256.mod
new file mode 100644
index 00000000..c199941b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha256.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha512.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha512.mod
new file mode 100644
index 00000000..735e6e1c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_sha512.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_tiger.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_tiger.mod
new file mode 100644
index 00000000..416143eb
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_tiger.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_twofish.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_twofish.mod
new file mode 100644
index 00000000..7d742a37
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_twofish.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_whirlpool.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_whirlpool.mod
new file mode 100644
index 00000000..22ec8020
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gcry_whirlpool.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gdb.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gdb.mod
new file mode 100644
index 00000000..6c08727c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gdb.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/geli.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/geli.mod
new file mode 100644
index 00000000..e3c7e6db
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/geli.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gettext.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gettext.mod
new file mode 100644
index 00000000..da40045a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gettext.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxmenu.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxmenu.mod
new file mode 100644
index 00000000..b264759d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxmenu.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm.mod
new file mode 100644
index 00000000..66db6977
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm_background.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm_background.mod
new file mode 100644
index 00000000..c0411e61
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm_background.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm_menu.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm_menu.mod
new file mode 100644
index 00000000..d9bfe3d3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gfxterm_menu.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gptsync.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gptsync.mod
new file mode 100644
index 00000000..9b7d6a33
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gptsync.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/grldr.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/grldr.img
new file mode 100644
index 00000000..fece2141
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/grldr.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/grub-bios-setup b/builder/hd-boot/grub/usr/lib/grub/i386-pc/grub-bios-setup
new file mode 100755
index 00000000..ffb68851
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/grub-bios-setup
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/grub-ntldr-img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/grub-ntldr-img
new file mode 100755
index 00000000..cc3e2196
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/grub-ntldr-img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/gzio.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gzio.mod
new file mode 100644
index 00000000..0a38a077
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/gzio.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/halt.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/halt.mod
new file mode 100644
index 00000000..313eaa4e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/halt.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/hashsum.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hashsum.mod
new file mode 100644
index 00000000..b206c5ff
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hashsum.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/hdparm.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hdparm.mod
new file mode 100644
index 00000000..aced84cb
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hdparm.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/hello.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hello.mod
new file mode 100644
index 00000000..afb2c8aa
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hello.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/help.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/help.mod
new file mode 100644
index 00000000..6d6e7f84
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/help.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/hexdump.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hexdump.mod
new file mode 100644
index 00000000..cbb8619d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hexdump.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfs.mod
new file mode 100644
index 00000000..a33bb58a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfsplus.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfsplus.mod
new file mode 100644
index 00000000..5bc692d0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfsplus.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfspluscomp.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfspluscomp.mod
new file mode 100644
index 00000000..970baa1b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hfspluscomp.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/http.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/http.mod
new file mode 100644
index 00000000..87b66c7b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/http.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/hwmatch.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hwmatch.mod
new file mode 100644
index 00000000..d18c237b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/hwmatch.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/iorw.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/iorw.mod
new file mode 100644
index 00000000..61bef78a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/iorw.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/iso9660.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/iso9660.mod
new file mode 100644
index 00000000..7d9d9fda
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/iso9660.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/jfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/jfs.mod
new file mode 100644
index 00000000..593561d6
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/jfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/jpeg.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/jpeg.mod
new file mode 100644
index 00000000..68c728c0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/jpeg.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/kernel.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/kernel.img
new file mode 100644
index 00000000..0be0a00b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/kernel.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/keylayouts.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/keylayouts.mod
new file mode 100644
index 00000000..16cf77d5
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/keylayouts.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/keystatus.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/keystatus.mod
new file mode 100644
index 00000000..2bb7ee87
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/keystatus.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ldm.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ldm.mod
new file mode 100644
index 00000000..cb79ead4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ldm.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/legacy_password_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/legacy_password_test.mod
new file mode 100644
index 00000000..a2cae39a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/legacy_password_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/legacycfg.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/legacycfg.mod
new file mode 100644
index 00000000..f9d4c0b3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/legacycfg.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/linux.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/linux.mod
new file mode 100644
index 00000000..909678cd
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/linux.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/linux16.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/linux16.mod
new file mode 100644
index 00000000..77369b11
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/linux16.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/lnxboot.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lnxboot.img
new file mode 100644
index 00000000..a60fcf2c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lnxboot.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/loadenv.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/loadenv.mod
new file mode 100644
index 00000000..b9086e3f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/loadenv.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/loopback.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/loopback.mod
new file mode 100644
index 00000000..0f3826d7
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/loopback.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ls.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ls.mod
new file mode 100644
index 00000000..5b73a3bf
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ls.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsacpi.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsacpi.mod
new file mode 100644
index 00000000..a8fad6f1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsacpi.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsapm.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsapm.mod
new file mode 100644
index 00000000..40c471d8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsapm.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsmmap.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsmmap.mod
new file mode 100644
index 00000000..7b9ad66d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lsmmap.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/lspci.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lspci.mod
new file mode 100644
index 00000000..4035e6ea
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lspci.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/luks.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/luks.mod
new file mode 100644
index 00000000..d692d600
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/luks.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/lvm.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lvm.mod
new file mode 100644
index 00000000..afd9e8d4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lvm.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/lzma_decompress.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lzma_decompress.img
new file mode 100644
index 00000000..0f0003b3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lzma_decompress.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/lzopio.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lzopio.mod
new file mode 100644
index 00000000..5b1781a8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/lzopio.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/macbless.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/macbless.mod
new file mode 100644
index 00000000..7493c8d3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/macbless.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/macho.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/macho.mod
new file mode 100644
index 00000000..bd1c775d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/macho.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/mda_text.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mda_text.mod
new file mode 100644
index 00000000..8d5c22d4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mda_text.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid09.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid09.mod
new file mode 100644
index 00000000..c039a5ed
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid09.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid09_be.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid09_be.mod
new file mode 100644
index 00000000..d937a6f1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid09_be.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid1x.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid1x.mod
new file mode 100644
index 00000000..9bfe1b3d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mdraid1x.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/memdisk.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/memdisk.mod
new file mode 100644
index 00000000..98091754
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/memdisk.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/memrw.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/memrw.mod
new file mode 100644
index 00000000..3d9a985a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/memrw.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/minicmd.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minicmd.mod
new file mode 100644
index 00000000..1f16aa7a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minicmd.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix.mod
new file mode 100644
index 00000000..d9ead717
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix2.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix2.mod
new file mode 100644
index 00000000..31926be9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix2.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix2_be.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix2_be.mod
new file mode 100644
index 00000000..fbd68901
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix2_be.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix3.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix3.mod
new file mode 100644
index 00000000..3ffa246b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix3.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix3_be.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix3_be.mod
new file mode 100644
index 00000000..e3832790
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix3_be.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix_be.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix_be.mod
new file mode 100644
index 00000000..abfd68b0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/minix_be.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/mmap.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mmap.mod
new file mode 100644
index 00000000..9160bec3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mmap.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/moddep.lst b/builder/hd-boot/grub/usr/lib/grub/i386-pc/moddep.lst
new file mode 100644
index 00000000..57590dd9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/moddep.lst
@@ -0,0 +1,259 @@
+squash4: xzio gzio lzopio fshelp
+search_fs_uuid:
+legacycfg: linux gcry_md5 crypto password normal
+date: datetime normal
+bfs:
+uhci: pci usb
+multiboot2: boot video net acpi relocator mmap lsapm vbe
+gcry_twofish: crypto
+cpio_be: archelp
+cmostest:
+priority_queue:
+gcry_rijndael: crypto
+freedos: boot video relocator chain
+echo: extcmd
+cpio: archelp
+xzio: crypto
+part_sun:
+hfspluscomp: gzio hfsplus
+gcry_sha512: crypto
+gcry_cast5: crypto
+boot:
+setjmp_test: setjmp functional_test
+odc: archelp
+ls: extcmd normal
+gzio:
+cbmemc: cbtable terminfo normal
+video:
+test_blockarg: extcmd normal
+gfxterm: video font
+cbtable:
+gcry_tiger: crypto
+gcry_serpent: crypto
+aout:
+macbless: disk
+gcry_blowfish: crypto
+trig:
+plan9: boot video extcmd relocator
+extcmd:
+at_keyboard: boot keylayouts
+videoinfo: video
+testspeed: extcmd normal
+pxe: boot net
+minix:
+keylayouts:
+xnu_uuid: gcry_md5
+usbtest: usb
+usbms: usb scsi
+reboot: relocator
+morse:
+help: extcmd normal
+part_msdos:
+http: net
+gdb: backtrace serial
+gcry_rsa: mpi verify
+cbtime: cbtable
+blocklist:
+probe: extcmd
+pbkdf2: crypto
+gcry_rfc2268: crypto
+ufs1_be:
+nativedisk:
+gcry_camellia: crypto
+fat:
+exfctest: functional_test
+pci:
+parttool: normal
+lzopio: crypto
+linux: boot video relocator mmap vbe normal
+gcry_md4: crypto
+zfsinfo: zfs
+usb_keyboard: keylayouts usb
+pxechain: boot video pxe relocator
+gcry_md5: crypto
+fshelp:
+ehci: boot pci usb cs5536
+bitmap_scale: bitmap
+ata: scsi
+datetime:
+usbserial_common: usb serial
+syslinuxcfg: extcmd normal
+net: priority_queue boot datetime bufio
+gcry_des: crypto
+div_test: functional_test
+time:
+reiserfs: fshelp
+dm_nv: diskfilter
+datehook: datetime normal
+mdraid09_be: diskfilter
+efiemu: crypto acpi cpuid gcry_crc
+backtrace:
+ahci: boot pci ata
+kernel:
+video_cirrus: video pci video_fb
+part_plan:
+gcry_seed: crypto
+minix_be:
+crypto:
+video_colors:
+test:
+terminal:
+part_dvh:
+lsacpi: extcmd acpi
+jpeg: bufio bitmap
+bsd: boot video aout extcmd gcry_md5 crypto cpuid elf relocator serial mmap vbe
+memdisk:
+gfxmenu: video gfxterm trig bitmap_scale video_colors bitmap normal font
+cmp:
+acpi: extcmd mmap
+xfs: fshelp
+elf:
+cpuid: extcmd
+affs: fshelp
+usb: pci
+videotest: video gfxmenu font
+tr: extcmd
+testload:
+relocator: mmap
+play:
+gfxterm_menu: video_fb functional_test procfs normal font
+cbfs: archelp
+adler32: crypto
+progress: normal
+password: crypto normal
+part_sunpc:
+video_fb:
+tftp: priority_queue net
+sleep: extcmd normal
+serial: extcmd terminfo
+search_fs_file:
+gcry_sha256: crypto
+gcry_rmd160: crypto
+exfat:
+search: search_fs_uuid extcmd search_fs_file search_label
+mdraid09: diskfilter
+chain: boot video relocator
+mpi: crypto
+memrw: extcmd
+cs5536: pci
+password_pbkdf2: gcry_sha512 pbkdf2 crypto normal
+mdraid1x: diskfilter
+linux16: boot video relocator mmap
+gcry_crc: crypto
+configfile: normal
+zfscrypt: gcry_rijndael extcmd pbkdf2 crypto zfs gcry_sha1
+signature_test: functional_test procfs
+raid5rec: diskfilter
+pcidump: extcmd pci
+gcry_arcfour: crypto
+sendkey: boot extcmd
+part_dfly:
+minix2_be:
+gettext:
+pbkdf2_test: pbkdf2 gcry_sha1 functional_test
+hello: extcmd
+vga_text:
+usbserial_pl2303: usbserial_common usb serial
+hashsum: extcmd crypto normal
+xnu_uuid_test: functional_test
+regexp: extcmd normal
+part_gpt:
+ohci: boot pci usb cs5536
+gptsync: disk
+zfs: gzio
+part_apple:
+hdparm: extcmd
+bufio:
+btrfs: gzio lzopio
+bitmap:
+true:
+terminfo: extcmd
+romfs: fshelp
+ntfscomp: ntfs
+hfs:
+gcry_dsa: mpi verify
+cmdline_cat_test: video_fb functional_test procfs normal font
+biosdisk:
+ufs1:
+offsetio:
+ntldr: boot video relocator chain
+legacy_password_test: legacycfg functional_test
+setjmp:
+ufs2:
+nilfs2: fshelp
+lsmmap:
+gcry_sha1: crypto
+cmosdump:
+915resolution:
+mmap: boot
+tar: archelp
+png: bufio bitmap
+lspci: extcmd pci
+hfsplus: fshelp
+cbls: cbtable
+tga: bufio bitmap
+minix2:
+setpci: extcmd pci
+scsi:
+pata: pci ata
+minix3:
+lvm: diskfilter
+lsapm:
+functional_test: video extcmd video_fb btrfs
+eval: normal
+iso9660: fshelp
+crc64: crypto
+vbe: video video_fb
+udf: fshelp
+search_label:
+raid6rec: diskfilter
+msdospart: parttool disk
+mda_text:
+archelp:
+procfs:
+minix3_be:
+halt: extcmd acpi
+xnu: boot video extcmd bitmap_scale efiemu relocator bitmap macho
+read:
+multiboot: boot video net relocator mmap lsapm vbe
+keystatus: extcmd
+cryptodisk: extcmd crypto procfs
+truecrypt: boot gzio video relocator mmap
+normal: boot extcmd crypto terminal gettext
+geli: gcry_sha512 pbkdf2 crypto gcry_sha256 cryptodisk
+spkmodem: terminfo
+gcry_idea: crypto
+video_bochs: video pci video_fb
+verify: extcmd crypto mpi gcry_sha1
+sfs: fshelp
+part_amiga:
+luks: pbkdf2 crypto cryptodisk
+loopback: extcmd
+jfs:
+gfxterm_background: gfxterm video extcmd bitmap_scale video_colors bitmap
+usbserial_usbdebug: usbserial_common usb serial
+part_acorn:
+newc: archelp
+macho:
+iorw: extcmd
+hwmatch: pci normal
+cat: extcmd
+afs:
+sleep_test: datetime functional_test
+ldm: part_msdos part_gpt diskfilter
+hexdump: extcmd
+disk:
+usbserial_ftdi: usbserial_common usb serial
+minicmd:
+loadenv: extcmd disk
+gcry_whirlpool: crypto
+drivemap: boot extcmd mmap
+vga: video video_fb
+part_bsd: part_msdos
+font: video bufio
+ext2: fshelp
+diskfilter:
+videotest_checksum: video_fb functional_test font
+file: extcmd elf offsetio macho
+ntfs: fshelp
+all_video: vbe vga video_bochs video_cirrus
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/modinfo.sh b/builder/hd-boot/grub/usr/lib/grub/i386-pc/modinfo.sh
new file mode 100755
index 00000000..a71399e3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/modinfo.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+# User-controllable options
+grub_modinfo_target_cpu=i386
+grub_modinfo_platform=pc
+grub_disk_cache_stats=0
+grub_boot_time_stats=0
+grub_have_font_source=1
+
+# Autodetected config
+grub_have_asm_uscore=0
+grub_i8086_addr32="addr32"
+grub_i8086_data32="data32"
+grub_bss_start_symbol="__bss_start"
+grub_end_symbol="end"
+
+# Build environment
+grub_target_cc='gcc-4.9'
+grub_target_cc_version='gcc-4.9 (Debian 4.9.2-10) 4.9.2'
+grub_target_cflags=' -Os -Wall -W -Wshadow -Wpointer-arith -Wundef -Wchar-subscripts -Wcomment -Wdeprecated-declarations -Wdisabled-optimization -Wdiv-by-zero -Wfloat-equal -Wformat-extra-args -Wformat-security -Wformat-y2k -Wimplicit -Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-braces -Wmissing-format-attribute -Wmultichar -Wparentheses -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wswitch -Wtrigraphs -Wunknown-pragmas -Wunused -Wunused-function -Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable -Wwrite-strings -Wnested-externs -Wstrict-prototypes -g -Wredundant-decls -Wmissing-prototypes -Wmissing-declarations -Wextra -Wattributes -Wendif-labels -Winit-self -Wint-to-pointer-cast -Winvalid-pch -Wmissing-field-initializers -Wnonnull -Woverflow -Wvla -Wpointer-to-int-cast -Wstrict-aliasing -Wvariadic-macros -Wvolatile-register-var -Wpointer-sign -Wmissing-prototypes -Wmissing-declarations -Wformat=2 -march=i386 -m32 -mrtd -mregparm=3 -falign-jumps=1 -falign-loops=1 -falign-functions=1 -freg-struct-return -mno-mmx -mno-sse -mno-sse2 -mno-3dnow -fno-dwarf2-cfi-asm -fno-asynchronous-unwind-tables -Qn -fno-stack-protector -Wtrampolines -Werror'
+grub_target_cppflags='-Wno-unused-but-set-variable -Wall -W -I$(top_srcdir)/include -I$(top_builddir)/include -DGRUB_MACHINE_PCBIOS=1 -DGRUB_MACHINE=I386_PC -m32 -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.9/include'
+grub_target_ccasflags=' -g -m32'
+grub_target_ldflags=' -m32 -Wl,-melf_i386 -Wl,--build-id=none'
+grub_target_strip='strip'
+grub_target_nm='nm'
+grub_target_ranlib='ranlib'
+grub_target_objconf=''
+grub_target_obj2elf=''
+
+# Version
+grub_version="2.02~beta2"
+grub_package="grub"
+grub_package_string="GRUB 2.02~beta2-22"
+grub_package_version="2.02~beta2-22"
+grub_package_name="GRUB"
+grub_package_bugreport="bug-grub@gnu.org"
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/morse.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/morse.mod
new file mode 100644
index 00000000..4f18356d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/morse.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/mpi.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mpi.mod
new file mode 100644
index 00000000..bb6ebcd7
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/mpi.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/msdospart.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/msdospart.mod
new file mode 100644
index 00000000..80b8bed0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/msdospart.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/multiboot.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/multiboot.mod
new file mode 100644
index 00000000..bda00446
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/multiboot.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/multiboot2.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/multiboot2.mod
new file mode 100644
index 00000000..87676590
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/multiboot2.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/nativedisk.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/nativedisk.mod
new file mode 100644
index 00000000..19dfd19b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/nativedisk.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/net.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/net.mod
new file mode 100644
index 00000000..9170aeff
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/net.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/newc.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/newc.mod
new file mode 100644
index 00000000..fb2cede0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/newc.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/nilfs2.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/nilfs2.mod
new file mode 100644
index 00000000..606b6c4b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/nilfs2.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/normal.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/normal.mod
new file mode 100644
index 00000000..1cad701d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/normal.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntfs.mod
new file mode 100644
index 00000000..4fe93d8e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntfscomp.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntfscomp.mod
new file mode 100644
index 00000000..73b700ba
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntfscomp.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntldr.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntldr.mod
new file mode 100644
index 00000000..dd2a454f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ntldr.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/odc.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/odc.mod
new file mode 100644
index 00000000..a3c17821
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/odc.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/offsetio.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/offsetio.mod
new file mode 100644
index 00000000..d780305d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/offsetio.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ohci.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ohci.mod
new file mode 100644
index 00000000..9e16a072
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ohci.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_acorn.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_acorn.mod
new file mode 100644
index 00000000..e00a4d01
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_acorn.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_amiga.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_amiga.mod
new file mode 100644
index 00000000..267be0a7
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_amiga.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_apple.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_apple.mod
new file mode 100644
index 00000000..e79cf7e8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_apple.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_bsd.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_bsd.mod
new file mode 100644
index 00000000..1e08919d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_bsd.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_dfly.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_dfly.mod
new file mode 100644
index 00000000..7a9de1cd
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_dfly.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_dvh.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_dvh.mod
new file mode 100644
index 00000000..2b77179e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_dvh.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_gpt.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_gpt.mod
new file mode 100644
index 00000000..d412b363
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_gpt.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_msdos.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_msdos.mod
new file mode 100644
index 00000000..8964d7d9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_msdos.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_plan.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_plan.mod
new file mode 100644
index 00000000..e4051eac
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_plan.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_sun.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_sun.mod
new file mode 100644
index 00000000..f14fef52
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_sun.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_sunpc.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_sunpc.mod
new file mode 100644
index 00000000..2041cc9c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/part_sunpc.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/partmap.lst b/builder/hd-boot/grub/usr/lib/grub/i386-pc/partmap.lst
new file mode 100644
index 00000000..761233aa
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/partmap.lst
@@ -0,0 +1,11 @@
+part_acorn
+part_amiga
+part_apple
+part_bsd
+part_dfly
+part_dvh
+part_gpt
+part_msdos
+part_plan
+part_sun
+part_sunpc
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/parttool.lst b/builder/hd-boot/grub/usr/lib/grub/i386-pc/parttool.lst
new file mode 100644
index 00000000..68b4b5c4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/parttool.lst
@@ -0,0 +1 @@
+msdos: msdospart
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/parttool.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/parttool.mod
new file mode 100644
index 00000000..7abf0ff6
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/parttool.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/password.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/password.mod
new file mode 100644
index 00000000..82ed73db
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/password.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/password_pbkdf2.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/password_pbkdf2.mod
new file mode 100644
index 00000000..ae3255cd
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/password_pbkdf2.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/pata.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pata.mod
new file mode 100644
index 00000000..c4b319aa
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pata.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/pbkdf2.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pbkdf2.mod
new file mode 100644
index 00000000..c7d5b2bc
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pbkdf2.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/pbkdf2_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pbkdf2_test.mod
new file mode 100644
index 00000000..bcf2c83c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pbkdf2_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/pci.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pci.mod
new file mode 100644
index 00000000..41f51f70
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pci.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/pcidump.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pcidump.mod
new file mode 100644
index 00000000..ceed30a0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pcidump.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/plan9.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/plan9.mod
new file mode 100644
index 00000000..a0ca8a67
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/plan9.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/play.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/play.mod
new file mode 100644
index 00000000..53993491
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/play.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/png.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/png.mod
new file mode 100644
index 00000000..57c7ce0b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/png.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/priority_queue.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/priority_queue.mod
new file mode 100644
index 00000000..b4e0b0d6
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/priority_queue.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/probe.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/probe.mod
new file mode 100644
index 00000000..dce09c82
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/probe.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/procfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/procfs.mod
new file mode 100644
index 00000000..767b7814
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/procfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/progress.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/progress.mod
new file mode 100644
index 00000000..c105b8b3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/progress.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxe.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxe.mod
new file mode 100644
index 00000000..e2314ba1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxe.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxeboot.img b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxeboot.img
new file mode 100644
index 00000000..42b3f356
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxeboot.img
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxechain.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxechain.mod
new file mode 100644
index 00000000..4c446a4d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/pxechain.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/raid5rec.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/raid5rec.mod
new file mode 100644
index 00000000..5166369a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/raid5rec.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/raid6rec.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/raid6rec.mod
new file mode 100644
index 00000000..2765f488
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/raid6rec.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/read.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/read.mod
new file mode 100644
index 00000000..e3372503
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/read.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/reboot.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/reboot.mod
new file mode 100644
index 00000000..74b69439
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/reboot.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/regexp.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/regexp.mod
new file mode 100644
index 00000000..81692106
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/regexp.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/reiserfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/reiserfs.mod
new file mode 100644
index 00000000..8f6d81f7
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/reiserfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/relocator.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/relocator.mod
new file mode 100644
index 00000000..f32a9eb2
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/relocator.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/romfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/romfs.mod
new file mode 100644
index 00000000..9b556f2b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/romfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/scsi.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/scsi.mod
new file mode 100644
index 00000000..6477e83b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/scsi.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/search.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/search.mod
new file mode 100644
index 00000000..9c574c2c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/search.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_fs_file.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_fs_file.mod
new file mode 100644
index 00000000..cdcf97ba
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_fs_file.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_fs_uuid.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_fs_uuid.mod
new file mode 100644
index 00000000..6c30a007
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_fs_uuid.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_label.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_label.mod
new file mode 100644
index 00000000..181a0b29
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/search_label.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/sendkey.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/sendkey.mod
new file mode 100644
index 00000000..6e69eaad
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/sendkey.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/serial.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/serial.mod
new file mode 100644
index 00000000..96f0203d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/serial.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/setjmp.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/setjmp.mod
new file mode 100644
index 00000000..7c6a4be8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/setjmp.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/setjmp_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/setjmp_test.mod
new file mode 100644
index 00000000..ca8a1ad5
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/setjmp_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/setpci.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/setpci.mod
new file mode 100644
index 00000000..26f05466
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/setpci.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/sfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/sfs.mod
new file mode 100644
index 00000000..4abffef1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/sfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/signature_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/signature_test.mod
new file mode 100644
index 00000000..91beba57
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/signature_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/sleep.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/sleep.mod
new file mode 100644
index 00000000..4bc8d967
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/sleep.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/sleep_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/sleep_test.mod
new file mode 100644
index 00000000..63c81598
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/sleep_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/spkmodem.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/spkmodem.mod
new file mode 100644
index 00000000..de912cc9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/spkmodem.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/squash4.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/squash4.mod
new file mode 100644
index 00000000..60174bfa
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/squash4.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/syslinuxcfg.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/syslinuxcfg.mod
new file mode 100644
index 00000000..3f9b766d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/syslinuxcfg.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/tar.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/tar.mod
new file mode 100644
index 00000000..6f8177c3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/tar.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminal.lst b/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminal.lst
new file mode 100644
index 00000000..2cb224c4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminal.lst
@@ -0,0 +1,11 @@
+iat_keyboard: at_keyboard
+iserial: serial
+iserial_*: serial
+oaudio: morse
+ocbmemc: cbmemc
+ogfxterm: gfxterm
+omda_text: mda_text
+oserial: serial
+oserial_*: serial
+ospkmodem: spkmodem
+ovga_text: vga_text
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminal.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminal.mod
new file mode 100644
index 00000000..342a6ad0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminal.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminfo.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminfo.mod
new file mode 100644
index 00000000..fcccee94
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/terminfo.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/test.mod
new file mode 100644
index 00000000..5891c3b3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/test_blockarg.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/test_blockarg.mod
new file mode 100644
index 00000000..dee55087
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/test_blockarg.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/testload.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/testload.mod
new file mode 100644
index 00000000..0ac083e9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/testload.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/testspeed.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/testspeed.mod
new file mode 100644
index 00000000..a09473b2
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/testspeed.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/tftp.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/tftp.mod
new file mode 100644
index 00000000..280dfe6f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/tftp.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/tga.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/tga.mod
new file mode 100644
index 00000000..eb803994
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/tga.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/time.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/time.mod
new file mode 100644
index 00000000..30a9675f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/time.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/tr.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/tr.mod
new file mode 100644
index 00000000..c152685a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/tr.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/trig.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/trig.mod
new file mode 100644
index 00000000..25bcb5f4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/trig.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/true.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/true.mod
new file mode 100644
index 00000000..1306c9bc
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/true.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/truecrypt.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/truecrypt.mod
new file mode 100644
index 00000000..2c81fe7e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/truecrypt.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/udf.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/udf.mod
new file mode 100644
index 00000000..a341553f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/udf.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs1.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs1.mod
new file mode 100644
index 00000000..25a49ce8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs1.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs1_be.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs1_be.mod
new file mode 100644
index 00000000..02e5c6c1
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs1_be.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs2.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs2.mod
new file mode 100644
index 00000000..b52a9680
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/ufs2.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/uhci.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/uhci.mod
new file mode 100644
index 00000000..5f4e79f4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/uhci.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/usb.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usb.mod
new file mode 100644
index 00000000..69d91a03
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usb.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/usb_keyboard.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usb_keyboard.mod
new file mode 100644
index 00000000..2ed75fb0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usb_keyboard.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbms.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbms.mod
new file mode 100644
index 00000000..8c3d3504
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbms.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_common.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_common.mod
new file mode 100644
index 00000000..313ea5dc
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_common.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_ftdi.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_ftdi.mod
new file mode 100644
index 00000000..b24b55d9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_ftdi.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_pl2303.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_pl2303.mod
new file mode 100644
index 00000000..19afe10e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_pl2303.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_usbdebug.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_usbdebug.mod
new file mode 100644
index 00000000..4566b70a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbserial_usbdebug.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbtest.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbtest.mod
new file mode 100644
index 00000000..1115030c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/usbtest.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/vbe.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/vbe.mod
new file mode 100644
index 00000000..b2784dad
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/vbe.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/verify.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/verify.mod
new file mode 100644
index 00000000..da245f6d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/verify.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/vga.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/vga.mod
new file mode 100644
index 00000000..e119f751
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/vga.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/vga_text.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/vga_text.mod
new file mode 100644
index 00000000..e7e0c361
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/vga_text.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/video.lst b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video.lst
new file mode 100644
index 00000000..6ca853e6
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video.lst
@@ -0,0 +1,4 @@
+vbe
+vga
+video_bochs
+video_cirrus
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/video.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video.mod
new file mode 100644
index 00000000..764aad21
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_bochs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_bochs.mod
new file mode 100644
index 00000000..8ed2014d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_bochs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_cirrus.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_cirrus.mod
new file mode 100644
index 00000000..dbd7128d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_cirrus.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_colors.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_colors.mod
new file mode 100644
index 00000000..46f967c8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_colors.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_fb.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_fb.mod
new file mode 100644
index 00000000..94e0ca01
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/video_fb.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/videoinfo.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/videoinfo.mod
new file mode 100644
index 00000000..eb10e902
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/videoinfo.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/videotest.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/videotest.mod
new file mode 100644
index 00000000..52b56f3b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/videotest.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/videotest_checksum.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/videotest_checksum.mod
new file mode 100644
index 00000000..ef61e479
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/videotest_checksum.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/xfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xfs.mod
new file mode 100644
index 00000000..93ef00dc
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu.mod
new file mode 100644
index 00000000..8db83c7b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu_uuid.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu_uuid.mod
new file mode 100644
index 00000000..f264005a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu_uuid.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu_uuid_test.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu_uuid_test.mod
new file mode 100644
index 00000000..7713bdd4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xnu_uuid_test.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/xzio.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xzio.mod
new file mode 100644
index 00000000..11f5d4f6
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/xzio.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfs.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfs.mod
new file mode 100644
index 00000000..c780fea8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfs.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfscrypt.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfscrypt.mod
new file mode 100644
index 00000000..06e1fd79
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfscrypt.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfsinfo.mod b/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfsinfo.mod
new file mode 100644
index 00000000..2cc31c26
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/grub/i386-pc/zfsinfo.mod
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/linux-boot-probes/50mounted-tests b/builder/hd-boot/grub/usr/lib/linux-boot-probes/50mounted-tests
new file mode 100755
index 00000000..41e26e6d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/linux-boot-probes/50mounted-tests
@@ -0,0 +1,82 @@
+#!/bin/sh
+# Sub-tests that require a mounted partition.
+. /usr/share/os-prober/common.sh
+set -e
+
+partition="$1"
+
+types="$(fs_type "$partition")" || types=NOT-DETECTED
+if [ "$types" = NOT-DETECTED ]; then
+ debug "$1 type not recognised; skipping"
+ exit 0
+elif [ "$types" = swap ]; then
+ debug "$1 is a swap partition; skipping"
+ exit 0
+elif [ "$types" = crypto_LUKS ]; then
+ debug "$1 is a LUKS partition; skipping"
+ exit 0
+elif [ "$types" = ntfs ]; then
+ if type ntfs-3g >/dev/null 2>&1; then
+ types='ntfs-3g ntfs'
+ fi
+elif [ -z "$types" ]; then
+ if type cryptsetup >/dev/null 2>&1 && \
+ cryptsetup luksDump "$partition" >/dev/null 2>&1; then
+ debug "$1 is a LUKS partition; skipping"
+ exit 0
+ fi
+ types="$(grep -v nodev /proc/filesystems)"
+fi
+
+tmpmnt=/var/lib/os-prober/mount
+if [ ! -d "$tmpmnt" ]; then
+ mkdir "$tmpmnt"
+fi
+
+mounted=
+if type grub-mount >/dev/null 2>&1 && \
+ type grub-probe >/dev/null 2>&1 && \
+ grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
+ mounted=1
+ type="$(grub-probe -d "$partition" -t fs)"
+ [ "$type" ] || type=fuseblk
+else
+ ro_partition "$partition"
+ for type in $types; do
+ if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
+ mounted=1
+ break
+ fi
+ done
+fi
+
+if [ "$mounted" ]; then
+ linux_mount_boot "$partition" "$tmpmnt"
+ bootpart="${mountboot%% *}"
+ mounted="${mountboot#* }"
+
+ for test in /usr/lib/linux-boot-probes/mounted/*; do
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running $test $partition $bootpart $tmpmnt $type"
+ if $test "$partition" "$bootpart" "$tmpmnt" "$type"; then
+ debug "$test succeeded"
+ umount "$tmpmnt/boot" 2>/dev/null || true
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount $tmpmnt"
+ fi
+ rmdir "$tmpmnt" || true
+ exit 0
+ fi
+ fi
+ done
+
+ umount "$tmpmnt/boot" 2>/dev/null || true
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount $tmpmnt"
+ fi
+fi
+
+rmdir "$tmpmnt" || true
+
+# No tests found anything.
+exit 1
diff --git a/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/40grub b/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/40grub
new file mode 100755
index 00000000..08f66051
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/40grub
@@ -0,0 +1,107 @@
+#!/bin/sh
+. /usr/share/os-prober/common.sh
+set -e
+
+partition="$1"
+bootpart="$2"
+mpoint="$3"
+type="$4"
+
+found_item=0
+
+entry_result () {
+ if [ "$ignore_item" = 0 ] && \
+ [ -n "$kernel" ] && \
+ [ -e "$mpoint/$kernel" ]; then
+ result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters"
+ found_item=1
+ fi
+ kernel=""
+ parameters=""
+ initrd=""
+ title=""
+ ignore_item=0
+}
+
+parse_grub_menu () {
+ mpoint="$1"
+ rootpart="$2"
+ bootpart="$3"
+
+ kernel=""
+ parameters=""
+ initrd=""
+ title=""
+ ignore_item=0
+
+ while read line; do
+ #debug "parsing: $line"
+ set -f
+ set -- $line
+ set +f
+ case "$1" in
+ title)
+ entry_result
+ shift 1
+ title="$(echo "$@" | sed 's/://g')"
+ if echo "$title" | grep -q '(on /dev/[^)]*)$'; then
+ log "Skipping entry '$title':"
+ log "appears to be an automatic reference taken from another menu.lst"
+ ignore_item=1
+ fi
+ ;;
+ kernel)
+ # Hack alert: sed off any (hdn,n) but
+ # assume the kernel is on the same
+ # partition.
+ kernel="$(echo "$2" | sed 's/(.*)//')"
+ shift 2
+ parameters="$@"
+ # Systems with a separate /boot will not have
+ # the path to the kernel in menu.lst.
+ if [ "$partition" != "$bootpart" ]; then
+ kernel="/boot$kernel"
+ fi
+ ;;
+ initrd)
+ # Hack alert take 2: sed off any (hdn,n)
+ # See #566102
+ initrd="$(echo "$2" | sed 's/(.*)//')"
+ # Initrd same.
+ if [ "$partition" != "$bootpart" ]; then
+ initrd="/boot$initrd"
+ fi
+ ;;
+ boot)
+ entry_result
+ ;;
+ module)
+ log "Skipping entry '$title':"
+ log "parsing of entries containing 'module' lines is currently not supported"
+ ignore_item=1
+ ;;
+ esac
+ done
+
+ entry_result
+}
+
+grubconf=
+if [ -e "$mpoint/boot/grub/menu.lst" ]; then
+ grubconf="menu.lst"
+elif [ -e "$mpoint/boot/grub/grub.conf" ]; then
+ grubconf="grub.conf"
+fi
+
+if [ "$grubconf" ] && \
+ ([ ! -e "$mpoint/boot/grub/grub.cfg" ] || \
+ [ "$mpoint/boot/grub/$grubconf" -nt "$mpoint/boot/grub/grub.cfg" ]); then
+ debug "parsing $grubconf"
+ parse_grub_menu "$mpoint" "$partition" "$bootpart" < "$mpoint/boot/grub/$grubconf"
+fi
+
+if [ "$found_item" = 0 ]; then
+ exit 1
+else
+ exit 0
+fi
diff --git a/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/40grub2 b/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/40grub2
new file mode 100755
index 00000000..885614e0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/40grub2
@@ -0,0 +1,110 @@
+#!/bin/sh
+. /usr/share/os-prober/common.sh
+set -e
+
+partition="$1"
+bootpart="$2"
+mpoint="$3"
+type="$4"
+
+found_item=0
+
+entry_result () {
+ if [ "$ignore_item" = 0 ] && \
+ [ -n "$kernel" ] && \
+ [ -e "$mpoint/$kernel" ]; then
+ result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters"
+ found_item=1
+ fi
+ kernel=""
+ parameters=""
+ initrd=""
+ title=""
+ ignore_item=0
+}
+
+parse_grub_menu () {
+ mpoint="$1"
+ rootpart="$2"
+ bootpart="$3"
+
+ kernel=""
+ parameters=""
+ initrd=""
+ title=""
+ ignore_item=0
+
+ while read line; do
+ debug "parsing: $line"
+ set -f
+ set -- $line
+ set +f
+ case "$1" in
+ menuentry)
+ entry_result
+ shift 1
+ # The double-quoted string is the title.
+ # Make sure to look at the text of the line
+ # before 'set' mangled it.
+ title="$(echo "$line" | sed -n 's/[^"]*"\(.*\)".*/\1/p' | sed 's/://g')"
+ if [ -z "$title" ]; then
+ # ... or single-quoted? Be careful
+ # to handle constructions like
+ # 'foo'\''bar' (which expands to
+ # foo'bar, as in shell), and to
+ # handle multiple single-quoted
+ # strings on the same line.
+ title="$(echo "$line" | sed -n "s/[^']*'\(\([^']\|'\\\\''\)*\)'.*/\1/p" | sed "s/'\\\\''/'/; s/://g")"
+ fi
+ if [ -z "$title" ]; then
+ ignore_item=1
+ elif echo "$title" | grep -q '(on /dev/[^)]*)$'; then
+ log "Skipping entry '$title':"
+ log "appears to be an automatic reference taken from another menu.lst"
+ ignore_item=1
+ fi
+ ;;
+ linux)
+ # Hack alert: sed off any (hdn,n) but
+ # assume the kernel is on the same
+ # partition.
+ kernel="$(echo "$2" | sed 's/(.*)//')"
+ shift 2
+ parameters="$@"
+ # Systems with a separate /boot will not have
+ # the path to the kernel in grub.cfg.
+ if [ "$partition" != "$bootpart" ]; then
+ kernel="/boot$kernel"
+ fi
+ ;;
+ initrd)
+ initrd="$(echo "$2" | sed 's/(.*)//')"
+ # Initrd same.
+ if [ "$partition" != "$bootpart" ]; then
+ initrd="/boot$initrd"
+ fi
+ ;;
+ "}")
+ entry_result
+ ;;
+ esac
+ done
+
+ entry_result
+}
+
+if [ -e "$mpoint/boot/grub/grub.cfg" ] && \
+ ([ ! -e "$mpoint/boot/grub/menu.lst" ] || \
+ [ "$mpoint/boot/grub/grub.cfg" -nt "$mpoint/boot/grub/menu.lst" ]); then
+ debug "parsing grub.cfg"
+ parse_grub_menu "$mpoint" "$partition" "$bootpart" < "$mpoint/boot/grub/grub.cfg"
+elif [ -e "$mpoint/boot/grub2/grub.cfg" ]; then
+ debug "parsing grub.cfg"
+ parse_grub_menu "$mpoint" "$partition" "$bootpart" < "$mpoint/boot/grub2/grub.cfg"
+fi
+
+if [ "$found_item" = 0 ]; then
+ exit 1
+else
+ exit 0
+fi
diff --git a/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/50lilo b/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/50lilo
new file mode 100755
index 00000000..a011b566
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/50lilo
@@ -0,0 +1,126 @@
+#!/bin/sh
+. /usr/share/os-prober/common.sh
+set -e
+
+partition="$1"
+bootpart="$2"
+mpoint="$3"
+type="$4"
+
+found_item=0
+
+title=""
+rootdev=""
+kernel=""
+parameters=""
+initrd=""
+read_only=""
+added_parameters=0
+default_rootdev=""
+default_kernel=""
+default_parameters=""
+default_initrd=""
+default_read_only=""
+
+dequote () {
+ item="${1%\"}"
+ echo "${item#\"}"
+}
+
+addparams () {
+ # Any parameters we find replace the default parameters, but
+ # otherwise append.
+ if [ "$added_parameters" = 0 ]; then
+ parameters="$1"
+ added_parameters=1
+ else
+ parameters="${parameters:+$parameters }$1"
+ fi
+}
+
+recordstanza () {
+ if [ -n "$kernel" ] && [ -n "$title" ]; then
+ if [ -e "$mpoint/$kernel" ] && [ -e "$mpoint/$initrd" ]; then
+ if [ "$read_only" ]; then
+ parameters="ro $parameters"
+ fi
+ if [ "$rootdev" ]; then
+ parameters="root=$rootdev $parameters"
+ fi
+ parameters="${parameters% }"
+ result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters"
+ found_item=1
+ else
+ debug "cannot find $kernel or $initrd, not recording"
+ fi
+ title=""
+ rootdev="$default_rootdev"
+ kernel="$default_kernel"
+ parameters="$default_parameters"
+ initrd="$default_initrd"
+ read_only="$default_read_only"
+ added_parameters=0
+ else
+ # Everything before set default values.
+ default_rootdev="$rootdev"
+ default_kernel="$kernel"
+ default_parameters="$parameters"
+ default_initrd="$initrd"
+ default_read_only="$read_only"
+ fi
+}
+
+parse_lilo_conf () {
+ mpoint="$1"
+ rootpart="$2"
+ bootpart="$3"
+ IFS=" ="
+ while read line; do
+ debug "parsing: $line"
+ set -f
+ set -- $line
+ set +f
+ case "$1" in
+ root)
+ rootdev=$(dequote "$2")
+ ;;
+ image)
+ recordstanza
+ # Dereference if symbolic link
+ kernel="$(readlink -f "$(dequote "$2")")"
+ ;;
+ append)
+ addparams "$(dequote "${line#append=}")"
+ ;;
+ initrd)
+ # Dereference if symbolic link
+ initrd="$(readlink -f "$(dequote "$2")")"
+ ;;
+ label)
+ shift 1
+ title="$(dequote "$*" | sed -e 's/:/ /g')"
+ ;;
+ other)
+ recordstanza
+ ;;
+ read-only)
+ read_only=1
+ ;;
+ vga)
+ addparams "$line"
+ ;;
+ esac
+ done
+ recordstanza
+}
+
+if [ -e "$mpoint/etc/lilo.conf" ]; then
+ debug "parsing lilo.conf"
+ parse_lilo_conf "$mpoint" "$partition" "$bootpart" < "$mpoint/etc/lilo.conf"
+fi
+
+if [ "$found_item" = 0 ]; then
+ exit 1
+else
+ exit 0
+fi
diff --git a/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/90fallback b/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/90fallback
new file mode 100755
index 00000000..9ff78e13
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/linux-boot-probes/mounted/90fallback
@@ -0,0 +1,53 @@
+#!/bin/sh
+# Fallback in case nothing else works. Look for vmlinu[xz] file in root and
+# /boot, see if there is a matching initrd, and wing it.
+. /usr/share/os-prober/common.sh
+set -e
+
+partition="$1"
+bootpart="$2"
+mpoint="$3"
+type="$4"
+
+mappedpartition=$(mapdevfs "$partition" 2>/dev/null) || mappedpartition="$partition"
+
+exitcode=1
+for kernpat in /vmlinuz /vmlinux /boot/vmlinuz /boot/vmlinux "/boot/vmlinuz*" \
+ "/boot/vmlinux*" "/vmlinuz*" "/vmlinux*" "/kernel-*" "/boot/kernel-*"; do
+ if echo "$kernpat" | grep -q boot/; then
+ kernbootpart="$bootpart"
+ else
+ kernbootpart="$partition"
+ fi
+ for kernfile in $(eval ls "$mpoint$kernpat" 2>/dev/null); do
+ kernbasefile=$(echo "$kernfile" | sed "s!^$mpoint!!")
+ if [ -f "$kernfile" ] && [ ! -L "$kernfile" ]; then
+ initrdname=$(echo "$kernfile" | sed "s/vmlinu[zx]/initrd\*/")
+ # Yellow Dog Linux appends .img to it.
+ initrdname1="${initrdname}.img"
+ # Arch Linux names its initrds weirdly. We take
+ # some care here to avoid false positives on other
+ # systems, since kernel.img could conceivably be a
+ # kernel itself.
+ initrdname2=$(echo "$kernfile" | sed -n 's/vmlinu[zx]\([0-9][0-9]*\)/kernel\1/p' | sed 's/$/.img/')
+ # Dracut initramfses are named differently again.
+ initrdname3=$(echo "$kernfile" | sed "s/vmlinu[zx]/initramfs\*/" | sed 's/$/.img/')
+ # And Gentoo's also
+ initrdname4=$(echo "$kernfile" | sed "s/kernel/initramfs\*/")
+ foundinitrd=0
+ for initrd in $(eval ls "$initrdname" "$initrdname1" "$initrdname2" "$initrdname3" "$initrdname4" 2>/dev/null); do
+ if [ "$initrd" != "$kernfile" ] && [ -f "$initrd" ] && [ ! -L "$initrd" ]; then
+ initrd=$(echo "$initrd" | sed "s!^$mpoint!!")
+ result "$partition:$kernbootpart::$kernbasefile:$initrd:root=$mappedpartition"
+ exitcode=0
+ foundinitrd=1
+ fi
+ done
+ if [ "$foundinitrd" = 0 ]; then
+ result "$partition:$kernbootpart::$kernbasefile::root=$mappedpartition"
+ exitcode=0
+ fi
+ fi
+ done
+done
+exit "$exitcode"
diff --git a/builder/hd-boot/grub/usr/lib/os-prober/newns b/builder/hd-boot/grub/usr/lib/os-prober/newns
new file mode 100755
index 00000000..1b9eae47
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-prober/newns
Binary files differ
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/50mounted-tests b/builder/hd-boot/grub/usr/lib/os-probes/50mounted-tests
new file mode 100755
index 00000000..561163bf
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/50mounted-tests
@@ -0,0 +1,93 @@
+#!/bin/sh
+# Sub-tests that require a mounted partition.
+set -e
+partition="$1"
+
+. /usr/share/os-prober/common.sh
+
+types="$(fs_type "$partition")" || types=NOT-DETECTED
+if [ "$types" = NOT-DETECTED ]; then
+ debug "$1 type not recognised; skipping"
+ exit 0
+elif [ "$types" = swap ]; then
+ debug "$1 is a swap partition; skipping"
+ exit 0
+elif [ "$types" = crypto_LUKS ]; then
+ debug "$1 is a LUKS partition; skipping"
+ exit 0
+elif [ "$types" = ntfs ]; then
+ if type ntfs-3g >/dev/null 2>&1; then
+ types='ntfs-3g ntfs'
+ fi
+elif [ -z "$types" ]; then
+ if type cryptsetup >/dev/null 2>&1 && \
+ cryptsetup luksDump "$partition" >/dev/null 2>&1; then
+ debug "$1 is a LUKS partition; skipping"
+ exit 0
+ fi
+ for type in $(grep -v nodev /proc/filesystems); do
+ # hfsplus filesystems are mountable as hfs. Try hfs last so
+ # that we can tell the difference.
+ if [ "$type" = hfs ]; then
+ delaytypes="${delaytypes:+$delaytypes }$type"
+ elif [ "$type" = fuseblk ]; then
+ if type ntfs-3g >/dev/null 2>&1; then
+ types="${types:+$types }ntfs-3g"
+ fi
+ else
+ types="${types:+$types }$type"
+ fi
+ done
+fi
+
+tmpmnt=/var/lib/os-prober/mount
+if [ ! -d "$tmpmnt" ]; then
+ mkdir "$tmpmnt"
+fi
+
+mounted=
+if type grub-mount >/dev/null 2>&1 && \
+ type grub-probe >/dev/null 2>&1 && \
+ grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
+ mounted=1
+ type="$(grub-probe -d "$partition" -t fs)" || true
+ if [ "$type" ]; then
+ debug "mounted using GRUB $type filesystem driver"
+ else
+ debug "mounted using GRUB, but unknown filesystem?"
+ type=fuseblk
+ fi
+else
+ ro_partition "$partition"
+ for type in $types $delaytypes; do
+ if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
+ debug "mounted as $type filesystem"
+ mounted=1
+ break
+ fi
+ done
+fi
+
+if [ "$mounted" ]; then
+ for test in /usr/lib/os-probes/mounted/*; do
+ debug "running subtest $test"
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ if "$test" "$partition" "$tmpmnt" "$type"; then
+ debug "os found by subtest $test"
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount $tmpmnt"
+ fi
+ rmdir "$tmpmnt" || true
+ exit 0
+ fi
+ fi
+ done
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount $tmpmnt"
+ fi
+fi
+
+rmdir "$tmpmnt" || true
+
+# No tests found anything.
+exit 1
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/init/10filesystems b/builder/hd-boot/grub/usr/lib/os-probes/init/10filesystems
new file mode 100755
index 00000000..f50e55ed
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/init/10filesystems
@@ -0,0 +1,39 @@
+#!/bin/sh
+# Make sure filesystems are available.
+set +e # ignore errors from modprobe
+
+FILESYSTEMS='ext2 ext3 ext4 xfs jfs msdos vfat ntfs minix hfs hfsplus qnx4 ufs btrfs'
+# fuse is needed to make grub-mount work.
+FILESYSTEMS="$FILESYSTEMS fuse"
+# The Ubuntu kernel udebs put a number of filesystem modules in
+# fs-{core,secondary}-modules. It's fairly cheap to check for these too.
+FILESYSTEMS="$FILESYSTEMS fs-core fs-secondary"
+
+if [ ! -e /var/lib/os-prober/modules ]; then
+ # Check for anna-install to make it easier to use os-prober outside
+ # d-i.
+ if type anna-install >/dev/null 2>&1 && [ -d /lib/debian-installer ]; then
+ for fs in $FILESYSTEMS; do
+ ANNA_QUIET=1 DEBIAN_FRONTEND=none \
+ log-output -t os-prober \
+ anna-install "$fs-modules" || true
+ done
+ depmod -a >/dev/null 2>&1 || true
+ fi
+
+ for fs in $FILESYSTEMS; do
+ case "$fs" in
+ fs-*)
+ ;;
+ *)
+ modprobe "$fs" 2>/dev/null | logger -t os-prober
+ ;;
+ esac
+ done
+
+ # We only want to keep this state inside d-i, so this is as good a
+ # check as any.
+ if type anna-install >/dev/null 2>&1 && [ -d /lib/debian-installer ]; then
+ touch /var/lib/os-prober/modules
+ fi
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/05efi b/builder/hd-boot/grub/usr/lib/os-probes/mounted/05efi
new file mode 100755
index 00000000..93309ce3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/05efi
@@ -0,0 +1,71 @@
+#!/bin/sh
+# Detects all Microsoft OSes on a collection of partitions.
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+mpoint="$2"
+type="$3"
+
+# This file is for UEFI platform only
+if [ ! -d /sys/firmware/efi ] || [ -f /var/lib/partman/ignore_uefi ]; then
+ debug "Not on UEFI platform"
+ exit 1
+fi
+
+# Weed out stuff that doesn't apply to us
+case "$type" in
+ vfat) debug "$1 is a FAT32 partition" ;;
+ msdos) debug "$1 is a FAT16 partition" ;;
+ fat) debug "$1 is a FAT partition (mounted by GRUB)" ;;
+ *) debug "$1 is $type partition: exiting"; exit 1 ;;
+esac
+
+if type udevadm > /dev/null 2>&1; then
+ udevinfo () {
+ udevadm info "$@"
+ }
+fi
+
+if type udevinfo > /dev/null 2>&1; then
+ # Skip virtual devices
+ if udevinfo -q path -n $partition | grep -q /virtual/; then
+ debug "$1 is virtual device: exiting"
+ exit 1
+ fi
+
+ eval "$(udevinfo -q property -n "$partition" | grep -E '^ID_PART_ENTRY_(TYPE|SCHEME)=')"
+ debug "$partition partition scheme is $ID_PART_ENTRY_SCHEME"
+ debug "$partition partition type is $ID_PART_ENTRY_TYPE"
+
+ if [ -z "$ID_PART_ENTRY_TYPE" -o -z "$ID_PART_ENTRY_SCHEME" -o \
+ \( "$ID_PART_ENTRY_SCHEME" != gpt -a "$ID_PART_ENTRY_SCHEME" != msdos \) -o \
+ \( "$ID_PART_ENTRY_SCHEME" = gpt -a "$ID_PART_ENTRY_TYPE" != c12a7328-f81f-11d2-ba4b-00a0c93ec93b \) -o \
+ \( "$ID_PART_ENTRY_SCHEME" = msdos -a "$ID_PART_ENTRY_TYPE" != 0xef \) ]; then
+ debug "$partition is not a ESP partition: exiting"
+ exit 1
+ fi
+else
+ debug "udevinfo and udevadm missing - cannot check partition type"
+fi
+
+efi=$(item_in_dir efi "$mpoint")
+if [ -z "$efi" ]; then
+ debug "$mpoint does not have /EFI directory: exiting"
+ exit 1
+fi
+
+ret=1
+for test in /usr/lib/os-probes/mounted/efi/*; do
+ debug "running subtest $test"
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ entry=$("$test" "$mpoint/$efi")
+ if [ -n "$entry" ]; then
+ debug "bootloader $entry found by subtest $test"
+ ret=0
+ result "${partition}@/$efi/${entry}:efi"
+ fi
+ fi
+done
+
+exit $ret
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/10freedos b/builder/hd-boot/grub/usr/lib/os-probes/mounted/10freedos
new file mode 100755
index 00000000..94388f30
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/10freedos
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+mpoint="$2"
+type="$3"
+
+# Weed out stuff that doesn't apply to us
+case "$type" in
+ vfat) debug "$1 is a FAT32 partition" ;;
+ msdos) debug "$1 is a FAT16 partition" ;;
+ fat) debug "$1 is a FAT partition (mounted by GRUB)" ;;
+ *) debug "$1 is not a FAT partition: exiting"; exit 1 ;;
+esac
+
+if item_in_dir -q kernel.sys "$2" && item_in_dir -q command.com "$2"; then
+ label="$(count_next_label FreeDOS)"
+ result "$1:FreeDOS:$label:chain"
+ exit 0
+else
+ exit 1
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/10qnx b/builder/hd-boot/grub/usr/lib/os-probes/mounted/10qnx
new file mode 100755
index 00000000..8d40398f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/10qnx
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+mpoint="$2"
+type="$3"
+
+# Weed out stuff that doesn't apply to us
+case "$type" in
+ qnx4) debug "$partition is a QNX4 partition" ;;
+ *) debug "$partition is not a QNX4 partition: exiting"; exit 1 ;;
+esac
+
+if [ -e "$mpoint/.boot" ]; then
+ label="$(count_next_label QNX)"
+ result "$partition:QNX:$label:chain"
+ exit 0
+else
+ exit 1
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/20macosx b/builder/hd-boot/grub/usr/lib/os-probes/mounted/20macosx
new file mode 100755
index 00000000..dd4207fe
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/20macosx
@@ -0,0 +1,30 @@
+#!/bin/sh -e
+# Detects Mac OS X. I don't yet know how Mac OS <= 9 fits into this.
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+mpoint="$2"
+type="$3"
+
+debug() {
+ logger -t macosx-prober "debug: $@"
+}
+
+# Weed out stuff that doesn't apply to us
+case "$type" in
+ hfsplus) debug "$1 is an HFS+ partition" ;;
+ *) debug "$1 is not an HFS+ partition: exiting"; exit 1 ;;
+esac
+
+# Could use a better test than this.
+# /System/Library/CoreServices/SystemVersion.plist has version information,
+# but I don't think it exists on Mac OS <= 9, and it's XML so parsing in
+# shell will be nasty.
+
+if [ -e "$2/mach_kernel" ]; then
+ label="$(count_next_label MacOSX)"
+ result "$1:Mac OS X:$label:macosx"
+ exit 0
+else
+ exit 1
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/20microsoft b/builder/hd-boot/grub/usr/lib/os-probes/mounted/20microsoft
new file mode 100755
index 00000000..6fb3cc5d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/20microsoft
@@ -0,0 +1,115 @@
+#!/bin/sh
+# Detects all Microsoft OSes on a collection of partitions.
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+mpoint="$2"
+type="$3"
+
+# This script looks for legacy BIOS bootloaders only. Skip if running UEFI
+if [ -d /sys/firmware/efi ] && [ ! -f /var/lib/partman/ignore_uefi ]; then
+ debug "Skipping legacy bootloaders on UEFI system"
+ exit 1
+fi
+
+# Weed out stuff that doesn't apply to us
+case "$type" in
+ ntfs|ntfs-3g) debug "$1 is a NTFS partition" ;;
+ vfat) debug "$1 is a FAT32 partition" ;;
+ msdos) debug "$1 is a FAT16 partition" ;;
+ fat) debug "$1 is a FAT partition (mounted by GRUB)" ;;
+ fuse|fuseblk) debug "$1 is a FUSE partition" ;; # might be ntfs-3g
+ *) debug "$1 is not a MS partition: exiting"; exit 1 ;;
+esac
+
+found=
+# Vista (previously Longhorn)
+if item_in_dir -q bootmgr "$2"; then
+ # there might be different boot directories in different case as:
+ # boot Boot BOOT
+ for boot in $(item_in_dir boot "$2"); do
+ bcd=$(item_in_dir bcd "$2/$boot")
+ if [ -n "$bcd" ]; then
+ if grep -qs "W.i.n.d.o.w.s. .8" "$2/$boot/$bcd"; then
+ long="Windows 8 (loader)"
+ elif grep -qs "W.i.n.d.o.w.s. .7" "$2/$boot/$bcd"; then
+ long="Windows 7 (loader)"
+ elif grep -qs "W.i.n.d.o.w.s. .V.i.s.t.a" "$2/$boot/$bcd"; then
+ long="Windows Vista (loader)"
+ elif grep -qs "W.i.n.d.o.w.s. .S.e.r.v.e.r. .2.0.0.8. .R.2." "$2/$boot/$bcd"; then
+ long="Windows Server 2008 R2 (loader)"
+ elif grep -qs "W.i.n.d.o.w.s. .S.e.r.v.e.r. .2.0.0.8." "$2/$boot/$bcd"; then
+ long="Windows Server 2008 (loader)"
+ elif grep -qs "W.i.n.d.o.w.s. .R.e.c.o.v.e.r.y. .E.n.v.i.r.o.n.m.e.n.t" "$2/$boot/$bcd"; then
+ long="Windows Recovery Environment (loader)"
+ elif grep -qs "W.i.n.d.o.w.s. .S.e.t.u.p" "$2/$boot/$bcd"; then
+ long="Windows Recovery Environment (loader)"
+ else
+ long="Windows Vista (loader)"
+ fi
+ short=Windows
+
+ found=true
+
+ break
+ fi
+ done
+fi
+
+# 2000/XP/NT4.0
+if [ -z "$found" ] && item_in_dir -q ntldr "$2" && item_in_dir -q ntdetect.com "$2"; then
+ long="Windows NT/2000/XP"
+ short=Windows
+ ini=$(item_in_dir boot.ini "$2")
+ if [ -n "$ini" ]; then
+ multicount="$(grep -e "^multi" "$2/$ini" | wc -l)"
+ scsicount="$(grep -e "^scsi" "$2/$ini" | wc -l)"
+ msoscount="$(expr "${multicount}" + "${scsicount}")"
+ if [ "$msoscount" -eq 1 ]; then
+ # We need to remove a Carriage Return at the end of
+ # the line...
+ defaultmspart="$(grep -e "^default=" "$2/$ini" | cut -d '=' -f2 | tr -d '\r')"
+ # Escape any backslashes in defaultmspart
+ grepexp="^$(echo "$defaultmspart" | sed -e 's/\\/\\\\/')="
+ # Colons not allowed; replace by spaces
+ # Accented characters (non UTF-8) cause debconf to
+ # hang, so we fall back to the default if the name
+ # contains any weird characters.
+ long="$(grep -e "$grepexp" "$2/$ini" | cut -d '"' -f2 | \
+ tr ':' ' ' | LC_ALL=C grep -v '[^a-zA-Z0-9 &()/_-]')"
+ if [ -z "$long" ]; then
+ long="Windows NT/2000/XP"
+ fi
+ else
+ long="Windows NT/2000/XP (loader)"
+ fi
+
+ found=true
+ fi
+fi
+
+# MS-DOS
+if [ -z "$found" ] && item_in_dir -q dos "$2"; then
+ long="MS-DOS 5.x/6.x/Win3.1"
+ short=MS-DOS
+
+ found=true
+fi
+
+# 95/98/Me
+if [ -z "$found" ] && item_in_dir -q windows "$2" &&
+ item_in_dir -q win.com "$2"/"$(item_in_dir windows "$2")"; then
+ long="Windows 95/98/Me"
+ short=Windows9xMe
+
+ found=true
+fi
+
+if [ -z "$found" ]; then
+ exit 1
+fi
+
+label="$(count_next_label "$short")"
+result "${partition}:${long}:${label}:chain"
+exit 0
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/30utility b/builder/hd-boot/grub/usr/lib/os-probes/mounted/30utility
new file mode 100755
index 00000000..af48d307
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/30utility
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Detects utility (hw vendor recovery) partitions.
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+mpoint="$2"
+type="$3"
+
+# Weed out stuff that doesn't apply to us
+case "$type" in
+ vfat) debug "$1 is a FAT32 partition" ;;
+ msdos) debug "$1 is a FAT16 partition" ;;
+ fat) debug "$1 is a FAT partition (mounted by GRUB)" ;;
+ *) debug "$1 is not a FAT partition: exiting"; exit 1 ;;
+esac
+
+# Dell Utility partitions have partition type 0xde, but no idea how to
+# cleanly detect that from shell
+if item_in_dir -q dellbio.bin "$2" && \
+ (item_in_dir -q delldiag.exe "$2" || item_in_dir -q delldiag.com "$2"); then
+ long="Dell Utility Partition"
+ short=DellUtility
+elif item_in_dir -q f11.sys "$2"; then
+ long="Acronis Secure Zone"
+ short=AcroneZone
+else
+ exit 1
+fi
+
+label="$(count_next_label "$short")"
+result "${partition}:${long}:${label}:chain"
+exit 0
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/40lsb b/builder/hd-boot/grub/usr/lib/os-probes/mounted/40lsb
new file mode 100755
index 00000000..ce8d4e1f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/40lsb
@@ -0,0 +1,48 @@
+#!/bin/sh
+# Test for LSB systems.
+set -e
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+dir="$2"
+type="$3"
+
+lsb_field () {
+ file="$1"
+ field="$2"
+ grep ^"$field" "$file" | cut -d = -f 2 | sed 's/^"//' | sed 's/"$//' | sed 's/:/ /g'
+}
+
+file="$dir/etc/lsb-release"
+if [ ! -e "$file" ]; then
+ exit 1
+fi
+
+release=$(lsb_field "$file" DISTRIB_RELEASE)
+if [ -z "$release" ]; then
+ release=$(lsb_field "$file" DISTRIB_CODENAME)
+fi
+description=$(lsb_field "$file" DISTRIB_DESCRIPTION)
+if [ -z "$description" ]; then
+ description=$(lsb_field "$file" DISTRIB_CODENAME)
+fi
+
+if [ -n "$description" ]; then
+ if [ -n "$release" ]; then
+ long="$description ($release)"
+ else
+ long="$description"
+ fi
+else
+ exit 1
+fi
+
+short=$(lsb_field "$file" DISTRIB_ID | sed 's/ //g')
+if [ -z "$short" ]; then
+ short="UnknownLSB"
+fi
+
+label="$(count_next_label "$short")"
+result "$partition:$long:$label:linux"
+exit 0
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/70hurd b/builder/hd-boot/grub/usr/lib/os-probes/mounted/70hurd
new file mode 100755
index 00000000..ffc0a44b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/70hurd
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -e
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+dir="$2"
+type="$3"
+
+if [ -e "$dir/servers/exec" ] && [ -x "$dir/hurd/init" ]; then
+ label="$(count_next_label Hurd)"
+ result "$partition:GNU/Hurd:$label:hurd"
+ exit 0
+else
+ exit 1
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/80minix b/builder/hd-boot/grub/usr/lib/os-probes/mounted/80minix
new file mode 100755
index 00000000..e01f6695
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/80minix
@@ -0,0 +1,28 @@
+#!/bin/sh
+set -e
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+dir="$2"
+type="$3"
+
+# Weed out stuff that doesn't apply to us
+case "$type" in
+ minix|minix2|ext2) ;;
+ *) exit 1 ;;
+esac
+
+if [ -f "$dir/minix" ] || [ -e "$dir/boot/image_big" ]; then
+ if [ -e "$dir/boot/image_latest" ]; then
+ boot="minix"
+ else
+ boot="chain"
+ fi
+
+ label="$(count_next_label Minix)"
+ result "$partition:Minix:$label:$boot"
+ exit 0
+else
+ exit 1
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/83haiku b/builder/hd-boot/grub/usr/lib/os-probes/mounted/83haiku
new file mode 100755
index 00000000..6de7a1d4
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/83haiku
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Detects Haiku on BeFS partitions.
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+mpoint="$2"
+type="$3"
+
+# Weed out stuff that doesn't apply to us
+case "$type" in
+ befs|befs_be) debug "$partition is a BeFS partition" ;;
+ *) debug "$partition is not a BeFS partition: exiting"; exit 1 ;;
+esac
+
+if head -c 512 "$partition" | grep -qs "system.haiku_loader"; then
+ debug "Stage 1 bootloader found"
+else
+ debug "Stage 1 bootloader not found: exiting"
+ exit 1
+fi
+
+if system="$(item_in_dir "system" "$mpoint")" &&
+ item_in_dir -q "haiku_loader" "$mpoint/$system" &&
+ (item_in_dir -q "kernel_x86" "$mpoint/$system" ||
+ item_in_dir -q "kernel_x86_64" "$mpoint/$system")
+then
+ debug "Stage 2 bootloader and kernel found"
+ label="$(count_next_label Haiku)"
+ result "$partition:Haiku:$label:chain"
+ exit 0
+else
+ debug "Stage 2 bootloader and kernel not found: exiting"
+ exit 1
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/90linux-distro b/builder/hd-boot/grub/usr/lib/os-probes/mounted/90linux-distro
new file mode 100755
index 00000000..6678f22e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/90linux-distro
@@ -0,0 +1,138 @@
+#!/bin/sh
+# Test for linux distributions.
+set -e
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+dir="$2"
+type="$3"
+
+# This test is inaccurate, but given separate / and /boot partitions and the
+# fact that only some architectures have ld-linux.so, I can't see anything
+# better. Make sure this test has a high number so that more accurate tests
+# can come first.
+# Unless volumes to checked are already mounted, they will be mounted using
+# GRUB's own filesystems through FUSE. Since these ATM doesn't support
+# symlinks we need to also check in $dir/usr/lib* for distributions that
+# moved /lib* to /usr and only left symlinks behind.
+# TODO: look for ld-linux.so on arches that have it
+if (ls "$dir"/lib*/ld*.so* || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
+ if [ -e "$dir/etc/debian_version" ]; then
+ short="Debian"
+ long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")"
+ # RPM derived distributions may also have a redhat-release or
+ # mandrake-release, so check their files first.
+ elif [ -e "$dir/etc/altlinux-release" ]; then
+ short="ALTLinux"
+ long="$(cat "$dir/etc/altlinux-release")"
+ elif [ -e "$dir/etc/magic-release" ]; then
+ short="Magic"
+ long="$(cat "$dir/etc/magic-release")"
+ elif [ -e "$dir/etc/blackPanther-release" ]; then
+ short="blackPanther"
+ long="$(cat "$dir/etc/blackPanther-release")"
+ elif [ -e "$dir/etc/ark-release" ]; then
+ short="Ark"
+ long="$(cat "$dir/etc/ark-release")"
+ elif [ -e "$dir/etc/arch-release" ]; then
+ short="Arch"
+ long="$(cat "$dir/etc/arch-release")"
+ elif [ -e "$dir/etc/asplinux-release" ]; then
+ short="ASPLinux"
+ long="$(cat "$dir/etc/asplinux-release")"
+ elif [ -e "$dir/etc/lvr-release" ]; then
+ short="LvR"
+ long="$(cat "$dir/etc/lvr-release")"
+ elif [ -e "$dir/etc/caos-release" ]; then
+ short="cAos"
+ long="$(cat "$dir/etc/caos-release")"
+ elif [ -e "$dir/etc/aurox-release" ]; then
+ short="Aurox"
+ long="$(cat "$dir/etc/aurox-release")"
+ elif [ -e "$dir/etc/engarde-release" ]; then
+ short="EnGarde"
+ long="$(cat "$dir/etc/engarde-release")"
+ elif [ -e "$dir/etc/vine-release" ]; then
+ short="Vine"
+ long="$(cat "$dir/etc/vine-release")"
+ elif [ -e "$dir/etc/whitebox-release" ]; then
+ short="WhiteBox"
+ long="$(cat "$dir/etc/whitebox-release")"
+ elif [ -e "$dir/etc/pld-release" ]; then
+ short="PLD"
+ long="$(cat "$dir/etc/pld-release")"
+ elif [ -e "$dir/etc/startcom-release" ]; then
+ short="StartCom"
+ long="$(cat "$dir/etc/startcom-release")"
+ elif [ -e "$dir/etc/trustix-release" ]; then
+ short="Trustix"
+ long="$(cat "$dir/etc/trustix-release")"
+ elif [ -e "$dir/etc/openna-release" ]; then
+ short="OpenNA"
+ long="$(cat "$dir/etc/openna-release")"
+ elif [ -e "$dir/etc/conectiva-release" ]; then
+ short="Conectiva"
+ long="$(cat "$dir/etc/conectiva-release")"
+ elif [ -e "$dir/etc/mandrake-release" ]; then
+ short="Mandrake"
+ long="$(cat "$dir/etc/mandrake-release")"
+ elif [ -e "$dir/etc/fedora-release" ]; then
+ short="Fedora"
+ long="$(cat "$dir/etc/fedora-release")"
+ elif [ -e "$dir/etc/redhat-release" ]; then
+ short="RedHat"
+ long="$(cat "$dir/etc/redhat-release")"
+ elif [ -e "$dir/etc/SuSE-release" ]; then
+ short="SuSE"
+ long="$(head -n 1 "$dir/etc/SuSE-release")"
+ elif [ -e "$dir/etc/gentoo-release" ]; then
+ short="Gentoo"
+ long="$(cat "$dir/etc/gentoo-release")"
+ elif [ -e "$dir/etc/cobalt-release" ]; then
+ short="Cobalt"
+ long="$(cat "$dir/etc/cobalt-release")"
+ elif [ -e "$dir/etc/yellowdog-release" ]; then
+ short="YellowDog"
+ long="$(cat "$dir/etc/yellowdog-release")"
+ elif [ -e "$dir/etc/turbolinux-release" ]; then
+ short="Turbolinux"
+ long="$(cat "$dir/etc/turbolinux-release")"
+ elif [ -e "$dir/etc/pardus-release" ]; then
+ short="Pardus"
+ long="$(cat "$dir/etc/pardus-release")"
+ elif [ -e "$dir/etc/kanotix-version" ]; then
+ short="Kanotix"
+ long="$(cat "$dir/etc/kanotix-version")"
+ elif [ -e "$dir/etc/slackware-version" ]; then
+ short="Slackware"
+ long="$(printf "Slackware Linux (%s)\n" "$(cat "$dir/etc/slackware-version")")"
+ elif [ -e "$dir/sbin/pkgtool" ]; then
+ short="Slackware"
+ long="Slackware Linux"
+ elif grep -qs OpenLinux "$dir/etc/issue"; then
+ short="Caldera"
+ long="Caldera OpenLinux"
+ elif [ -e "$dir/etc/frugalware-release" ]; then
+ short="Frugalware Linux"
+ long="$(cat "$dir/etc/frugalware-release")"
+ elif [ -e "$dir/etc/kdemar-release" ]; then
+ short="K-DEMar"
+ long="$(printf "K-DEMar GNU/Linux (%s)\n" "$(cat "$dir/etc/kdemar-release")")"
+ elif [ -e "$dir/etc/lfs-release" ]; then
+ short="LFS"
+ long="$(printf "Linux From Scratch (%s)\n" "$(cat "$dir/etc/lfs-release")")"
+ elif [ -e "$dir/etc/meego-release" ]; then
+ short="MeeGo"
+ long="$(head -1 "$dir/etc/meego-release")"
+ else
+ short="Linux"
+ long="unknown Linux distribution"
+ fi
+
+ label="$(count_next_label "$short")"
+ result "$partition:$long:$label:linux"
+ exit 0
+else
+ exit 1
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/90solaris b/builder/hd-boot/grub/usr/lib/os-probes/mounted/90solaris
new file mode 100755
index 00000000..0e9148ce
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/90solaris
@@ -0,0 +1,19 @@
+#!/bin/sh
+# Attempt to check if solaris is installed in this system
+# looking at the /etc/system parameters file and /etc/vfstab.
+
+set -e
+
+. /usr/share/os-prober/common.sh
+
+partition="$1"
+dir="$2"
+type="$3"
+
+if [ -f "$dir/etc/system" ] && [ -f "$dir/etc/vfstab" ]; then
+ label="$(count_next_label Solaris)"
+ result "$partition:Solaris/IA32:$label:chain"
+ exit 0
+else
+ exit 1
+fi
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/efi/10elilo b/builder/hd-boot/grub/usr/lib/os-probes/mounted/efi/10elilo
new file mode 100755
index 00000000..72dc4627
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/efi/10elilo
@@ -0,0 +1,24 @@
+#!/bin/sh
+# Detects ELILO bootloader on a EFI System Partition
+
+. /usr/share/os-prober/common.sh
+
+efi="$1"
+
+found=
+
+elilo=`find $1 -name "elilo.efi"`
+if [ -n "$elilo" ]; then
+ bdir=`dirname $elilo`
+ bdir=`basename $bdir`
+ long="ELILO Boot Manager"
+ short="ELILO"
+ path=${bdir}/elilo.efi
+ found=true
+fi
+
+if [ -n "$found" ]; then
+ label="$(count_next_label "$short")"
+ result "${path}:${long}:${label}"
+fi
+exit 0
diff --git a/builder/hd-boot/grub/usr/lib/os-probes/mounted/efi/20microsoft b/builder/hd-boot/grub/usr/lib/os-probes/mounted/efi/20microsoft
new file mode 100755
index 00000000..95320814
--- /dev/null
+++ b/builder/hd-boot/grub/usr/lib/os-probes/mounted/efi/20microsoft
@@ -0,0 +1,28 @@
+#!/bin/sh
+# Detects Microsoft bootloader on a EFI System Partition
+
+. /usr/share/os-prober/common.sh
+
+efi="$1"
+
+found=
+for microsoft in $(item_in_dir microsoft "$efi"); do
+ for boot in $(item_in_dir boot "$efi/$microsoft"); do
+ bcd=$(item_in_dir bcd "$efi/$microsoft/$boot")
+ bootmgfw=$(item_in_dir bootmgfw.efi "$efi/$microsoft/$boot")
+ if [ -n "$bcd" -a -n "$bootmgfw" ]; then
+ long="Windows Boot Manager"
+ short=Windows
+ path="$microsoft/$boot/$bootmgfw"
+ found=true
+ break
+ fi
+ done
+done
+
+
+if [ -n "$found" ]; then
+ label="$(count_next_label "$short")"
+ result "${path}:${long}:${label}"
+fi
+exit 0
diff --git a/builder/hd-boot/grub/usr/sbin/grub-bios-setup b/builder/hd-boot/grub/usr/sbin/grub-bios-setup
new file mode 120000
index 00000000..3e8e944d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/sbin/grub-bios-setup
@@ -0,0 +1 @@
+../lib/grub/i386-pc/grub-bios-setup \ No newline at end of file
diff --git a/builder/hd-boot/grub/usr/sbin/grub-install b/builder/hd-boot/grub/usr/sbin/grub-install
new file mode 100755
index 00000000..e9261bfe
--- /dev/null
+++ b/builder/hd-boot/grub/usr/sbin/grub-install
Binary files differ
diff --git a/builder/hd-boot/grub/usr/sbin/grub-macbless b/builder/hd-boot/grub/usr/sbin/grub-macbless
new file mode 100755
index 00000000..1b35b80f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/sbin/grub-macbless
Binary files differ
diff --git a/builder/hd-boot/grub/usr/sbin/grub-mkconfig b/builder/hd-boot/grub/usr/sbin/grub-mkconfig
new file mode 100755
index 00000000..524e998c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/sbin/grub-mkconfig
@@ -0,0 +1,306 @@
+#! /bin/sh
+set -e
+
+# Generate grub.cfg by inspecting /boot contents.
+# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+
+prefix="/usr"
+exec_prefix="/usr"
+sbindir="${exec_prefix}/sbin"
+bindir="${exec_prefix}/bin"
+sysconfdir="/etc"
+PACKAGE_NAME=GRUB
+PACKAGE_VERSION=2.02~beta2-22
+host_os=linux-gnu
+datadir="${datarootdir}"
+if [ "x$pkgdatadir" = x ]; then
+ pkgdatadir="${datadir}/grub"
+fi
+grub_cfg=""
+grub_mkconfig_dir="${sysconfdir}"/grub.d
+
+self=`basename $0`
+
+grub_probe="${sbindir}/grub-probe"
+grub_file="${bindir}/grub-file"
+grub_editenv="${bindir}/grub-editenv"
+grub_script_check="${bindir}/grub-script-check"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "${pkgdatadir}/grub-mkconfig_lib"
+
+# Usage: usage
+# Print the usage.
+usage () {
+ gettext_printf "Usage: %s [OPTION]\n" "$self"
+ gettext "Generate a grub config file"; echo
+ echo
+ print_option_help "-o, --output=$(gettext FILE)" "$(gettext "output generated config to FILE [default=stdout]")"
+ print_option_help "-h, --help" "$(gettext "print this message and exit")"
+ print_option_help "-v, --version" "$(gettext "print the version information and exit")"
+ echo
+ gettext "Report bugs to <bug-grub@gnu.org>."; echo
+}
+
+argument () {
+ opt=$1
+ shift
+
+ if test $# -eq 0; then
+ gettext_printf "%s: option requires an argument -- \`%s'\n" "$self" "$opt" 1>&2
+ exit 1
+ fi
+ echo $1
+}
+
+# Check the arguments.
+while test $# -gt 0
+do
+ option=$1
+ shift
+
+ case "$option" in
+ -h | --help)
+ usage
+ exit 0 ;;
+ -v | --version)
+ echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}"
+ exit 0 ;;
+ -o | --output)
+ grub_cfg=`argument $option "$@"`;
+ path_to_dev="${grub_cfg:1}"; path_to_dev="/${path_to_dev%%/*}";
+ shift
+ ;;
+ --output=*)
+ grub_cfg=`echo "$option" | sed 's/--output=//'`
+ ;;
+ -*)
+ gettext_printf "Unrecognized option \`%s'\n" "$option" 1>&2
+ usage
+ exit 1
+ ;;
+ # Explicitly ignore non-option arguments, for compatibility.
+ esac
+done
+
+if fgrep -qs '${GRUB_PREFIX}/video.lst' "${grub_mkconfig_dir}/00_header"; then
+ echo "GRUB >= 2.00 has been unpacked but not yet configured." >&2
+ echo "grub-mkconfig will not work until the upgrade is complete." >&2
+ echo "It should run later as part of configuring the new GRUB packages." >&2
+ exit 0
+fi
+
+if [ "x$EUID" = "x" ] ; then
+ EUID=`id -u`
+fi
+
+if [ "$EUID" != 0 ] ; then
+ root=f
+ case "`uname 2>/dev/null`" in
+ CYGWIN*)
+ # Cygwin: Assume root if member of admin group
+ for g in `id -G 2>/dev/null` ; do
+ case $g in
+ 0|544) root=t ;;
+ esac
+ done ;;
+ esac
+ if [ $root != t ] ; then
+ gettext_printf "%s: You must run this as root\n" "$self" >&2
+ exit 1
+ fi
+fi
+
+set $grub_probe dummy
+if test -f "$1"; then
+ :
+else
+ gettext_printf "%s: Not found.\n" "$1" 1>&2
+ exit 1
+fi
+
+# Device containing our userland. Typically used for root= parameter.
+
+GRUB_DEVICE="`${grub_probe} --target=device $path_to_dev`"
+GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true
+
+# Device containing our /boot partition. Usually the same as GRUB_DEVICE.
+GRUB_DEVICE_BOOT="`${grub_probe} --target=device /boot`"
+GRUB_DEVICE_BOOT_UUID="`${grub_probe} --device ${GRUB_DEVICE_BOOT} --target=fs_uuid 2> /dev/null`" || true
+
+# Filesystem for the device containing our userland. Used for stuff like
+# choosing Hurd filesystem module.
+GRUB_FS="`${grub_probe} --device ${GRUB_DEVICE} --target=fs 2> /dev/null || echo unknown`"
+
+if [ x"$GRUB_FS" = xunknown ]; then
+ GRUB_FS="$(stat -f --printf=%T / || echo unknown)"
+fi
+
+if test -f ${sysconfdir}/default/grub ; then
+ . ${sysconfdir}/default/grub
+fi
+for x in ${sysconfdir}/default/grub.d/*.cfg ; do
+ if [ -e "${x}" ]; then
+ . "${x}"
+ fi
+done
+
+# XXX: should this be deprecated at some point?
+if [ "x${GRUB_TERMINAL}" != "x" ] ; then
+ GRUB_TERMINAL_INPUT="${GRUB_TERMINAL}"
+ GRUB_TERMINAL_OUTPUT="${GRUB_TERMINAL}"
+fi
+
+termoutdefault=0
+if [ "x${GRUB_TERMINAL_OUTPUT}" = "x" ]; then
+ GRUB_TERMINAL_OUTPUT=gfxterm;
+ termoutdefault=1;
+fi
+
+for x in ${GRUB_TERMINAL_OUTPUT}; do
+ case "x${x}" in
+ xgfxterm) ;;
+ xconsole | xserial | xofconsole | xvga_text)
+ # make sure all our children behave in conformance with ascii..
+ export LANG=C;;
+ *) echo "Invalid output terminal \"${GRUB_TERMINAL_OUTPUT}\"" >&2 ; exit 1 ;;
+ esac
+done
+
+GRUB_ACTUAL_DEFAULT="$GRUB_DEFAULT"
+
+if [ "x${GRUB_ACTUAL_DEFAULT}" = "xsaved" ] ; then GRUB_ACTUAL_DEFAULT="`"${grub_editenv}" - list | sed -n '/^saved_entry=/ s,^saved_entry=,,p'`" ; fi
+
+if [ "x${GRUB_RECOVERY_TITLE}" = "x" ]; then
+ GRUB_RECOVERY_TITLE="recovery mode"
+fi
+
+
+# These are defined in this script, export them here so that user can
+# override them.
+export GRUB_DEVICE \
+ GRUB_DEVICE_UUID \
+ GRUB_DEVICE_BOOT \
+ GRUB_DEVICE_BOOT_UUID \
+ GRUB_FS \
+ GRUB_FONT \
+ GRUB_PRELOAD_MODULES \
+ GRUB_ACTUAL_DEFAULT
+
+# These are optional, user-defined variables.
+export GRUB_DEFAULT \
+ GRUB_HIDDEN_TIMEOUT \
+ GRUB_HIDDEN_TIMEOUT_QUIET \
+ GRUB_TIMEOUT \
+ GRUB_TIMEOUT_STYLE \
+ GRUB_DEFAULT_BUTTON \
+ GRUB_HIDDEN_TIMEOUT_BUTTON \
+ GRUB_TIMEOUT_BUTTON \
+ GRUB_TIMEOUT_STYLE_BUTTON \
+ GRUB_BUTTON_CMOS_ADDRESS \
+ GRUB_BUTTON_CMOS_CLEAN \
+ GRUB_DISTRIBUTOR \
+ GRUB_CMDLINE_LINUX \
+ GRUB_CMDLINE_LINUX_DEFAULT \
+ GRUB_CMDLINE_XEN \
+ GRUB_CMDLINE_XEN_DEFAULT \
+ GRUB_CMDLINE_LINUX_XEN_REPLACE \
+ GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT \
+ GRUB_CMDLINE_NETBSD \
+ GRUB_CMDLINE_NETBSD_DEFAULT \
+ GRUB_CMDLINE_GNUMACH \
+ GRUB_TERMINAL_INPUT \
+ GRUB_TERMINAL_OUTPUT \
+ GRUB_SERIAL_COMMAND \
+ GRUB_DISABLE_LINUX_UUID \
+ GRUB_DISABLE_RECOVERY \
+ GRUB_VIDEO_BACKEND \
+ GRUB_GFXMODE \
+ GRUB_BACKGROUND \
+ GRUB_THEME \
+ GRUB_GFXPAYLOAD_LINUX \
+ GRUB_DISABLE_OS_PROBER \
+ GRUB_INIT_TUNE \
+ GRUB_SAVEDEFAULT \
+ GRUB_ENABLE_CRYPTODISK \
+ GRUB_BADRAM \
+ GRUB_OS_PROBER_SKIP_LIST \
+ GRUB_DISABLE_SUBMENU \
+ GRUB_RECORDFAIL_TIMEOUT \
+ GRUB_RECOVERY_TITLE
+
+if test "x${grub_cfg}" != "x"; then
+ rm -f "${grub_cfg}.new"
+ oldumask=$(umask); umask 077
+ exec > "${grub_cfg}.new"
+ umask $oldumask
+fi
+gettext "Generating grub configuration file ..." >&2
+echo >&2
+
+cat << EOF
+#
+# DO NOT EDIT THIS FILE
+#
+# It is automatically generated by $self using templates
+# from ${grub_mkconfig_dir} and settings from ${sysconfdir}/default/grub
+#
+EOF
+
+
+for i in "${grub_mkconfig_dir}"/* ; do
+ case "$i" in
+ # emacsen backup files. FIXME: support other editors
+ *~) ;;
+ # emacsen autosave files. FIXME: support other editors
+ */\#*\#) ;;
+ *)
+ if grub_file_is_not_garbage "$i" && test -x "$i" ; then
+ echo
+ echo "### BEGIN $i ###"
+ "$i"
+ echo "### END $i ###"
+ fi
+ ;;
+ esac
+done
+
+if [ "x${grub_cfg}" != "x" ] && ! grep "^password" ${grub_cfg}.new >/dev/null; then
+ chmod 444 ${grub_cfg}.new || true
+fi
+
+if test "x${grub_cfg}" != "x" ; then
+ if ! ${grub_script_check} ${grub_cfg}.new; then
+ # TRANSLATORS: %s is replaced by filename
+ gettext_printf "Syntax errors are detected in generated GRUB config file.
+Ensure that there are no errors in /etc/default/grub
+and /etc/grub.d/* files or please file a bug report with
+%s file attached." "${grub_cfg}.new" >&2
+ echo >&2
+ else
+ # none of the children aborted with error, install the new grub.cfg
+ mv -f ${grub_cfg}.new ${grub_cfg}
+ fi
+fi
+
+gettext "done" >&2
+echo >&2
diff --git a/builder/hd-boot/grub/usr/sbin/grub-mkdevicemap b/builder/hd-boot/grub/usr/sbin/grub-mkdevicemap
new file mode 100755
index 00000000..690f3bbe
--- /dev/null
+++ b/builder/hd-boot/grub/usr/sbin/grub-mkdevicemap
Binary files differ
diff --git a/builder/hd-boot/grub/usr/sbin/grub-probe b/builder/hd-boot/grub/usr/sbin/grub-probe
new file mode 100755
index 00000000..e42cb79b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/sbin/grub-probe
Binary files differ
diff --git a/builder/hd-boot/grub/usr/sbin/grub-reboot b/builder/hd-boot/grub/usr/sbin/grub-reboot
new file mode 100755
index 00000000..a4df4b7d
--- /dev/null
+++ b/builder/hd-boot/grub/usr/sbin/grub-reboot
@@ -0,0 +1,144 @@
+#! /bin/sh
+#
+# Set a default boot entry for GRUB, for the next boot only.
+# Copyright (C) 2004,2009 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+# Initialize some variables.
+prefix=/usr
+exec_prefix=/usr
+bindir=${exec_prefix}/bin
+sysconfdir="/etc"
+PACKAGE_NAME=GRUB
+PACKAGE_VERSION=2.02~beta2-22
+datarootdir="/usr/share"
+datadir="${datarootdir}"
+if [ "x$pkgdatadir" = x ]; then
+ pkgdatadir="${datadir}/grub"
+fi
+
+self=`basename $0`
+
+grub_editenv=${bindir}/grub-editenv
+rootdir=
+bootdir=
+grubdir=`echo "/boot/grub" | sed 's,//*,/,g'`
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "${pkgdatadir}/grub-mkconfig_lib"
+
+# Usage: usage
+# Print the usage.
+usage () {
+ gettext_printf "Usage: %s [OPTION] MENU_ENTRY\n" "$self"
+ gettext "Set the default boot menu entry for GRUB, for the next boot only."; echo
+ print_option_help "-h, --help" "$(gettext "print this message and exit")"
+ print_option_help "-v, --version" "$(gettext "print the version information and exit")"
+ dirmsg="$(gettext_printf "expect GRUB images under the directory DIR/%s instead of the %s directory" "grub" "$grubdir")"
+ print_option_help "--boot-directory=$(gettext "DIR")" "$dirmsg"
+ echo
+ gettext "MENU_ENTRY is a number, a menu item title or a menu item identifier. Please note that menu items in
+submenus or sub-submenus require specifying the submenu components and then the
+menu item component. The titles should be separated using the greater-than
+character (>) with no extra spaces. Depending on your shell some characters including > may need escaping. More information about this is available
+in the GRUB Manual in the section about the 'default' command. "; echo
+ echo
+ gettext "Report bugs to <bug-grub@gnu.org>."; echo
+}
+
+argument () {
+ opt=$1
+ shift
+
+ if test $# -eq 0; then
+ gettext_printf "%s: option requires an argument -- \`%s'\n" "$self" "$opt" 1>&2
+ exit 1
+ fi
+ echo $1
+}
+
+# Check the arguments.
+while test $# -gt 0
+do
+ option=$1
+ shift
+
+ case "$option" in
+ -h | --help)
+ usage
+ exit 0 ;;
+ -v | --version)
+ echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}"
+ exit 0 ;;
+
+# Accept for compatibility
+ --root-directory)
+ rootdir=`argument $option "$@"`; shift ;;
+ --root-directory=*)
+ rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
+
+ --boot-directory)
+ bootdir=`argument $option "$@"`; shift;;
+ --boot-directory=*)
+ bootdir=`echo "$option" | sed 's/--boot-directory=//'` ;;
+
+ -*)
+ gettext_printf "Unrecognized option \`%s'\n" "$option" 1>&2
+ usage
+ exit 1
+ ;;
+ *)
+ if test "x$entry" != x; then
+ gettext "More than one menu entry?" 1>&2
+ echo >&2
+ usage
+ exit 1
+ fi
+ entry="${option}" ;;
+ esac
+done
+
+if test "x$entry" = x; then
+ gettext "Menu entry not specified." 1>&2
+ echo >&2
+ usage
+ exit 1
+fi
+
+if [ -z "$bootdir" ]; then
+ # Default bootdir if bootdir not initialized.
+ bootdir=/boot
+
+ if [ -n "$rootdir" ] ; then
+ # Initialize bootdir if rootdir was initialized.
+ bootdir=${rootdir}/boot
+ fi
+fi
+
+grubdir=`echo "${bootdir}/grub" | sed 's,//*,/,g'`
+
+# Restore saved_entry if it was set by previous version
+prev_saved_entry=`$grub_editenv ${grubdir}/grubenv list | sed -n 's/^prev_saved_entry=//p'`
+if [ "$prev_saved_entry" ]; then
+ $grub_editenv ${grubdir}/grubenv set saved_entry="$prev_saved_entry"
+ $grub_editenv ${grubdir}/grubenv unset prev_saved_entry
+fi
+
+$grub_editenv ${grubdir}/grubenv set next_entry="$entry"
+
+# Bye.
+exit 0
diff --git a/builder/hd-boot/grub/usr/sbin/grub-set-default b/builder/hd-boot/grub/usr/sbin/grub-set-default
new file mode 100755
index 00000000..806d0367
--- /dev/null
+++ b/builder/hd-boot/grub/usr/sbin/grub-set-default
@@ -0,0 +1,137 @@
+#! /bin/sh
+#
+# Set a default boot entry for GRUB.
+# Copyright (C) 2004,2009 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+# Initialize some variables.
+prefix=/usr
+exec_prefix=/usr
+bindir=${exec_prefix}/bin
+sysconfdir="/etc"
+PACKAGE_NAME=GRUB
+PACKAGE_VERSION=2.02~beta2-22
+datarootdir="/usr/share"
+datadir="${datarootdir}"
+if [ "x$pkgdatadir" = x ]; then
+ pkgdatadir="${datadir}/grub"
+fi
+
+self=`basename $0`
+
+grub_editenv=${bindir}/grub-editenv
+rootdir=
+bootdir=
+grubdir=`echo "/boot/grub" | sed 's,//*,/,g'`
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+. "${pkgdatadir}/grub-mkconfig_lib"
+
+# Usage: usage
+# Print the usage.
+usage () {
+ gettext_printf "Usage: %s [OPTION] MENU_ENTRY\n" "$self"
+ gettext "Set the default boot menu entry for GRUB."; echo
+ gettext_printf "This requires setting GRUB_DEFAULT=saved in %s/default/grub.\n" "$sysconfdir"
+ echo
+ print_option_help "-h, --help" "$(gettext "print this message and exit")"
+ print_option_help "-v, --version" "$(gettext "print the version information and exit")"
+ dirmsg="$(gettext_printf "expect GRUB images under the directory DIR/%s instead of the %s directory" "grub" "$grubdir")"
+ print_option_help "--boot-directory=$(gettext "DIR")" "$dirmsg"
+ echo
+ gettext "MENU_ENTRY is a number, a menu item title or a menu item identifier."; echo
+ echo
+ gettext "Report bugs to <bug-grub@gnu.org>."; echo
+}
+
+argument () {
+ opt=$1
+ shift
+
+ if test $# -eq 0; then
+ gettext_printf "%s: option requires an argument -- \`%s'\n" "$self" "$opt" 1>&2
+ exit 1
+ fi
+ echo $1
+}
+
+# Check the arguments.
+while test $# -gt 0
+do
+ option=$1
+ shift
+
+ case "$option" in
+ -h | --help)
+ usage
+ exit 0 ;;
+ -v | --version)
+ echo "$self (${PACKAGE_NAME}) ${PACKAGE_VERSION}"
+ exit 0 ;;
+
+# Accept for compatibility
+ --root-directory)
+ rootdir=`argument $option "$@"`; shift ;;
+ --root-directory=*)
+ rootdir=`echo "$option" | sed 's/--root-directory=//'` ;;
+
+ --boot-directory)
+ bootdir=`argument $option "$@"`; shift;;
+ --boot-directory=*)
+ bootdir=`echo "$option" | sed 's/--boot-directory=//'` ;;
+
+ -*)
+ gettext_printf "Unrecognized option \`%s'\n" "$option" 1>&2
+ usage
+ exit 1
+ ;;
+ *)
+ if test "x$entry" != x; then
+ gettext "More than one menu entry?" 1>&2
+ echo >&2
+ usage
+ exit 1
+ fi
+ entry="${option}" ;;
+ esac
+done
+
+if test "x$entry" = x; then
+ gettext "Menu entry not specified." 1>&2
+ echo >&2
+ usage
+ exit 1
+fi
+
+if [ -z "$bootdir" ]; then
+ # Default bootdir if bootdir not initialized.
+ bootdir=/boot
+
+ if [ -n "$rootdir" ] ; then
+ # Initialize bootdir if rootdir was initialized.
+ bootdir=${rootdir}/boot
+ fi
+fi
+
+grubdir=`echo "${bootdir}/grub" | sed 's,//*,/,g'`
+
+$grub_editenv ${grubdir}/grubenv unset prev_saved_entry
+$grub_editenv ${grubdir}/grubenv unset next_entry
+$grub_editenv ${grubdir}/grubenv set saved_entry="$entry"
+
+# Bye.
+exit 0
diff --git a/builder/hd-boot/grub/usr/share/grub/ascii.h b/builder/hd-boot/grub/usr/share/grub/ascii.h
new file mode 100644
index 00000000..0dab216a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/grub/ascii.h
@@ -0,0 +1,132 @@
+/* THIS CHUNK OF BYTES IS AUTOMATICALLY GENERATED */
+unsigned char ascii_bitmaps[] =
+{
+0x80, 0x00, 0x80, 0x4a, 0xea, 0x5a, 0xc9, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x39, 0xc2, 0x32, 0x8a, 0x71, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x3b, 0xc1, 0x31, 0x89, 0x71, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x7b, 0xc1, 0x79, 0xc1, 0x79, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x79, 0xc2, 0x7a, 0xc2, 0x79, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x7a, 0xc2, 0x7b, 0xc2, 0x7a, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x31, 0xca, 0x7a, 0xca, 0x49, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x73, 0xca, 0x73, 0xca, 0x73, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x1e, 0x91, 0x1e, 0x91, 0x1e, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x22, 0xa2, 0x3e, 0xa2, 0x22, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x20, 0xa0, 0x20, 0xa0, 0x3e, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x22, 0xa2, 0x22, 0x94, 0x08, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x3e, 0xa0, 0x3e, 0xa0, 0x20, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x1e, 0xa0, 0x20, 0xa0, 0x1e, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x1e, 0xa0, 0x1c, 0x82, 0x3c, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x1e, 0xa0, 0x1c, 0x82, 0x3c, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x39, 0xa5, 0x25, 0xa5, 0x39, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x71, 0xca, 0x4a, 0xca, 0x71, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x71, 0xca, 0x4a, 0xca, 0x71, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x71, 0xca, 0x4a, 0xca, 0x71, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x71, 0xca, 0x4a, 0xca, 0x71, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x49, 0xea, 0x6a, 0xdb, 0x4a, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x34, 0xc2, 0x31, 0x89, 0x71, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x7b, 0xc1, 0x79, 0xc1, 0x79, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x33, 0xc4, 0x47, 0xc4, 0x34, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x3e, 0xa0, 0x3e, 0xa0, 0x3e, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x3a, 0xc2, 0x32, 0x8a, 0x71, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x79, 0xc2, 0x79, 0xc0, 0x7b, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x1e, 0x90, 0x1e, 0x90, 0x10, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x0e, 0x90, 0x16, 0x92, 0x0e, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x1c, 0x92, 0x1c, 0x94, 0x12, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x12, 0x92, 0x12, 0x92, 0x0c, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x12, 0x12, 0x12, 0x7e, 0x24, 0x24, 0x7e, 0x48, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x08, 0x3e, 0x49, 0x48, 0x38, 0x0e, 0x09, 0x49, 0x3e, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x31, 0x4a, 0x4a, 0x34, 0x08, 0x08, 0x16, 0x29, 0x29, 0x46, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x1c, 0x22, 0x22, 0x14, 0x18, 0x29, 0x45, 0x42, 0x46, 0x39, 0x00, 0x00, 0x00, 0x00,
+0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x04, 0x00, 0x00, 0x00,
+0x00, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x08, 0x49, 0x2a, 0x1c, 0x2a, 0x49, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x7f, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x08, 0x10, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x02, 0x02, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x18, 0x24, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x08, 0x18, 0x28, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x0c, 0x10, 0x20, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x1c, 0x02, 0x02, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x04, 0x0c, 0x14, 0x24, 0x44, 0x44, 0x7e, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x7c, 0x02, 0x02, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x1c, 0x20, 0x40, 0x40, 0x7c, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7e, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x3e, 0x02, 0x02, 0x02, 0x04, 0x38, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x02, 0x04, 0x08, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x1c, 0x22, 0x4a, 0x56, 0x52, 0x52, 0x52, 0x4e, 0x20, 0x1e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x18, 0x24, 0x24, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7c, 0x42, 0x42, 0x42, 0x7c, 0x42, 0x42, 0x42, 0x42, 0x7c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x44, 0x78, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7e, 0x40, 0x40, 0x40, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x40, 0x4e, 0x42, 0x42, 0x46, 0x3a, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x42, 0x44, 0x48, 0x50, 0x60, 0x60, 0x50, 0x48, 0x44, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x42, 0x42, 0x66, 0x66, 0x5a, 0x5a, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x42, 0x62, 0x62, 0x52, 0x52, 0x4a, 0x4a, 0x46, 0x46, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7c, 0x42, 0x42, 0x42, 0x7c, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x5a, 0x66, 0x3c, 0x03, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7c, 0x42, 0x42, 0x42, 0x7c, 0x48, 0x44, 0x44, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x3c, 0x42, 0x42, 0x40, 0x30, 0x0c, 0x02, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x41, 0x41, 0x41, 0x22, 0x22, 0x22, 0x14, 0x14, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x5a, 0x5a, 0x66, 0x66, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x42, 0x42, 0x24, 0x24, 0x18, 0x18, 0x24, 0x24, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x41, 0x41, 0x22, 0x22, 0x14, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x7e, 0x02, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0e, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0e, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x40, 0x40, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x70, 0x00, 0x00, 0x00,
+0x18, 0x24, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
+0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x02, 0x3e, 0x42, 0x42, 0x46, 0x3a, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x40, 0x40, 0x40, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42, 0x62, 0x5c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x40, 0x40, 0x40, 0x40, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x02, 0x02, 0x02, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42, 0x46, 0x3a, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x42, 0x7e, 0x40, 0x40, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x02, 0x3a, 0x44, 0x44, 0x44, 0x38, 0x20, 0x3c, 0x42, 0x42, 0x3c, 0x00, 0x00,
+0x00, 0x40, 0x40, 0x40, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x08, 0x08, 0x00, 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x04, 0x04, 0x00, 0x0c, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x48, 0x30, 0x00, 0x00,
+0x00, 0x40, 0x40, 0x40, 0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x18, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x3e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x76, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42, 0x62, 0x5c, 0x40, 0x40, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x3a, 0x46, 0x42, 0x42, 0x42, 0x42, 0x46, 0x3a, 0x02, 0x02, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x5c, 0x62, 0x42, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x40, 0x30, 0x0c, 0x02, 0x42, 0x3c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x10, 0x10, 0x10, 0x7c, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0c, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x46, 0x3a, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x24, 0x24, 0x24, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x41, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x36, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x42, 0x42, 0x42, 0x42, 0x42, 0x26, 0x1a, 0x02, 0x02, 0x3c, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x7e, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7e, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x0c, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, 0x0c, 0x00, 0x00, 0x00,
+0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
+0x00, 0x30, 0x08, 0x08, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, 0x08, 0x08, 0x30, 0x00, 0x00, 0x00,
+0x00, 0x31, 0x49, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x00, 0x80, 0x73, 0xca, 0x4b, 0xca, 0x73, 0x80, 0x00, 0x80, 0x00, 0x80, 0x55, 0x00, 0x00,
+};
diff --git a/builder/hd-boot/grub/usr/share/grub/ascii.pf2 b/builder/hd-boot/grub/usr/share/grub/ascii.pf2
new file mode 100644
index 00000000..c24244fc
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/grub/ascii.pf2
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/grub/default/grub.md5sum b/builder/hd-boot/grub/usr/share/grub/default/grub.md5sum
new file mode 100644
index 00000000..e8265dc6
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/grub/default/grub.md5sum
@@ -0,0 +1,3 @@
+dfad90339e4227d432636ed7d4483744 experimental_1.96+20081129-1
+e916b60d7de71969dd7bad5a809fb9dc lenny_1.96+20080724-16
+965e5137eff659cded3adb640357c33d maverick_1.98+20100705-1ubuntu1
diff --git a/builder/hd-boot/grub/usr/share/grub/euro.pf2 b/builder/hd-boot/grub/usr/share/grub/euro.pf2
new file mode 100644
index 00000000..7ab2f353
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/grub/euro.pf2
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/grub/grub-mkconfig_lib b/builder/hd-boot/grub/usr/share/grub/grub-mkconfig_lib
new file mode 100644
index 00000000..dfecac65
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/grub/grub-mkconfig_lib
@@ -0,0 +1,395 @@
+# Helper library for grub-mkconfig
+# Copyright (C) 2007,2008,2009,2010 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+
+prefix="/usr"
+exec_prefix="/usr"
+datarootdir="/usr/share"
+datadir="${datarootdir}"
+bindir="${exec_prefix}/bin"
+sbindir="${exec_prefix}/sbin"
+if [ "x$pkgdatadir" = x ]; then
+ pkgdatadir="${datadir}/grub"
+fi
+
+if test "x$grub_probe" = x; then
+ grub_probe="${sbindir}/grub-probe"
+fi
+if test "x$grub_file" = x; then
+ grub_file="${bindir}/grub-file"
+fi
+if test "x$grub_mkrelpath" = x; then
+ grub_mkrelpath="${bindir}/grub-mkrelpath"
+fi
+
+if which gettext >/dev/null 2>/dev/null; then
+ :
+else
+ gettext () {
+ printf "%s" "$@"
+ }
+fi
+
+grub_warn ()
+{
+ echo "$(gettext "Warning:")" "$@" >&2
+}
+
+make_system_path_relative_to_its_root ()
+{
+ "${grub_mkrelpath}" "$1"
+}
+
+is_path_readable_by_grub ()
+{
+ path="$1"
+
+ # abort if path doesn't exist
+ if test -e "$path" ; then : ;else
+ return 1
+ fi
+
+ # abort if file is in a filesystem we can't read
+ if "${grub_probe}" -t fs "$path" > /dev/null 2>&1 ; then : ; else
+ return 1
+ fi
+
+ # ... or if we can't figure out the abstraction module, for example if
+ # memberlist fails on an LVM volume group.
+ if abstractions="`"${grub_probe}" -t abstraction "$path"`" 2> /dev/null ; then
+ :
+ else
+ return 1
+ fi
+
+ if [ x$GRUB_ENABLE_CRYPTODISK = xy ]; then
+ return 0
+ fi
+
+ for abstraction in $abstractions; do
+ if [ "x$abstraction" = xcryptodisk ]; then
+ return 1
+ fi
+ done
+
+ return 0
+}
+
+convert_system_path_to_grub_path ()
+{
+ path="$1"
+
+ grub_warn "convert_system_path_to_grub_path() is deprecated. Use prepare_grub_to_access_device() instead."
+
+ # abort if GRUB can't access the path
+ if is_path_readable_by_grub "${path}" ; then : ; else
+ return 1
+ fi
+
+ if drive="`"${grub_probe}" -t drive "$path"`" ; then : ; else
+ return 1
+ fi
+
+ if relative_path="`make_system_path_relative_to_its_root "$path"`" ; then : ; else
+ return 1
+ fi
+
+ echo "${drive}${relative_path}"
+}
+
+save_default_entry ()
+{
+ if [ "x${GRUB_SAVEDEFAULT}" = "xtrue" ] ; then
+ cat << EOF
+savedefault
+EOF
+ fi
+}
+
+prepare_grub_to_access_device ()
+{
+ old_ifs="$IFS"
+ IFS='
+'
+ partmap="`"${grub_probe}" --device $@ --target=partmap`"
+ for module in ${partmap} ; do
+ case "${module}" in
+ netbsd | openbsd)
+ echo "insmod part_bsd";;
+ *)
+ echo "insmod part_${module}";;
+ esac
+ done
+
+ loop_file=
+ case $1 in
+ /dev/loop/*|/dev/loop[0-9])
+ grub_loop_device="${1#/dev/}"
+ loop_file=`losetup "$1" | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
+ case $loop_file in
+ /dev/*) ;;
+ *)
+ loop_device="$1"
+ shift
+ set -- `"${grub_probe}" --target=device "${loop_file}"` "$@" || return 0
+ ;;
+ esac
+ ;;
+ esac
+
+ # Abstraction modules aren't auto-loaded.
+ abstraction="`"${grub_probe}" --device $@ --target=abstraction`"
+ for module in ${abstraction} ; do
+ echo "insmod ${module}"
+ done
+
+ fs="`"${grub_probe}" --device $@ --target=fs`"
+ for module in ${fs} ; do
+ echo "insmod ${module}"
+ done
+
+ if [ x$GRUB_ENABLE_CRYPTODISK = xy ]; then
+ for uuid in "`"${grub_probe}" --device $@ --target=cryptodisk_uuid`"; do
+ echo "cryptomount -u $uuid"
+ done
+ fi
+
+ # If there's a filesystem UUID that GRUB is capable of identifying, use it;
+ # otherwise set root as per value in device.map.
+ fs_hint="`"${grub_probe}" --device $@ --target=compatibility_hint`"
+ if [ "x$fs_hint" != x ]; then
+ echo "set root='$fs_hint'"
+ fi
+ if fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`" ; then
+ hints="`"${grub_probe}" --device $@ --target=hints_string 2> /dev/null`" || hints=
+ echo "if [ x\$feature_platform_search_hint = xy ]; then"
+ echo " search --no-floppy --fs-uuid --set=root ${hints} ${fs_uuid}"
+ echo "else"
+ echo " search --no-floppy --fs-uuid --set=root ${fs_uuid}"
+ echo "fi"
+ fi
+ IFS="$old_ifs"
+
+ if [ "x${loop_file}" != x ]; then
+ loop_mountpoint="$(awk '"'${loop_file}'" ~ "^"$2 && $2 != "/" { print $2 }' /proc/mounts | tail -n1)"
+ if [ "x${loop_mountpoint}" != x ]; then
+ echo "loopback ${grub_loop_device} ${loop_file#$loop_mountpoint}"
+ echo "set root=(${grub_loop_device})"
+ fi
+ fi
+}
+
+grub_get_device_id ()
+{
+ old_ifs="$IFS"
+ IFS='
+'
+ device="$1"
+ if fs_uuid="`"${grub_probe}" --device ${device} --target=fs_uuid 2> /dev/null`" ; then
+ echo "$fs_uuid";
+ else
+ echo $device |sed 's, ,_,g'
+ fi
+ IFS="$old_ifs"
+}
+
+grub_file_is_not_garbage ()
+{
+ if test -f "$1" ; then
+ case "$1" in
+ *.dpkg-*) return 1 ;; # debian dpkg
+ *.rpmsave|*.rpmnew) return 1 ;;
+ README*|*/README*) return 1 ;; # documentation
+ esac
+ else
+ return 1
+ fi
+ return 0
+}
+
+version_sort ()
+{
+ case $version_sort_sort_has_v in
+ yes)
+ LC_ALL=C sort -V;;
+ no)
+ LC_ALL=C sort -n;;
+ *)
+ if sort -V </dev/null > /dev/null 2>&1; then
+ version_sort_sort_has_v=yes
+ LC_ALL=C sort -V
+ else
+ version_sort_sort_has_v=no
+ LC_ALL=C sort -n
+ fi;;
+ esac
+}
+
+version_test_numeric ()
+{
+ version_test_numeric_a="$1"
+ version_test_numeric_cmp="$2"
+ version_test_numeric_b="$3"
+ if [ "$version_test_numeric_a" = "$version_test_numeric_b" ] ; then
+ case "$version_test_numeric_cmp" in
+ ge|eq|le) return 0 ;;
+ gt|lt) return 1 ;;
+ esac
+ fi
+ if [ "$version_test_numeric_cmp" = "lt" ] ; then
+ version_test_numeric_c="$version_test_numeric_a"
+ version_test_numeric_a="$version_test_numeric_b"
+ version_test_numeric_b="$version_test_numeric_c"
+ fi
+ if (echo "$version_test_numeric_a" ; echo "$version_test_numeric_b") | version_sort | head -n 1 | grep -qx "$version_test_numeric_b" ; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+version_test_gt ()
+{
+ version_test_gt_sedexp="s/[^-]*-//;s/[._-]\(pre\|rc\|test\|git\|old\|trunk\)/~\1/g"
+ version_test_gt_a="`echo "$1" | sed -e "$version_test_gt_sedexp"`"
+ version_test_gt_b="`echo "$2" | sed -e "$version_test_gt_sedexp"`"
+ version_test_gt_cmp=gt
+ if [ "x$version_test_gt_b" = "x" ] ; then
+ return 0
+ fi
+ case "$version_test_gt_a:$version_test_gt_b" in
+ *.old:*.old) ;;
+ *.old:*) version_test_gt_a="`echo -n "$version_test_gt_a" | sed -e 's/\.old$//'`" ; version_test_gt_cmp=gt ;;
+ *:*.old) version_test_gt_b="`echo -n "$version_test_gt_b" | sed -e 's/\.old$//'`" ; version_test_gt_cmp=ge ;;
+ esac
+ dpkg --compare-versions "$version_test_gt_a" "$version_test_gt_cmp" "$version_test_gt_b"
+ return "$?"
+}
+
+version_find_latest ()
+{
+ version_find_latest_a=""
+ for i in "$@" ; do
+ if version_test_gt "$i" "$version_find_latest_a" ; then
+ version_find_latest_a="$i"
+ fi
+ done
+ echo "$version_find_latest_a"
+}
+
+# One layer of quotation is eaten by "" and the second by sed; so this turns
+# ' into \'.
+grub_quote () {
+ sed "s/'/'\\\\''/g"
+}
+
+gettext_quoted () {
+ gettext "$@" | grub_quote
+}
+
+# Run the first argument through gettext, and then pass that and all
+# remaining arguments to printf. This is a useful abbreviation and tends to
+# be easier to type.
+gettext_printf () {
+ gettext_printf_format="$1"
+ shift
+ printf "$(gettext "$gettext_printf_format")" "$@"
+}
+
+uses_abstraction () {
+ device="$1"
+ old_ifs="$IFS"
+ IFS='
+'
+
+ abstraction="`"${grub_probe}" --device ${device} --target=abstraction`"
+ for module in ${abstraction}; do
+ if test "x${module}" = "x$2"; then
+ IFS="$old_ifs"
+ return 0
+ fi
+ done
+ IFS="$old_ifs"
+ return 1
+}
+
+print_option_help () {
+ if test x$print_option_help_wc = x; then
+ if wc -L </dev/null > /dev/null 2>&1; then
+ print_option_help_wc=-L
+ elif wc -m </dev/null > /dev/null 2>&1; then
+ print_option_help_wc=-m
+ else
+ print_option_help_wc=-b
+ fi
+ fi
+ if test x$grub_have_fmt = x; then
+ if fmt -w 40 </dev/null > /dev/null 2>&1; then
+ grub_have_fmt=y;
+ else
+ grub_have_fmt=n;
+ fi
+ fi
+ print_option_help_lead=" $1"
+ print_option_help_lspace="$(echo "$print_option_help_lead" | wc $print_option_help_wc)"
+ print_option_help_fill="$((26 - print_option_help_lspace))"
+ printf "%s" "$print_option_help_lead"
+ if test $print_option_help_fill -le 0; then
+ print_option_help_nl=y
+ echo
+ else
+ print_option_help_i=0;
+ while test $print_option_help_i -lt $print_option_help_fill; do
+ printf " "
+ print_option_help_i=$((print_option_help_i+1))
+ done
+ print_option_help_nl=n
+ fi
+ if test x$grub_have_fmt = xy; then
+ print_option_help_split="$(echo "$2" | fmt -w 50)"
+ else
+ print_option_help_split="$2"
+ fi
+ if test x$print_option_help_nl = xy; then
+ echo "$print_option_help_split" | awk \
+ '{ print " " $0; }'
+ else
+ echo "$print_option_help_split" | awk 'BEGIN { n = 0 }
+ { if (n == 1) print " " $0; else print $0; n = 1 ; }'
+ fi
+}
+
+grub_fmt () {
+ if test x$grub_have_fmt = x; then
+ if fmt -w 40 < /dev/null > /dev/null; then
+ grub_have_fmt=y;
+ else
+ grub_have_fmt=n;
+ fi
+ fi
+
+ if test x$grub_have_fmt = xy; then
+ fmt
+ else
+ cat
+ fi
+}
+
+grub_tab=" "
+
+grub_add_tab () {
+ sed -e "s/^/$grub_tab/"
+}
+
diff --git a/builder/hd-boot/grub/usr/share/grub/unicode.pf2 b/builder/hd-boot/grub/usr/share/grub/unicode.pf2
new file mode 100644
index 00000000..d955ce5f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/grub/unicode.pf2
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/grub/widthspec.h b/builder/hd-boot/grub/usr/share/grub/widthspec.h
new file mode 100644
index 00000000..336e262f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/grub/widthspec.h
@@ -0,0 +1,516 @@
+/* THIS CHUNK OF BYTES IS AUTOMATICALLY GENERATED */
+unsigned char widthspec[] =
+{
+0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+0xff, 0xff, 0xff, 0xff, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x03,
+0x0f, 0x28, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x80, 0x01, 0x01, 0x00, 0x00, 0x00,
+0x00, 0x79, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xf8, 0xe0, 0xff,
+0xff, 0xc9, 0xfe, 0x77, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf7, 0x9f, 0x3f, 0x00, 0x80,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x01, 0xe0, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff,
+0x69, 0xda, 0x0f, 0x01, 0x51, 0x13, 0x00, 0xc4, 0xa0, 0xc0, 0x00, 0x0c, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xef, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xf3, 0xe3, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xef, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x40, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xa0, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xc0,
+0x1f, 0xc0, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x80, 0xff, 0x0f, 0x03, 0x30, 0xfc, 0x3c, 0xfc, 0xff, 0xfb, 0xff, 0x9f, 0x7f, 0x00,
+0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0xfe,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xf1, 0xf7, 0xbf, 0xef, 0xff, 0xff, 0x00, 0xfc,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
+0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x55, 0x00, 0x00, 0x00, 0xc0,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x30, 0x10, 0x00, 0x00, 0x23, 0x80,
+0x00, 0xf8, 0x02, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xff, 0xff, 0x0c, 0x00,
+0x00, 0x80, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xc2, 0xff, 0xff, 0x00, 0xe0, 0x9d, 0x04, 0xfe, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x61, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x04, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x9e,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0xae,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78,
+0xfe, 0xff, 0x9f, 0x07, 0x00, 0x00, 0x7c, 0x00, 0xff, 0x67, 0xf0, 0xfb, 0xff, 0xfe, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x08, 0x00, 0xe0, 0x03, 0x1c, 0x98, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff,
+0xff, 0xff, 0xfc, 0xff, 0xfd, 0xe2, 0x43, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0x1a, 0xfb, 0xe5, 0xff, 0x3e, 0x00, 0xff, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xff, 0xfc, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0x4d, 0xcd, 0xcc, 0xfc, 0xff, 0xff, 0xcf,
+0x02, 0x00, 0x78, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xfc, 0xff, 0xf7, 0x1f, 0xc0,
+0xff, 0xff, 0xff, 0x3f, 0x81, 0x60, 0xf8, 0x8f, 0x3f, 0xf0, 0xff, 0xff, 0x3f, 0x43, 0x70, 0xff,
+0xff, 0x67, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80, 0xe1, 0x87, 0xbf, 0xff, 0x3f, 0xb8, 0x3f,
+0x3f, 0xdf, 0xff, 0x9f, 0x1f, 0x30, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0x00, 0x80, 0x00, 0x80, 0x80, 0x83, 0x00, 0x80, 0x00, 0x80, 0x80, 0x83, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x80, 0xfc, 0xf0, 0x01,
+0xa0, 0x24, 0x19, 0x18, 0x61, 0xdf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
+0x00, 0xc0, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x30, 0x03, 0x40, 0xff, 0x70, 0x05, 0x00,
+0x30, 0x00, 0x0c, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfc, 0x3f, 0x00, 0xc0, 0x00, 0x03, 0x00, 0x00, 0xfe, 0x00,
+0x00, 0x80, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x80,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xbf, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x7f, 0x00, 0xde,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0x80, 0xff, 0x07, 0x1f, 0xfe, 0x01, 0x80, 0xa0, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x80, 0x22, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x78,
+0x00, 0x00, 0x80, 0x07, 0x00, 0xe0, 0xf7, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x20, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x03, 0x03, 0xe3, 0xff, 0x80, 0xff, 0x1f,
+};
diff --git a/builder/hd-boot/grub/usr/share/locale/de_CH/LC_MESSAGES/grub.mo b/builder/hd-boot/grub/usr/share/locale/de_CH/LC_MESSAGES/grub.mo
new file mode 100644
index 00000000..8a29907f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/de_CH/LC_MESSAGES/grub.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/en_US/LC_MESSAGES/mit-krb5.mo b/builder/hd-boot/grub/usr/share/locale/en_US/LC_MESSAGES/mit-krb5.mo
new file mode 100644
index 00000000..686ddec8
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/en_US/LC_MESSAGES/mit-krb5.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/Linux-PAM.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/Linux-PAM.mo
new file mode 100644
index 00000000..4686ca04
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/Linux-PAM.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/adduser.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/adduser.mo
new file mode 100644
index 00000000..0a916330
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/adduser.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/apt-utils.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/apt-utils.mo
new file mode 100644
index 00000000..8d628552
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/apt-utils.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/apt.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/apt.mo
new file mode 100644
index 00000000..23c6c9cc
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/apt.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/bash.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/bash.mo
new file mode 100644
index 00000000..610f4f92
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/bash.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/console-data.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/console-data.mo
new file mode 100644
index 00000000..2a149822
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/console-data.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/coreutils.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/coreutils.mo
new file mode 100644
index 00000000..a530103f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/coreutils.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/cpio.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/cpio.mo
new file mode 100644
index 00000000..b33133ad
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/cpio.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/debconf.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/debconf.mo
new file mode 100644
index 00000000..bb3b1a06
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/debconf.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/debian-tasks.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/debian-tasks.mo
new file mode 100644
index 00000000..a9e575c0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/debian-tasks.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dialog.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dialog.mo
new file mode 100644
index 00000000..de7bf37c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dialog.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/diffutils.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/diffutils.mo
new file mode 100644
index 00000000..7a46717c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/diffutils.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dnsmasq.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dnsmasq.mo
new file mode 100644
index 00000000..62cfeb2a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dnsmasq.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dpkg.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dpkg.mo
new file mode 100644
index 00000000..47407b1c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/dpkg.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/findutils.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/findutils.mo
new file mode 100644
index 00000000..96dec971
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/findutils.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gdk-pixbuf.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gdk-pixbuf.mo
new file mode 100644
index 00000000..9600d484
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gdk-pixbuf.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gettext-runtime.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gettext-runtime.mo
new file mode 100644
index 00000000..a67b2469
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gettext-runtime.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo
new file mode 100644
index 00000000..4cb8edf7
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/glib20.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gnupg.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gnupg.mo
new file mode 100644
index 00000000..5c146715
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gnupg.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gprof.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gprof.mo
new file mode 100644
index 00000000..32876f76
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/gprof.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/grep.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/grep.mo
new file mode 100644
index 00000000..df36b5bf
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/grep.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/grub.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/grub.mo
new file mode 100644
index 00000000..c2a5e07f
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/grub.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/install-keymap.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/install-keymap.mo
new file mode 100644
index 00000000..02c70658
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/install-keymap.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libapt-inst1.5.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libapt-inst1.5.mo
new file mode 100644
index 00000000..c8acb44e
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libapt-inst1.5.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libapt-pkg4.12.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libapt-pkg4.12.mo
new file mode 100644
index 00000000..3c6ac08c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libapt-pkg4.12.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libc.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libc.mo
new file mode 100644
index 00000000..80bba2b0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/libc.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/make.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/make.mo
new file mode 100644
index 00000000..c19c8c54
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/make.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/man-db-gnulib.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/man-db-gnulib.mo
new file mode 100644
index 00000000..0711ded0
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/man-db-gnulib.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/man-db.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/man-db.mo
new file mode 100644
index 00000000..5ec4db44
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/man-db.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/nano.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/nano.mo
new file mode 100644
index 00000000..6ea63c9b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/nano.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/net-tools.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/net-tools.mo
new file mode 100644
index 00000000..bcb6dbfe
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/net-tools.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/newt.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/newt.mo
new file mode 100644
index 00000000..ae2ea44a
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/newt.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/opcodes.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/opcodes.mo
new file mode 100644
index 00000000..083e8f42
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/opcodes.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/sed.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/sed.mo
new file mode 100644
index 00000000..fc7de7d9
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/sed.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/shadow.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/shadow.mo
new file mode 100644
index 00000000..285caf3c
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/shadow.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/shared-mime-info.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/shared-mime-info.mo
new file mode 100644
index 00000000..ad2924f3
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/shared-mime-info.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/sharutils.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/sharutils.mo
new file mode 100644
index 00000000..1f6e7bc2
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/sharutils.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/tar.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/tar.mo
new file mode 100644
index 00000000..f3a6dd1b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/tar.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/tasksel.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/tasksel.mo
new file mode 100644
index 00000000..9b089d1b
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/tasksel.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/wget.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/wget.mo
new file mode 100644
index 00000000..d319a742
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/wget.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/xdg-user-dirs.mo b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/xdg-user-dirs.mo
new file mode 100644
index 00000000..9e8ed9ad
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/locale/pt_BR/LC_MESSAGES/xdg-user-dirs.mo
Binary files differ
diff --git a/builder/hd-boot/grub/usr/share/os-prober/common.sh b/builder/hd-boot/grub/usr/share/os-prober/common.sh
new file mode 100644
index 00000000..30e245ed
--- /dev/null
+++ b/builder/hd-boot/grub/usr/share/os-prober/common.sh
@@ -0,0 +1,285 @@
+newns () {
+ [ "$OS_PROBER_NEWNS" ] || exec /usr/lib/os-prober/newns "$0" "$@"
+}
+
+cleanup_tmpdir=false
+cleanup_ro_partitions=
+cleanup () {
+ local partition
+ for partition in $cleanup_ro_partitions; do
+ blockdev --setrw "$partition"
+ done
+ if $cleanup_tmpdir; then
+ rm -rf "$OS_PROBER_TMP"
+ fi
+}
+
+require_tmpdir() {
+ if [ -z "$OS_PROBER_TMP" ]; then
+ if type mktemp >/dev/null 2>&1; then
+ export OS_PROBER_TMP="$(mktemp -d /tmp/os-prober.XXXXXX)"
+ cleanup_tmpdir=:
+ trap cleanup EXIT HUP INT QUIT TERM
+ else
+ export OS_PROBER_TMP=/tmp
+ fi
+ fi
+}
+
+count_for() {
+ _labelprefix="$1"
+ _result=$(grep "^${_labelprefix} " /var/lib/os-prober/labels 2>/dev/null || true)
+
+ if [ -z "$_result" ]; then
+ return
+ else
+ echo "$_result" | cut -d' ' -f2
+ fi
+}
+
+count_next_label() {
+ require_tmpdir
+
+ _labelprefix="$1"
+ _cfor="$(count_for "${_labelprefix}")"
+
+ if [ -z "$_cfor" ]; then
+ echo "${_labelprefix} 1" >> /var/lib/os-prober/labels
+ else
+ sed "s/^${_labelprefix} ${_cfor}/${_labelprefix} $(($_cfor + 1))/" /var/lib/os-prober/labels > "$OS_PROBER_TMP/os-prober.tmp"
+ mv "$OS_PROBER_TMP/os-prober.tmp" /var/lib/os-prober/labels
+ fi
+
+ echo "${_labelprefix}${_cfor}"
+}
+
+progname=
+cache_progname() {
+ case $progname in
+ '')
+ progname="$(basename "$0")"
+ ;;
+ esac
+}
+
+log() {
+ cache_progname
+ logger -t "$progname" "$@"
+}
+
+error() {
+ log "error: $@"
+}
+
+warn() {
+ log "warning: $@"
+}
+
+debug() {
+ log "debug: $@"
+}
+
+result () {
+ log "result:" "$@"
+ echo "$@"
+}
+
+# shim to make it easier to use os-prober outside d-i
+if ! type mapdevfs >/dev/null 2>&1; then
+ mapdevfs () {
+ readlink -f "$1"
+ }
+fi
+
+item_in_dir () {
+ if [ "$1" = "-q" ]; then
+ q="-q"
+ shift 1
+ else
+ q=""
+ fi
+ [ -d "$2" ] || return 1
+ # find files with any case
+ ls -1 "$2" | grep $q -i "^$1$"
+}
+
+# We can't always tell the filesystem type up front, but if we have the
+# information then we should use it. Note that we can't use block-attr here
+# as it's only available in udebs.
+fs_type () {
+ if (export PATH="/lib/udev:$PATH"; type vol_id) >/dev/null 2>&1; then
+ PATH="/lib/udev:$PATH" vol_id --type "$1" 2>/dev/null
+ elif type blkid >/dev/null 2>&1; then
+ blkid -o value -s TYPE "$1" 2>/dev/null
+ else
+ return 0
+ fi
+}
+
+parse_proc_mounts () {
+ while read -r line; do
+ set -f
+ set -- $line
+ set +f
+ printf '%s %s %s\n' "$(mapdevfs "$1")" "$2" "$3"
+ done
+}
+
+parsefstab () {
+ while read -r line; do
+ case "$line" in
+ "#"*)
+ :
+ ;;
+ *)
+ set -f
+ set -- $line
+ set +f
+ printf '%s %s %s\n' "$1" "$2" "$3"
+ ;;
+ esac
+ done
+}
+
+unescape_mount () {
+ printf %s "$1" | \
+ sed 's/\\011/ /g; s/\\012/\n/g; s/\\040/ /g; s/\\134/\\/g'
+}
+
+ro_partition () {
+ if type blockdev >/dev/null 2>&1 && \
+ [ "$(blockdev --getro "$1")" = 0 ] && \
+ blockdev --setro "$1"; then
+ cleanup_ro_partitions="${cleanup_ro_partitions:+$cleanup_ro_partitions }$1"
+ trap cleanup EXIT HUP INT QUIT TERM
+ fi
+}
+
+find_label () {
+ local output
+ if type blkid >/dev/null 2>&1; then
+ # Hopefully everyone has blkid by now
+ output="$(blkid -o device -t LABEL="$1")" || return 1
+ echo "$output" | head -n1
+ elif [ -h "/dev/disk/by-label/$1" ]; then
+ # Last-ditch fallback
+ readlink -f "/dev/disk/by-label/$1"
+ else
+ return 1
+ fi
+}
+
+find_uuid () {
+ local output
+ if type blkid >/dev/null 2>&1; then
+ # Hopefully everyone has blkid by now
+ output="$(blkid -o device -t UUID="$1")" || return 1
+ echo "$output" | head -n1
+ elif [ -h "/dev/disk/by-uuid/$1" ]; then
+ # Last-ditch fallback
+ readlink -f "/dev/disk/by-uuid/$1"
+ else
+ return 1
+ fi
+}
+
+# Sets $mountboot as output variable. (We do this rather than requiring a
+# subshell so that we can run ro_partition without the cleanup trap firing
+# when the subshell exits.)
+linux_mount_boot () {
+ partition="$1"
+ tmpmnt="$2"
+
+ bootpart=""
+ mounted=""
+ if [ -e "$tmpmnt/etc/fstab" ]; then
+ # Try to mount any /boot partition.
+ bootmnt=$(parsefstab < "$tmpmnt/etc/fstab" | grep " /boot ") || true
+ if [ -n "$bootmnt" ]; then
+ set -f
+ set -- $bootmnt
+ set +f
+ boottomnt=""
+
+ # Try to map labels and UUIDs ourselves if possible,
+ # so that we can check whether they're already
+ # mounted somewhere else.
+ tmppart="$1"
+ if echo "$1" | grep -q "LABEL="; then
+ label="$(echo "$1" | cut -d = -f 2)"
+ if tmppart="$(find_label "$label")"; then
+ debug "mapped LABEL=$label to $tmppart"
+ else
+ debug "found boot partition LABEL=$label for Linux system on $partition, but cannot map to existing device"
+ mountboot="$partition 0"
+ return
+ fi
+ elif echo "$1" | grep -q "UUID="; then
+ uuid="$(echo "$1" | cut -d = -f 2)"
+ if tmppart="$(find_uuid "$uuid")"; then
+ debug "mapped UUID=$uuid to $tmppart"
+ else
+ debug "found boot partition UUID=$uuid for Linux system on $partition, but cannot map to existing device"
+ mountboot="$partition 0"
+ return
+ fi
+ fi
+ shift
+ set -- "$(mapdevfs "$tmppart")" "$@"
+
+ if grep -q "^$1 " "$OS_PROBER_TMP/mounted-map"; then
+ bindfrom="$(grep "^$1 " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 2)"
+ bindfrom="$(unescape_mount "$bindfrom")"
+ if [ "$bindfrom" != "$tmpmnt/boot" ]; then
+ if mount --bind "$bindfrom" "$tmpmnt/boot"; then
+ mounted=1
+ bootpart="$1"
+ else
+ debug "failed to bind-mount $bindfrom onto $tmpmnt/boot"
+ fi
+ fi
+ fi
+ if [ "$mounted" ]; then
+ :
+ elif [ -e "$1" ]; then
+ bootpart="$1"
+ boottomnt="$1"
+ elif [ -e "$tmpmnt/$1" ]; then
+ bootpart="$1"
+ boottomnt="$tmpmnt/$1"
+ elif [ -e "/target/$1" ]; then
+ bootpart="$1"
+ boottomnt="/target/$1"
+ else
+ bootpart=""
+ fi
+
+ if [ ! "$mounted" ]; then
+ if [ -z "$bootpart" ]; then
+ debug "found boot partition $1 for linux system on $partition, but cannot map to existing device"
+ else
+ debug "found boot partition $bootpart for linux system on $partition"
+ if type grub-mount >/dev/null 2>&1 && \
+ grub-mount "$boottomnt" "$tmpmnt/boot" 2>/dev/null; then
+ mounted=1
+ else
+ ro_partition "$boottomnt"
+ if mount -o ro "$boottomnt" "$tmpmnt/boot" -t "$3"; then
+ mounted=1
+ else
+ error "failed to mount $boottomnt on $tmpmnt/boot"
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+ if [ -z "$bootpart" ]; then
+ bootpart="$partition"
+ fi
+ if [ -z "$mounted" ]; then
+ mounted=0
+ fi
+
+ mountboot="$bootpart $mounted"
+}
diff --git a/builder/hd-boot/hooks/gen-netfiles.sh b/builder/hd-boot/hooks/gen-netfiles.sh
new file mode 100755
index 00000000..e57537d3
--- /dev/null
+++ b/builder/hd-boot/hooks/gen-netfiles.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+#
+# If you wish to provide a default name when 40network/ifname-genrules.sh
+# dracut module generates, provide a kernel parameter ifname=<name>:[mac],
+# if mac will be passed a default udev rule ifup will be generated by
+# dracut (40network/net-genrules.sh) module.
+#
+# This script generates two files: /tmp/net.{bootneet,ifaces}
+# that dracut udev rules (generated dynamically) uses to generate.
+# On this manner the interface is brought up.
+
+debug_off() {
+ set +x
+}
+
+debug_on() {
+ [ "$RD_DEBUG" = "yes" ] && set -x
+}
+
+#debug_on
+# if boot PXE BOOTIF takes precedence in ifname=
+# kernel parameter.
+bootdev=""
+if [ -n "$BOOTIF" ]; then
+ # no BOOTIF from PXELINUX (IPAPPEND 2)
+ bootdev="bootnet:$(echo "${BOOTIF#*-}" | tr '-' ':')"
+elif [ -n "$ifname" ]; then
+ bootdev="$ifname"
+else
+ # dracut won't generate the rule to change the iterface name,
+ # it will assume NAME=kernel from udev.
+ warn "No either BOOTIF= (IPAPPEND 2) or ifname= (kernel parameter) has been defined."
+ return 1
+fi
+
+echo "${bootdev%%:*}" > /tmp/net.bootdev
+
+if echo "$bootdev" | grep -q -o '..:..:..:..:..:..'; then
+ echo "${bootdev#*:}" > /tmp/net.ifaces
+fi
+#debug_off
+
+return 0
diff --git a/builder/hd-boot/hooks/get_root_part.sh b/builder/hd-boot/hooks/get_root_part.sh
new file mode 100755
index 00000000..feed6f5f
--- /dev/null
+++ b/builder/hd-boot/hooks/get_root_part.sh
@@ -0,0 +1,68 @@
+# Copyright (c) 2013 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found under http://openslx.org
+#
+# Local hard disk autodetection script for OpenSLX linux stateless clients,
+# detecting swap and special partitions
+#############################################################################
+
+# Define default values, in case config could not be fetched.
+SLX_PART_ID=0x49
+SLX_GPT_PART_NAME=hddbwlehrpool
+
+CONFIG_FILE_NAME="config"
+if [ -f "${SLX_CONFIGURATION_LOCATION}/${CONFIG_FILE_NAME}" ]; then
+ source "${SLX_CONFIGURATION_LOCATION}/${CONFIG_FILE_NAME}"
+fi
+
+# Param - none
+#
+# Return: stdout list of device(s) with id or pattern in case gpt.
+# also return number of partitions found.
+get_root_part()
+{
+ local count lst_blkdev pttype type_id pattern
+
+ count=0
+ lst_blkdev=$(lsblk --noheadings --nodeps --path --all --raw --output KNAME)
+ for device in $lst_blkdev; do
+ pttype=$(blkid -s PTTYPE -o value "$device")
+ if [ -n "$pttype" ]; then
+ case "$pttype" in
+ gpt) type_id=PARTLABEL; pattern="$SLX_GPT_PART_NAME" ;;
+ dos) type_id=PARTTYPE; pattern="$SLX_PART_ID" ;;
+ *) type_id=""
+ esac
+
+ shopt -s lastpipe
+ lsblk --noheadings --paths --raw --output KNAME,$type_id "$device" |
+ while read dev clue; do
+ if [ "$clue" == "$pattern" ]; then
+ ((count++))
+ echo "$dev"
+ fi
+ done
+ shopt -u lastpipe
+ fi
+ done
+
+ return $count
+}
+
+# Wait for the event queue to be empty,
+# perhaps block devices are been populated.
+udevadm settle
+
+ROOT_HDD_BWLEHRPOOL=$(get_root_part)
+# Sanity check, did we found more than one partition?
+if [ $? -gt 1 ]; then
+ emergency_shell "It has been found more than one partion, the root partion could not be determined."
+fi
+
+export ROOT_HDD_BWLEHRPOOL
diff --git a/builder/hd-boot/hooks/ifup_lo.sh b/builder/hd-boot/hooks/ifup_lo.sh
new file mode 100644
index 00000000..90d73b33
--- /dev/null
+++ b/builder/hd-boot/hooks/ifup_lo.sh
@@ -0,0 +1,5 @@
+if ! ip link set lo up; then
+ warn "loop back interface could not bring up."
+ emergency_shell -n "Error: $0"
+fi
+
diff --git a/builder/hd-boot/hooks/mount-root-device.sh b/builder/hd-boot/hooks/mount-root-device.sh
new file mode 100755
index 00000000..bbd01ee6
--- /dev/null
+++ b/builder/hd-boot/hooks/mount-root-device.sh
@@ -0,0 +1,9 @@
+mount "/dev/mapper/$BLOCK_DM" "$NEWROOT" $SLX_MOUNT_ROOT_OPTIONS && \
+# Write fstab for recognized system partition.
+sed --in-place --quiet "/${SLX_SYSTEM_PARTITION_IDENTIFIER}.*/!s/.*//" \
+ "$NEWROOT/etc/fstab"
+
+mkdir "${NEWROOT}/${DIR_ROOT}"
+mount --move "$DIR_ROOT" "${NEWROOT}/${DIR_ROOT}"
+rmdir "$DIR_ROOT"
+mount --bind "${NEWROOT}/${DIR_ROOT}/boot" "${NEWROOT}/boot"
diff --git a/builder/hd-boot/hooks/partitioner.sh b/builder/hd-boot/hooks/partitioner.sh
new file mode 100755
index 00000000..22d31258
--- /dev/null
+++ b/builder/hd-boot/hooks/partitioner.sh
@@ -0,0 +1,359 @@
+#!/bin/sh
+# Copyright (c) 2013 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found under http://openslx.org
+#
+# Local hard disk autodetection script for OpenSLX linux stateless clients,
+# detecting swap and special partitions
+#############################################################################
+
+
+#############################################################################
+# Requirements:
+
+. "/usr/lib/hd-boot/common-lib.sh"
+. "/usr/lib/rebash/core.sh"
+core.import utils
+
+set PERC_AVAILABLE_SPACE # Rate to use of the free space
+set MIN_SIZE_IN_BYTES
+set DISK_LIST=
+set DISK
+set SIZE
+set START_SEC
+set END_SEC
+set SLX_PART_ID
+set PART_NUM
+set LAST_ERR
+set DISK_PART
+set FS_TYPE
+
+FS_TYPE=ext4
+
+if [ -f "${SLX_CONFIGURATION_LOCATION}/$CONFIG_FILE_NAME" ]; then
+ source "${SLX_CONFIGURATION_LOCATION}/$CONFIG_FILE_NAME"
+else
+ warn "Config file could no be fould at ${SLX_CONFIGURATION_LOCATION}/$CONFIG_FILE_NAME"
+fi
+
+get_size_of_parts() {
+ local device=$1
+
+ lsblk --noheadings --raw --bytes --output SIZE "$device" | awk '{if(NR>1)print}' |
+ (size=0; s=; while read s
+ do
+ size=$(echo "$size+$s" | bc)
+ done && echo $size)
+}
+
+get_disk_list2() {
+ local min_size=$1 use_max=$2
+ local list lst
+ local device ro rv disk_size
+ local size_parts space_avail
+
+ lsblk --nodeps --noheadings --raw --paths --bytes --output KNAME,TYPE,RO,RM,SIZE |
+ while read device ty ro rv disk_size
+ do
+ # if is type of disk
+ if [ "$ty" == "disk" -a $ro -eq 0 ]; then
+ size_parts=$(get_size_of_parts "$device")
+ if [ $disk_size -gt $size_parts ]; then
+ space_avail=$(echo "$disk_size-$size_parts" | bc)
+ space_avail=$(printf %.f $(echo "scale=2; $space_avail * ($use_max/100)" | bc))
+ if [ $space_avail -ge $min_size ]; then
+ #TODO: list of disks available
+ echo "$device $space_avail $rv"
+ fi
+ fi
+ fi
+ done
+}
+
+# Param
+# $1 - device to be queried.
+#
+# Return: three fields space separeted in sectors unit.
+# <start sector> <end sector> <size>
+get_avail_space() {
+ local space ret="0 0 0"
+
+ if space=$(parted --script --machine "$1" unit s print free); then
+ #TODO: In case there is a gap and a second gap that could be used, the second gap would be missed,
+ # so must interact in all list of empty space
+ ret=$(echo "$space" | grep -Eo '^[0-9]+:[0-9]+s:[0-9]+s:[0-9]+s.*free;$' | \
+ tr -d 's' | awk -F ':' '{if( $4 > 2048 ) print $2" "$3" "$4}')
+ [ -z "$ret" ] && ret="0 0 0"
+ fi
+
+ echo $ret
+}
+
+get_disk_list() {
+ local min_size_sec use_max=$2
+
+ lsblk --nodeps --noheadings --raw --paths --bytes --output KNAME,TYPE,RO,RM,LOG-SEC |
+ while read device ty ro rv logsec
+ do
+ # if is type of disk
+ if [ "$ty" == "disk" -a $ro -eq 0 ]; then
+ buff=$(get_avail_space "$device")
+ space_avail=$(echo "$buff" | cut -d ' ' -f3)
+ if [ $space_avail -gt 0 ]; then
+ # TODO: interact in the list of avaliable space
+ # Get space according to the user requirement,
+ # buff could get more than one item, see get_avail_space().
+ space_avail=$(printf %.f $(echo "scale=2; $space_avail * ($use_max/100)" | bc))
+ if [ $use_max -lt 100 ]; then
+ start_sec=$(echo "$buff" | cut -d' ' -f1)
+ end_sec=$(echo "$start_sec+$space_avail" | bc)
+ buff="$start_sec $end_sec `echo "scale=0; $end_sec-$start_sec" | bc`"
+ fi
+
+ min_size_sec=$(echo "scale=0; $1/$logsec" | bc)
+ if [ $space_avail -ge $min_size_sec ]; then
+ echo "$device $space_avail `echo $buff | awk '{print $1" "$2}'` $rv"
+ fi
+ fi
+ fi
+ done
+}
+
+# Default partition table will be gpt
+default_part_table() {
+ local device=$1
+
+ # Sanity check, leave clean part table
+ # Clean up part table gpt, also MBR
+ sgdisk --zap-all "$device" &> /dev/null
+ sgdisk --randomize-guids "$device" &> /dev/null
+ [[ $? -ne 0 ]] && perror "Partition table could not be created."
+
+ return $?
+}
+
+create_gpt_part()
+{
+ local device=$1 part_num=$2 start_sec=$3 end_sec=$4
+
+ info "Creating partition at $device start=$start_sec end=$end_sec"
+ sgdisk --new=${part_num}:$start_sec:$end_sec "$device" &> /dev/null
+ [[ $? -ne 0 ]] && perror "Partition could not be created." && return $?
+
+ sgdisk --change-name=${part_num}:${SLX_GPT_PART_NAME_CODE} "$device" &> /dev/null
+ [[ $? -ne 0 ]] && perror "Name of partition could not be set." && \
+ sgdisk --delete=$part_num &> /dev/null && return $?
+
+ sgdisk --type-code=${part_num}:${SLX_PART_ID} "$device" &> /dev/null
+ [[ $? -ne 0 ]] && perror "Type code of partition could not be set." && \
+ sgdisk --delete=$part_num &> /dev/null && return $?
+
+ info "Creating file system, ext4 at device '"${device}${part_num}"'."
+ mkfs.ext4 -F "${device}${part_num}"
+ # TODO: threat errors
+}
+
+create_dos_part()
+{
+ local device=$1 part_num=$2 start_sec=$3 end_sec=$4
+ local count dif mod
+
+ # Partition must be in a boundary of 2048 sectors (1048576 Bytes)
+ [ $start_sec -lt 2048 ] && start_sec=2048
+
+ # make end of partition align at 2048 sectors boundary.
+ mod=$(echo "scale=0; $end_sec % 2048" | bc)
+ if [ $mod -ne 0 ]; then
+ # align
+ end_sec=$(echo "$end_sec - $mod" | bc)
+ # sanity check, it must be aligned.
+ mod=$(echo "scale=0; $end_sec % 2048" | bc)
+ [ $mod -ne 0 ] && die "Bug: dos partition is not aligned in 2048s boundary."
+ fi
+
+ info "Creating partition at $device start=$start_sec end=$end_sec"
+ if ! parted --script --machine --align=optimal "$device" unit s mkpart primary "$start_sec" "$end_sec"; then
+ emergency_shell "Partition could not be created."
+ fi
+
+ # probe of new partition, so block device will be created.
+ partx --add --nr "$part_num" "$device" &> /dev/null
+
+ # change id of partition.
+ if ! sfdisk --change-id "$device" "$part_num" "$SLX_PART_ID"; then
+ die "Partition id could not be assigned."
+ fi
+
+ info "Creating file system, ext4 at device ${device}${part_num}."
+ if ! mkfs --type "$FS_TYPE" -F "${device}${part_num}"; then
+ die "File system could not be created."
+ fi
+}
+
+set_iface_to_cmdline()
+{
+ local tmp
+
+ tmp="$(cat /usr/share/grub/default/grub | grep -w 'GRUB_CMDLINE_LINUX=')"
+ [ -n "$tmp" ] || return 1
+
+ mac=$(cat /tmp/net.ifaces)
+ [ -n "$mac" ] || return 1
+
+ _head="${tmp#*=\"}"
+ _head="${_head%\"}"
+ _tail="ifname=$(cat /tmp/net.bootdev):$mac"
+ sed -r -i "s#GRUB_CMDLINE_LINUX=[\"].*[\"]#GRUB_CMDLINE_LINUX=\"$_head $_tail\"#" /usr/share/grub/default/grub
+}
+
+install_boot_loader()
+{
+ local dev="$1" dir_root="$2"
+
+ info "Installing grub, this may take some time, BE PATIENT! ..."
+ if ! grub-install --recheck --target=i386-pc --boot-directory="${dir_root}/boot/" "$dev"; then
+ die "Failed instalation of boot loader."
+ fi
+
+ [ ! -d "/boot" ] && mkdir "/boot"
+ if ! mount --bind "${dir_root}/boot" "/boot"; then
+ die "Could not bind directory \"${dir_root}/boot\" at \"/boot\""
+ fi
+
+ info "Setting iface to the cmdline..."
+ set_iface_to_cmdline
+
+ info "Generating boot loader configuration..."
+ if ! grub-mkconfig -o "/boot/grub/grub.cfg"; then
+ die "Failed generating grub configuration."
+ fi
+ umount "/boot"
+
+}
+
+install_system()
+{
+ local dev=$1 inst_dir=
+
+ info "Installing base system..."
+ inst_dir=$(get_root_dir)
+ cache_dir=$(get_cache_dir)
+ if ! mkdir -p -- "$inst_dir"; then
+ die "Mount point at \"$inst_dir\" could no be created."
+ fi
+ if ! mount -o rw -t "$FS_TYPE" "$dev" "$inst_dir"; then
+ die "Could not be mount \"$dev\" at \"$inst_dir\"."
+ fi
+
+ # create boot dir in hd.
+ if ! mkdir -- "${inst_dir}/boot"; then
+ die "\"${inst_dir}/boot\" could not be created."
+ fi
+ # create cache directory
+ if ! mkdir -- "$cache_dir"; then
+ die "\"$cache_dir\" could not be created."
+ fi
+
+ info "Installing kernel..."
+ # Fetch kernel and initramfs.
+ if ! wget -T 5 -nv "http://${SLX_SERVER}/${SLX_HDD_SETUP}/${SLX_KERNEL}" \
+ -O "${inst_dir}/boot/${SLX_KERNEL}"; then
+ die "Could no fetch kernel from: "\
+ "http://${SLX_SERVER}/${SLX_HDD_SETUP}/${SLX_KERNEL}"
+ fi
+ info "Installing initrd..."
+ if ! wget -T 5 -nv "http://${SLX_SERVER}/${SLX_HDD_SETUP}/${SLX_INITRAMFS}" \
+ -O "${inst_dir}/boot/${SLX_INITRAMFS}"; then
+ die "Could no fetch initramfs from: "\
+ "http://${SLX_SERVER}/${SLX_HDD_SETUP}/${SLX_INITRAMFS}"
+ fi
+
+ # install in the MBR of device, not in partition.
+ install_boot_loader "${dev%%[0-9]*}" "$inst_dir"
+
+ # umount instalation directory, next hook mount will do
+ # in this manner we avoid checks in mount, since this will
+ # happen just once.
+ umount "$inst_dir"
+ info "Done with the base system."
+
+ export HDD_INSTALATION="$inst_dir"
+ export ROOT_HDD_BWLEHRPOOL="$dev"
+}
+
+
+# ____________________________MAIN__________________________________________
+# Check if we've got a partition
+# This var will be exported by get_root_part.sh script.
+if [ -z "$ROOT_HDD_BWLEHRPOOL" ]; then
+ PERC_AVAILABLE_SPACE=100
+ MIN_SIZE_IN_BYTES=$(echo "scale=0; $SLX_PART_MIN_SIZE * 2^30" | bc)
+
+ info "Getting list of disks..."
+ DISK_LIST=$(get_disk_list "$MIN_SIZE_IN_BYTES" "$PERC_AVAILABLE_SPACE")
+ # If there is no a disk with minimum requirements, pop error and exit.
+ if [ "x$DISK_LIST" == "x" ]; then
+ perror "Could not be found a disk unpartitioned with at least requirements of $SLX_PART_MIN_SIZE GB. Leave a disk unpartitioned with the least requirements."
+ emergency_shell -n "error" "no free space has been found."
+ fi
+
+ #TODO: if more than one disk has been found, give a choice to the user.
+
+ DISK=$(echo $DISK_LIST | awk '{print $1}')
+ SIZE=$(echo $DISK_LIST | awk '{print $2}')
+ START_SEC=$(echo $DISK_LIST | awk '{print $3}')
+ END_SEC=$(echo $DISK_LIST | awk '{print $4}')
+
+ info "Getting type of partition table..."
+ PTTYPE=$(blkid -s PTTYPE -o value "$DISK")
+ LAST_ERR=$?
+ # If there is no partition table default to gpt
+ if [ -z "$PTTYPE" ]; then
+ if [ $LAST_ERR -eq 2 ]; then
+ # If type of partition table can not be found default to gpt.
+ default_part_table "$DISK"
+ # query again for the partition table, it should have a gpt partition table.
+ PTTYPE=$(blkid -s PTTYPE -o value "$DISK")
+ [[ $? -ne 0 ]] && perror "Fatal error setting default gpt partition table. Reboot the system."
+ # If we created a new partition table; so this will be the first partion.
+ PART_NUM=1
+ else
+ perror "Fatal error occured, tool to detect gpt table returned: $LAST_ERR."
+ fi
+ else
+ # find out number of the last partition.
+ PART_NUM=$(sgdisk --print "$DISK" | grep -E '^[ ,\t]+[0-9]*' | tail -1 | awk '{print $1}')
+ ((PART_NUM++))
+ fi
+
+ DISK_PART="${DISK}${PART_NUM}"
+
+ case "$PTTYPE" in
+ gpt) create_gpt_part "$DISK" "$PART_NUM" "$START_SEC" "$END_SEC" ;;
+ dos) create_dos_part "$DISK" "$PART_NUM" "$START_SEC" "$END_SEC" ;;
+ *) emergency_shell "Fatal, parition table could not be parsed." ;;
+ esac
+
+
+ # Mount and install the system
+ install_system "${DISK}${PART_NUM}"
+fi
+
+unset PERC_AVAILABLE_SPACE # Rate to use of the free space
+unset MIN_SIZE_IN_BYTES
+unset DISK_LIST
+unset DISK
+unset SIZE
+unset START_SEC
+unset END_SEC
+unset SLX_PART_ID
+unset PART_NUM
+unset LAST_ERR
+unset DISK_PART
+unset FS_TYPE
diff --git a/builder/hd-boot/hooks/prepare-kernel-command-line-parameter.sh b/builder/hd-boot/hooks/prepare-kernel-command-line-parameter.sh
new file mode 100755
index 00000000..3f459567
--- /dev/null
+++ b/builder/hd-boot/hooks/prepare-kernel-command-line-parameter.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+debug_off() {
+ set +x
+}
+
+debug_on() {
+ [ "$RD_DEBUG" = "yes" ] && set -x
+}
+
+#debug_on
+# Overwrite /proc/cmdline so, we always have dhcp client running.
+_cmdline=$(cat /proc/cmdline)
+if echo "$_cmdline" | grep -q 'ip='; then
+ echo "$_cmdline" > /tmp/cmdline
+ sed -r -i 's/ip=[^ ]* /ip=dhcp /' /tmp/cmdline
+ if ! mount -n --bind -o ro /tmp/cmdline /proc/cmdline; then
+ die "Could not mount cmdline as rw."
+ fi
+fi
+unset _cmdline
+
+SLX_SERVER="$(getargs slxsrv=)"
+SLX_SERVER_BASE="$(getargs slxbase=)"
+
+[ -z "$SLX_SERVER" ] && warn 'No "slxsrv" parameter found in the kernel command line.'
+[ -z "$SLX_SERVER_BASE" ] && warn 'No "slxbase" parameter found in the kernel command line.'
+#debug_off
diff --git a/builder/hd-boot/hooks/prepare-root-part.sh b/builder/hd-boot/hooks/prepare-root-part.sh
new file mode 100755
index 00000000..7963ffb3
--- /dev/null
+++ b/builder/hd-boot/hooks/prepare-root-part.sh
@@ -0,0 +1,201 @@
+# Copyright (c) 2013 - OpenSLX GmbH
+#
+# This program is free software distributed under the GPL version 2.
+# See http://openslx.org/COPYING
+#
+# If you have any feedback please consult http://openslx.org/feedback and
+# send your feedback to feedback@openslx.org
+#
+# General information about OpenSLX can be found under http://openslx.org
+#
+# Local hard disk autodetection script for OpenSLX linux stateless clients,
+# detecting swap and special partitions
+#############################################################################
+
+. "/usr/lib/rebash/core.sh"
+. "/usr/lib/hd-boot/common-lib.sh"
+core.import utils
+core.import logging
+logging.set_commands_log_level debug
+logging.set_log_level debug
+
+LOOP_BACK=127.0.0.1
+BLOCK_DM="root"
+SLX_CONFIG_FILE="config"
+
+debug_off() {
+ set +x
+}
+
+debug_on() {
+ [ "$RD_DEBUG" = "yes" ] && set -x
+}
+
+#debug_on
+get_cached()
+{
+ local img=$1 rid=$2
+ local succeeded count port buff
+
+ succeeded=1
+ count=0
+ port=$(cat "${DNBD3_CONFIG_DIR}/server.conf" | awk -F'=' '/listenPort/ {print $2}')
+ while [ $succeeded -ne 0 -a $count -lt 15 ]; do
+ sleep 0.5
+ buff=$(wget -O - "$LOOP_BACK:$port" 2> /dev/null)
+ succeeded=$?
+ ((count++))
+ done
+
+ echo "$buff" | jq --slurp '.[]? | .images | .[]?' | tr -d '"\n{ ' | tr '}' '\n' | \
+ grep -w "name:$img" | grep -w "rid:$rid" |
+ awk -F',' '{
+ for (i=1; i <= NF; i++) {
+ split($i, keyval, ":")
+ if( match(keyval[1], "complete") ) {
+ _completed=keyval[2]
+ }
+ if( match(keyval[1], "uplinkServer") )
+ _uplink=keyval[2]
+ }
+
+ print _completed" "_uplink
+ }'
+}
+
+is_cache_completed()
+{
+ local img_status cache_completed uplinkserver
+
+ img_status=$(get_cached\
+ "${SLX_DNBD3_RELATIVE_PATH}/${SLX_DNBD3_IMAGE}"\
+ "$SLX_DNBD3_RID")
+
+ cache_completed=0
+ uplinkserver="none"
+ if [ -n "$img_status" ]; then
+ cache_completed=$(echo "$img_status" | cut -d' ' -f1)
+ uplinkserver=$(echo "$img_status" | cut -d' ' -f2)
+ fi
+
+ [ $cache_completed -ge 100 ] ||\
+ [ "$uplinkserver" != "<?addrtype=0>" -a "$uplinkserver" != "none" ]
+}
+
+# Sanity check, this variable has been exported either
+# by get_root_part.sh or partotioner.sh, since at this
+# point we expect to have a partition.
+[ -z "$ROOT_HDD_BWLEHRPOOL" ] &&\
+ emergency_shell "Root partition could not be identify as '$ROOT_HDD_BWLEHRPOOL'."
+
+DIR_ROOT=$(get_root_dir)
+[ ! -d "$DIR_ROOT" ] && ! mkdir -p -- "$DIR_ROOT" &&\
+ die "Directory \"$DIR_ROOT\" does not exist."
+
+if ! mount -o rw "$ROOT_HDD_BWLEHRPOOL" "$DIR_ROOT"; then
+ die "Device \"$ROOT_HDD_BWLEHRPOOL\" could not be mounted at \"$DIR_ROOT\"."
+fi
+
+# in /boot must be a backup of config
+if [ -z "$SLX_DNBD3_RELATIVE_PATH" ]; then
+ [ ! -e "${DIR_ROOT}/boot/${SLX_CONFIG_FILE}" ] &&\
+ emergency_shell "${DIR_ROOT}/boot/${SLX_CONFIG_FILE} could not be found."
+ . "${DIR_ROOT}/boot/${SLX_CONFIG_FILE}"
+else
+ # update the config file we've got one from the server.
+ cp -a "${SLX_CONFIGURATION_LOCATION}/${SLX_CONFIG_FILE}"\
+ "${DIR_ROOT}/boot/${SLX_CONFIG_FILE}"
+fi
+
+info "Starting DNBD3 server at \"$LOOP_BACK\" settings at \"$DNBD3_CONFIG_DIR\"."
+dnbd3-server -b "$LOOP_BACK" -c "$DNBD3_CONFIG_DIR"
+# TODO: check for erros
+
+# sanity check, if we have empty directory em server
+# reports no images, proxy will create for the first time.
+cache_dir=$(get_cache_dir)
+[ -n "$(find $cache_dir -type d -not -empty)" ]; cache_empty=$?
+unset cache_dir
+
+# TODO:
+# build a function to detect if we've got a connection
+no_connection=1
+if [ $no_connection -eq 0 ] || ! is_cache_completed || [ $cache_empty -eq 1 ]; then
+ pquestion ".dialog_warnrc" "Continue?" "This computer has a incomplete cache, so It's"\
+ "strong recommended that all work must be save to a persistent disk. The system is unreliable "\
+ "while there is no connection to the server and the cache is not full filled, once the "\
+ "the cache is complete the system is totally reliable. If you choose to not continue the "\
+ "system will be rebooted.\n\nContinue?"
+ if [ $? -eq 1 ]; then # if no, reboot
+ echo b > /proc/sysrq-trigger
+ fi
+fi
+
+# The server takes some time to be up so, try few times
+# or succeeded, if fail, gives up.
+succeeded=1
+count=0
+while [ $succeeded -ne 0 -a $count -lt 10 ]; do
+ info "$count: Connecting to server $LOOP_BACK, image: " \
+ "${SLX_DNBD3_RELATIVE_PATH}/${SLX_DNBD3_IMAGE}..."
+ sleep 1
+ dnbd3-client -c -d "$SLX_DNBD3_DEVICE" &> /dev/null
+ dnbd3-client -h "$LOOP_BACK" \
+ -i "${SLX_DNBD3_RELATIVE_PATH}/${SLX_DNBD3_IMAGE}" \
+ -r "$SLX_DNBD3_RID" -d "$SLX_DNBD3_DEVICE"
+ succeeded=$?
+ ((count++))
+done
+
+if [ $succeeded -ne 0 ]; then
+ emergency_shell -n "error" "dnbd3-client could not connect to the image " \
+ "${SLX_DNBD3_RELATIVE_PATH}/${SLX_DNBD3_IMAGE}.r${SLX_DNBD3_RID} " \
+ "on device $SLX_DNBD3_DEVICE"
+
+fi
+
+local img_fmt=$(qemu-img info "$SLX_DNBD3_DEVICE" | awk -F': ' '/file format:/ {print $2}')
+read_only_device=
+case "$img_fmt" in
+ qcow2)
+ read_only_device='/dev/nbd0'
+ systemd-preserve-process-marker \
+ qemu-nbd --read-only --cache=writeback --connect="$read_only_device" "$SLX_DNBD3_DEVICE"
+
+ # wait for partitions TODO make nicer :)
+ touch $read_only_device
+ udevadm settle
+ ;;
+
+ raw)
+ modprobe -r loop
+ modprobe loop max_part=16
+ read_only_device=$(losetup -f)
+ if ! losetup "$read_only_device" "$SLX_DNBD3_DEVICE"; then
+ emergency_shell -n "error" "losetup could set block device."
+ fi
+ ;;
+
+ *)
+ emergency_shell -n "error" "Format of image not reconized."
+ ;;
+esac
+
+read_only_device=$(utils.find_block_device "$SLX_SYSTEM_PARTITION_IDENTIFIER" "$read_only_device")
+[ -z "$read_only_device" ] && \
+ emergency_shell -n "error" "device=\"$read_only_device\", read only block dev could not be found."
+
+blk_dev_size=$(blockdev --getsz "$read_only_device")
+# make union of block device, building a layer of cow.
+if ! dmsetup create "$BLOCK_DM" --noudevsync --table \
+ "0 $blk_dev_size snapshot $read_only_device /dev/ram0 N 1"; then
+ emergency_shell -n "error"\
+ "dmsetup could not combine block device \"$read_only_device\" with /dev/ram0"
+fi
+dmsetup mknodes --noudevsync "$BLOCK_DM"
+
+export BLOCK_DM
+export DIR_ROOT
+
+return 0
+#debug_off
diff --git a/builder/hd-boot/module-setup.sh b/builder/hd-boot/module-setup.sh
new file mode 100755
index 00000000..02956c01
--- /dev/null
+++ b/builder/hd-boot/module-setup.sh
@@ -0,0 +1,63 @@
+#!/bin/bash -x
+
+check() {
+ return 0
+}
+
+depends() {
+ echo dnbd3-rootfs
+}
+
+install() {
+
+ inst_simple "$moddir/server.conf" "/etc/dnbd3/server.conf"
+ inst_simple "$moddir/alt-servers" "/etc/dnbd3/alt-servers"
+ inst_simple "$moddir/.dialog_warnrc" "/usr/lib/hd-boot/.dialog_warnrc"
+ inst_script "$moddir/common-lib.sh" "/usr/lib/hd-boot/common-lib.sh"
+ #inst "$moddir/../dnbd3-rootfs/binaries/dnbd3/build/dnbd3-server" /usr/bin/dnbd3-server
+ #inst "$moddir/../dnbd3-rootfs/binaries/dnbd3/build/dnbd3-client" /usr/bin/dnbd3-client
+
+ # cmdline hooks
+ #inst_hook cmdline 10 "$moddir/hooks/prepare-kernel-command-line-parameter.sh"
+
+ # pre-mount hooks
+ inst_hook pre-mount 01 "$moddir/hooks/get_root_part.sh"
+ inst_hook pre-mount 02 "$moddir/hooks/partitioner.sh"
+ inst_hook pre-mount 03 "$moddir/hooks/prepare-root-part.sh"
+
+ # mount hooks
+ #inst_hook mount 00 "$moddir/hooks/mount-root-device.sh"
+
+ # pre-udev hooks
+ #inst_hook pre-udev 01 "$moddir/hooks/ifup_lo.sh"
+ inst_hook pre-udev 40 "$moddir/hooks/gen-netfiles.sh" # Must be 40, because dracut runs as 50 and 60 net-genrules.sh
+
+ # install buid-in kernel parameters
+ for _i in "$moddir/etc/cmdline.d/"*.conf; do
+ inst "$_i" "/etc/cmdline.d/${_i##*/}"
+ done
+
+ # set variables at beggining of dracut.
+ for _i in "$moddir/etc/conf.d/"*.conf; do
+ inst "$_i" "/etc/conf.d/${_i##*/}"
+ done
+
+ # Install grub files
+ for _i in $(find "$moddir/grub/"); do
+ if [ -L "$_i" ]; then
+ inst_symlink "/${_i#*/grub/}" "${_i##*/}"
+ else
+ inst "$_i" "/${_i#*/grub/}"
+ fi
+ done
+
+ # Debugging
+ inst_multiple sfdisk gdisk qemu-img sgdisk df netstat \
+ file mktemp diff parted tr bc mkfs dialog \
+ telnet tset reset xxd ip grub-mkconfig modinfo \
+ curl jq chmod wc fgrep rmdir logger which paste
+ # Production
+ #inst_multiple sfdisk qemu-img sgdisk parted tr bc \
+ # mkfs dialog ip jq wc fgrep rmdir logger \
+ # which paste
+}