Попробуйте это:
sshing () {
ssh -o ConnectTimeout=2 "$SERVER" "$@"
#................................^..^ crucial quotes
}
#...
cmd="$*"
#...
while read -r SERVER; do
say "Executing ${COMMAND} on ${SERVER}:"
$DRYMODE $DRYRUN $SUDO sh -c "${COMMAND}" 2> /dev/null
#.....................11111.2..........2
# 1. run with a shell to enable redirections and pipe
# 2. crucial quotes
#...
done < "$SERVER_FILE"
Выполнение команды внутри оболочки с помощью sudo позволит всему конвейеру выполняться с повышенными разрешениями.
Кроме того, вы должны избавиться от привычки использовать имена переменных ALLCAPS. Однажды вы случайно перезапишете PATH, а затем удивитесь, почему ваш скрипт не работает.
Я вижу две возможные проблемы.
Простого копирования /boot/grub
в раздел на внутреннем диске и установки флага загрузки для этого раздела недостаточно, чтобы сделать внутренний диск загрузочным.
Активное ядро версии GRUB для BIOS обычно хранится в блоках между основной загрузочной записью и началом первого раздела диска с разделами MBR -. Эти блоки не являются частью какой-либо файловой системы или раздела и не могут быть скопированы как файлы. Они также могут включать встроенную ссылку -, которая сообщает ядру GRUB, где найти каталог /boot/grub
:, в котором эта ссылка записана при выполнении grub-install
.
Кроме того, BIOS может поддерживать USB-накопители во время загрузки , только если вы фактически выбрали загрузку с USB . Если ваша система специально не предлагает поддержку USB Mass Storage на уровне BIOS, когда на самом деле не загружается с USB, то, что касается любой программы, которая использует BIOS (, например GRUB ), USB Mass Storage не поддерживает существуют до тех пор, пока фактическая ОС не загрузится и не активирует свои собственные USB-драйверы. А поскольку Debian помещает файлы ядра и initramfs в каталог /boot/
, они будут на USB и, следовательно, недоступны для GRUB.
Вы можете указать установщику смонтировать раздел с внутреннего диска как /boot
, необязательно предварительно форматируя его, чтобы на него были просто добавлены загрузочные файлы Linux.
Или просто скопируйте содержимое существующего каталога /boot
в файловую систему на внутреннем диске, смонтируйте эту файловую систему как новую /boot
и запустите grub-install /dev/sda
(, предполагая, что /dev/sda
— это ваш внутренний диск ).
В принципе, ничто не должно мешать вам установить GRUB на USB-накопитель. Поскольку вы разрешили установщику Debian разбить USB-накопитель на разделы, ничто не должно мешать вам установить GRUB на USB-накопитель и использовать его.Если вы еще не пробовали просто выполнить обычную установку Debian на USB-накопитель, а затем изменить порядок загрузки BIOS на загрузку с USB-накопителя, попробуйте сначала, прежде чем создавать ненужные сложности.
ISOLINUX предназначен для доступа к файловым системам ISO9660 через BIOS, и это вообще не должно относиться к вашему случаю.