> > > > I ran the following: > > > > > > > > $ sudo x86_64-grub-mkrescue --modules="iso9660 fshelp loadbios > > > > part_msdos part_gpt normal terminal crypto extcmd boot gettext > > > > linux video relocator mmap font bufio efi_gop video_fb efi_uga > > > > gfxterm bitmap_scale bitmap gfxmenu trig" -o myiso.iso iso > > > > > > > > The iso as-is boots, but still contains copies all of the modules in > > > > i386pc and x86_64-efi. > > > > > > > > I don't see the logic in embedding modules if the same modules will be > > > > copied to the iso anyway? > > > > > > > > If I delete the x86_64-efi folder from the iso, it doesn't boot and > > > > complains about all of the missing modules for ever. > > > > > > And which modules are missing? This works for me > > > > > > bor@opensuse:~/build/grub> pkgdatadir=$PWD ./grub-mkrescue -d > > > grub-core -o /tmp/foo.iso --modules="linux part_msdos minicmd ls" > > > --install-modules="" /linux=/boot/vmlinuz-3.16.7-7-desktop > > > /initrd=/boot/initrd-3.16.7-7-desktop > > > > > > linux /linux > > > initrd /initrd > > > boot > > > > > > minicmd is for lsmod and ls is for ls. part_msdos is not really needed. > > > It still works using minimal --modules=linux > > > > Thanks for the continued help with this. > > > > I was using grub-2.00, which doesn't have "-d" or "--install-modules=" > > > > If I use grub-2.02~beta2, then the same command works for me, except that > > I'm booting to the console prompt so in uefi > > boot I get a blank display after "error: no suitable video more found. > > Booting in blind mode". > > > Yes, on BIOS linux depends on and automatically pulls in vbe. The following > works for me on EFI > (for booting from ISO image of course) > > bor@opensuse:~/build/grub> pkgdatadir=$PWD ./grub-mkrescue -d grub-core -o > /tmp/foo.iso --modules="linux minicmd > ls efi_gop" --install-modules="" /linux=/boot/vmlinuz-3.16.7-7-desktop > /initrd=/boot/initrd-3.16.7-7-desktop > > > BTW, if I use --modules="linux" or --modules="linux part_dos iso9660", then > > uefi boot fails with the error: > > file `/boot/grub/x86_64-efi/part_acorn.mod` not found. Entering rescue mode. > > See above. It works for me using EFI build. And the following allows me to > boot from HDD: > > bor@opensuse:~/build/grub> pkgdatadir=$PWD ./grub-mkrescue -d grub-core -o > /tmp/foo.iso > --modules="linux minicmd ls efi_gop ext2" --install-modules="" > > Adjust for your filesystem. You may need to add part_msdos and part_gpt > (current GIT head does it automatically on EFI).
[all of this was done with grub built from git as of two days ago] As you can see above that's what I did, I'm booting from CD into RAM. --modules="linux part_msdos minicmd ls" works --modules="linux" gives error part_acorn.mod not found --modules="linux part_dos iso9660" gives error part_acorn.mod not found > > This means your grub-mkrescue sees only i386-pc platform. loadbios.mod exists > in EFI build only. > I don't think that's the case, I have: /usr/local/lib/grub/i386-pc/*modules /usr/local/lib/grub/x86_64-efi/*modules ..and since --modules="linux part_msdos minicmd ls" works for both legacy-bios and uefi boot, grub sees both sets of modules For me, grub-mkrescue should understand that I need certain modules for uefi only, otherwise how am I going to get an efi-fb display in uefi boot when the same modules don't exist for legacy-bios? > > ..so it appears that I'm stuck? > > > > If your intention is to build dual-platform support, you probably > misunderstood what I said earlier. You need to build and > install grub twice for two different platforms USING THE SAME PREFIX AND > PROGRAM NAME. It appears you built it > twice but placed in two different locations, so you can now only use one of > them at a time. No, that's not the case, both are under /usr/local: /usr/local/lib/grub/i386-pc/*modules /usr/local/lib/grub/x86_64-efi/*modules > You should have something like > > bor@opensuse:~/src/grub> LC_ALL=C ll /usr/lib/grub2 total 40 drwxr-xr-x 2 > root root 20480 Nov 8 07:54 i386-pc drwxr-xr-x > 2 root root 20480 Nov 8 > 08:05 x86_64-efi > > Now replace /usr/lib with /usr/local/lib, i.e. you have to build and install > twice using > >./configure --prefix=/usr/local --with-platform=pc ./configure >--prefix=/usr/local --with-platform=efi > As per above, that's exactly what I did > > Note also that, the mkrescue command appears to copy files all over the > > place: > > > > $ ls /mnt/sr0/boot/grub/x86_64-efi [why is this required if the modules are > > embedded?] > > command.lst crypto.lst fs.lst moddep.lst modinfo.sh > > partmap.lst parttool.lst terminal.lst video.lst > > > > $ ls /mnt/sr0/System/Library/CoreServices > > SystemVersion.plist boot.efi [is boot.efi duplicating efi.img?] > > > > $ ls /mnt/sr0 > > System/ boot/ boot.catalog efi.img mach_kernel > > > > ..and copies Unicode.pf2 to the cd when it cannot be used and creates empty > > directories for locale and rom. > > _______________________________________________ Help-grub mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-grub
