Я наткнулся на это, когда искал двойную загрузку FreeBSD 11.0 и Ubuntu 16.04 с использованием Ubuntu GRUB 2, все под EFI.
В конечном итоге у меня возник ряд проблем с прямой загрузкой, но я успешно загрузил FreeBSD по цепочке. Простой цепной загрузчик +1
у меня не работал, и я использовал следующее:
menuentry "FreeBSD 11.0 chainload" {
insmod part_gpt
insmod fat
root = hd0,7
chainloader /efi/boot/bootx64.efi
}
, за которым следовало update-grub
. Возможно, я пропустил что-то простое, что заставило бы приведенные выше ответы работать для efi.
Использование обычных команд с символическими ссылками очень сложно. Команда find
справляется с ними довольно хорошо. Таким образом, ключ в том, чтобы использовать find
, и я бы предложил использовать быструю CRC или криптографическую хеш-функцию в зависимости от ваших потребностей.
Так что что-то вроде этого должно работать (вы можете делать дополнения по мере необходимости)
find -L www -type f -exec cksum {} \; | cut -d ' ' -f1-2 | md5sum
Если вы хотите криптографическую поддержку ваших контрольных сумм,
find -L www -type f -exec sha256sum {} \; | cut -d ' ' -f1 | sha256sum
Требуется идентификатор 'type', потому что sha256 работает только с файлами и ошибками для каталогов. , а разрез используется только для передачи контрольной суммы/хэша в конечную функцию и предотвращения ложных срабатываний, когда на самом деле отличаются только имена путей.
Примечание. Это не удастся, если символическая ссылка не является относительной и если две системы не имеют точно такого же пути, что может произойти, если символическая ссылка указывает за пределы каталога, в котором вы работаете find
.