password_pbkdf2_mod_CFLAGS = $(COMMON_CFLAGS)
password_pbkdf2_mod_LDFLAGS = $(COMMON_LDFLAGS)
+ # For memdisk.mod.
+ pkglib_MODULES += memdisk.mod
+ memdisk_mod_SOURCES = disk/memdisk.c
+ memdisk_mod_CFLAGS = $(COMMON_CFLAGS)
+ memdisk_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+ # For reboot.mod.
+ pkglib_MODULES += reboot.mod
+ reboot_mod_SOURCES = commands/reboot.c
+ reboot_mod_CFLAGS = $(COMMON_CFLAGS)
+ reboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+ # For date.mod
+ pkglib_MODULES += date.mod
+ date_mod_SOURCES = commands/date.c
+ date_mod_CFLAGS = $(COMMON_CFLAGS)
+ date_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+ # For datehook.mod
+ pkglib_MODULES += datehook.mod
+ datehook_mod_SOURCES = hook/datehook.c
+ datehook_mod_CFLAGS = $(COMMON_CFLAGS)
+ datehook_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+ # For lsmmap.mod
+ pkglib_MODULES += lsmmap.mod
+ lsmmap_mod_SOURCES = commands/lsmmap.c
+ lsmmap_mod_CFLAGS = $(COMMON_CFLAGS)
+ lsmmap_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+ # For boot.mod.
+ pkglib_MODULES += boot.mod
+ boot_mod_SOURCES = commands/boot.c lib/i386/pc/biosnum.c
+ boot_mod_CFLAGS = $(COMMON_CFLAGS)
+ boot_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
bin_UTILITIES += grub-mkpasswd-pbkdf2
- grub_mkpasswd_pbkdf2_SOURCES = gnulib/progname.c util/grub-mkpasswd-pbkdf2.c lib/crypto.c lib/libgcrypt-grub/cipher/sha512.c lib/pbkdf2.c util/misc.c kern/err.c
+ grub_mkpasswd_pbkdf2_SOURCES = gnulib/progname.c gnulib/getdelim.c gnulib/getline.c util/grub-mkpasswd-pbkdf2.c lib/crypto.c lib/libgcrypt-grub/cipher/sha512.c lib/pbkdf2.c util/misc.c util/mm.c kern/err.c
grub_mkpasswd_pbkdf2_CFLAGS += -Wno-missing-field-initializers -Wno-error -I$(srcdir)/lib/libgcrypt_wrap -DGRUB_MKPASSWD=1
+# Randomly generated
+SUCCESSFUL_BOOT_STRING=3e49994fd5d82b7c9298d672d774080d
+BOOTCHECK_TIMEOUT=60
+
+bootcheck: $(BOOTCHECKS)
+
include $(srcdir)/conf/gcry.mk
endif
- BOOTTARGET=bios-cd
++BOOTTARGET=cd
+
+bootcheck-linux16-i386: linux-initramfs.i386 $(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux.cfg grub-shell
+ timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-i386 --files=/initrd=linux-initramfs.i386 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux16.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
+
+bootcheck-linux16-x86_64: linux-initramfs.x86_64 $(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux.cfg grub-shell
+ timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/initrd=linux-initramfs.x86_64 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux16.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
+
+BOOTCHECKS+=bootcheck-linux16-i386 bootcheck-linux16-x86_64
+
include $(srcdir)/conf/i386.mk
include $(srcdir)/conf/common.mk
multiboot2_mod_LDFLAGS = $(COMMON_LDFLAGS)
multiboot2_mod_ASFLAGS = $(COMMON_ASFLAGS)
- BOOTCHECKS+=bootcheck-linux-i386 bootcheck-linux-x86_64 \
+ # For serial.mod.
+ pkglib_MODULES += serial.mod
+ serial_mod_SOURCES = term/serial.c
+ serial_mod_CFLAGS = $(COMMON_CFLAGS)
+ serial_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+ # For pci.mod
+ pkglib_MODULES += pci.mod
+ pci_mod_SOURCES = bus/pci.c
+ pci_mod_CFLAGS = $(COMMON_CFLAGS)
+ pci_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+ # For lspci.mod
+ pkglib_MODULES += lspci.mod
+ lspci_mod_SOURCES = commands/lspci.c
+ lspci_mod_CFLAGS = $(COMMON_CFLAGS)
+ lspci_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+ # For play.mod.
+ pkglib_MODULES += play.mod
+ play_mod_SOURCES = commands/i386/pc/play.c
+ play_mod_CFLAGS = $(COMMON_CFLAGS)
+ play_mod_LDFLAGS = $(COMMON_LDFLAGS)
+
+linux.init.x86_64: $(srcdir)/tests/boot/linux.init-x86_64.S
+ $(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
+
+linux.init.i386: $(srcdir)/tests/boot/linux.init-i386.S
+ $(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\"
+
+kfreebsd.init.x86_64: $(srcdir)/tests/boot/kfreebsd.init-x86_64.S
+ $(TARGET_CC) -o $@ $< -m64 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@
+
+kfreebsd.init.i386: $(srcdir)/tests/boot/kfreebsd.init-i386.S
+ $(TARGET_CC) -o $@ $< -m32 -nostdlib -nostdinc -DSUCCESSFUL_BOOT_STRING=\"$(SUCCESSFUL_BOOT_STRING)\" && freebsd-brandelf -t FreeBSD $@
+
+linux-initramfs.%: linux.init.% Makefile
+ TDIR=`mktemp -d`; cp $< $$TDIR/init; (cd $$TDIR; echo ./init | cpio --quiet --dereference -o -H newc) | gzip > $@; rm -rf $$TDIR
+
+kfreebsd-mfsroot.%: kfreebsd.init.% Makefile
+ TDIR=`mktemp -d`; mkdir $$TDIR/dev; mkdir $$TDIR/sbin; cp $< $$TDIR/sbin/init; makefs -t ffs -s 30m -f 1000 -o minfree=0,version=1 $@ $$TDIR; rm -rf $$TDIR
+
+CLEANFILES += linux.init.i386 kfreebsd.init.i386 linux.init.x86_64 linux-initramfs.i386 linux-initramfs.x86_64
+
+bootcheck-kfreebsd-i386: kfreebsd-mfsroot.i386 $(GRUB_PAYLOADS_DIR)/kfreebsd.i386 $(GRUB_PAYLOADS_DIR)/kfreebsd_env.i386 $(srcdir)/tests/boot/kfreebsd.cfg grub-shell
+ timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-i386 --files=/mfsroot=kfreebsd-mfsroot.i386 --files=/kfreebsd=$(GRUB_PAYLOADS_DIR)/kfreebsd.i386 --files=/kfreebsd_env=$(GRUB_PAYLOADS_DIR)/kfreebsd_env.i386 $(srcdir)/tests/boot/kfreebsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
+
+bootcheck-kfreebsd-x86_64: kfreebsd-mfsroot.x86_64 $(GRUB_PAYLOADS_DIR)/kfreebsd.x86_64 $(GRUB_PAYLOADS_DIR)/kfreebsd_env.x86_64 $(srcdir)/tests/boot/kfreebsd.cfg grub-shell
+ timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/mfsroot=kfreebsd-mfsroot.x86_64 --files=/kfreebsd=$(GRUB_PAYLOADS_DIR)/kfreebsd.x86_64 --files=/kfreebsd_env=$(GRUB_PAYLOADS_DIR)/kfreebsd_env.x86_64 $(srcdir)/tests/boot/kfreebsd.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
+
+bootcheck-linux-i386: linux-initramfs.i386 $(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux.cfg grub-shell
+ timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-i386 --files=/initrd=linux-initramfs.i386 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.i386 $(srcdir)/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
+
+bootcheck-linux-x86_64: linux-initramfs.x86_64 $(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux.cfg grub-shell
+ timeout -s KILL $(BOOTCHECK_TIMEOUT) ./grub-shell --boot=$(BOOTTARGET) --qemu=qemu-system-x86_64 --files=/initrd=linux-initramfs.x86_64 --files=/linux=$(GRUB_PAYLOADS_DIR)/linux.x86_64 $(srcdir)/tests/boot/linux.cfg | grep $(SUCCESSFUL_BOOT_STRING) > /dev/null
+
++BOOTCHECKS += bootcheck-linux-i386 bootcheck-linux-x86_64 \
+ bootcheck-kfreebsd-i386 bootcheck-kfreebsd-x86_64
+
+.PHONY: bootcheck-linux-i386 bootcheck-linux-x86_64 \
+ bootcheck-kfreebsd-i386 bootcheck-kfreebsd-x86_64
EOF
}
- boot=bios-hd
++boot=hd
+qemu=qemu-system-i386
+
# Check the arguments.
for option in "$@"; do
case "$option" in
qemuopts="$qemuopts $qs" ;;
--boot=*)
dev=`echo "$option" | sed -e 's/--boot=//'`
- if [ "$dev" = "bios-fd" ] ; then boot=bios-fd;
- elif [ "$dev" = "bios-hd" ] ; then boot=bios-hd;
- elif [ "$dev" = "bios-cd" ] ; then boot=bios-cd;
- if [ "$dev" = "fd" ] ; then bootdev=a;
- elif [ "$dev" = "hd" ] ; then bootdev=c;
- elif [ "$dev" = "cd" ] ; then bootdev=d;
++ if [ "$dev" = "fd" ] ; then boot=fd;
++ elif [ "$dev" = "hd" ] ; then boot=hd;
++ elif [ "$dev" = "cd" ] ; then boot=cd;
else
echo "Unrecognized boot method \`$dev'" 1>&2
usage
halt
EOF
- if [ x$boot = xbios-hd ] || [ x$boot = xbios-fd ] || [ x$boot = xbios-cd ]; then
- isofile=`mktemp`
- grub-mkrescue --output=${isofile} --override-directory=${builddir} \
- /boot/grub/grub.cfg=${cfgfile} /boot/grub/testcase.cfg=${source} \
- ${files} >/dev/null 2>&1
- if [ x$boot = xbios-hd ]; then
- device=hda
- bootdev=c
- fi
- if [ x$boot = xbios-cd ]; then
- device=cdrom
- bootdev=d
- fi
- if [ x$boot = xbios-fd ]; then
- device=fda
- bootdev=a
- fi
- ${qemu} ${qemuopts} -nographic -serial file:/dev/stdout -monitor file:/dev/null -${device} ${isofile} -boot ${bootdev} | tr -d "\r"
- rm -f ${isofile}
+ isofile=`mktemp`
+ grub-mkrescue --output=${isofile} --override-directory=${builddir} \
- /boot/grub/grub.cfg=${cfgfile} /boot/grub/testcase.cfg=${source} \
- >/dev/null 2>&1
-
-hdafile=`mktemp`
-cp ${isofile} ${hdafile}
-
-fdafile=`mktemp`
-cp ${isofile} ${fdafile}
-
-outfile=`mktemp`
-qemu-system-i386 ${qemuopts} -nographic -hda ${hdafile} -fda ${fdafile} -cdrom ${isofile} -boot ${bootdev} | tr -d "\r" >${outfile}
-
-cat $outfile
++ /boot/grub/grub.cfg=${cfgfile} /boot/grub/testcase.cfg=${source} \
++ ${files} >/dev/null 2>&1
++if [ x$boot = xhd ]; then
++ device=hda
++ bootdev=c
+fi
++if [ x$boot = xcd ]; then
++ device=cdrom
++ bootdev=d
++fi
++if [ x$boot = xfd ]; then
++ device=fda
++ bootdev=a
++fi
++${qemu} ${qemuopts} -nographic -serial file:/dev/stdout -monitor file:/dev/null -${device} ${isofile} -boot ${bootdev} | tr -d "\r"
++rm -f ${isofile}
-rm -f ${tmpfile} ${outfile} ${cfgfile} ${isofile} ${hdafile} ${fdafile}
+rm -f ${tmpfile} ${cfgfile}
exit 0