В итоге я использовал chroot для этого, но сначала я вручную изменил UUID моего целевого диска в grub.cfg на целевом диске. Я использовал команду blkdev
чтобы узнать UUID целевого раздела диска. Это выглядит примерно так ($ targettdir - это целевая файловая система, установленная, $ diskdev - дисковое устройство, видимое из хост-системы, например, /dev /sdb, а $ partitiondev - раздел диска, например, /dev /sdb1). К этому моменту я уже разбил диск на части, сделал mkfs, смонтировал его, затем скопировал на диск желаемое содержимое новой файловой системы.
targetuuid=`blkid -s UUID -o value $partitiondev`
test -n "$targetuuid" || error "Could not determine UUID for $partitiondev"
sed --in-place=orig 's/search .*/search --no-floppy --fs-uuid --set=root $targetuuid/' $targetdir/boot/grub/gub.cfg || error "Error setting correct UUID in $targetdir/boot/grub/grub.cfg"
mount -o bind /dev $targetdir/dev
# could also bind other pseudo-filesystems like /proc as in Diblo Dk's answer.
chroot $targetdir grub-install --no-floppy --recheck $diskdev
umount $targetdir/dev # don't forget to unmount this first otherwise you can't unmount $targetdir later
[Между прочим, в случае, если кто-то еще сталкивается с несколькими тангенциальными проблемами, которые у меня были при этом - я использовал инструмент "buildroot", чтобы сделать минимальную систему Linux в initramfs для загрузки из сетевой загрузки (pxe). Если вы включите util-linux и выберете mount/umount в разделе "Утилиты установки", то будет установлена слегка испорченная версия mount (заменяющая встроенную команду mount в busybox), которая, похоже, постоянно вылетает. Кроме того, мне пришлось разрешить использование devtmpfs в конфигурации ядра и выбрать devtmpfs в buildroot, чтобы сработала перепривязка файловой системы /dev - я думаю, в версии busybox у меня есть опция bind для монтирования, которая работает, только если вы связывает файловую систему, а не каталог внутри файловой системы.
Это все с версией buildroot 2013.05, которая использует busybox версии 1.21.1, util-linux 2.22.2. Может быть, они были исправлены с тех пор.]