Pascal, I just had to use "losetup --partscan" instead of mounting the main partition manually, as with my method there is no information about partition size. Anyway, thanks a lot for part_msdos, it helped!
2018-07-18 12:26 GMT+03:00 Sergey Naumov <[email protected]>: > Thanks, Pascal, that helped a bit. > > But now there is another problem: > error: attempt to read or write outside of partition. > > So grub see partition and its content, it can even load some modules from > (hd0,msdos1)/boot/grub/i386-pc. > > But when I'm trying to load some other modules, like "normal", I see this > error: > grub rescue> ls > (hd0) (hd0,msdos2) (hd0,msdos1) > grub rescue> ls (hd0,msdos1)/boot/grub > ./ ../ gfxblacklist.txt unicode.pf2 i386-pc/ locale/ fonts/ grubenv > grub.cfg > grub rescue> set root=(hd0,msdos1) > grub rescue> set prefix=(hd0,msdos1)/boot/grub > grub rescue> insmod normal > error: attempt to read or write outside of partition. > > What is also interesting, if I use --modules=part_msdos,ext2 instead of > --modules=part_msdos, then grub tries to load a system, but neither > succeeds nor emits rescue shell - it just hangs. > > As to your question - I used "losetup -o 1M -f image.img" to create loop > device that I can format with mkfs.ext4. > > Thanks, > Sergey. > > > 2018-07-17 21:12 GMT+03:00 Pascal Hambourg <[email protected]>: > >> Hello, >> >> Le 17/07/2018 à 18:09, Sergey Naumov a écrit : >> >>> >>> I'm trying to prepare an image that I can dd into disk or boot using PXE, >>> so I install basic system + kernel + grub-pc into directory, then create >>> an >>> image file, partition it using sfdisk, mount main partiton (ext4), copy >>> content of the rootfs into it, and then run grub-install and update-grub >>> under chroot. >>> >>> Everything seems OK, grub.cfg detected kernel and initramfs installed >>> into >>> created image, but when I try to boot this image either on real system or >>> using kvm, grub2 can't find device partitions. What could be a reason of >>> it? >>> >>> I posted the question with more detailed explanation here: >>> https://serverfault.com/questions/922319/grub2-fails-to-dete >>> ct-partitions-if-it-was-installed-into-file >>> >> >> You really could have copied all the relevant information in your post to >> the list, so subscribers do not have to fetch them on the web. >> >> How did you make the ext4 partition in the image appear as a block device >> so that it can be mounted ? >> >> AFAIK, GRUB looking for the filesystem containing /boot/grub by UUID >> means that grub-install believes that it is on a different drive from the >> boot+core image. So maybe grub-install did not care to embed the MSDOS >> partition table driver into the core image. You can try to force it with >> >> grub-install --modules=part_msdos <other parameters> >> > > _______________________________________________ Help-grub mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-grub
