Немного другой подход, хотя я предпочитаю подход RobertL
sites=( "${@:4}" )
# ...
for dir in "${sites[@]}"; do ...
«$ {@: 4}»
принимает позиционные параметры, начиная с $ 4 до конца. Существует команда GRUB, не описанная в руководстве , которая точно анализирует файл конфигурации, извлекая записи и игнорируя остальную часть конфигурации:extract_entries_source
. При этом любые изменения в пунктах меню GRUB вторичного дистрибутива будут автоматически учитываться в главном меню GRUB.
Добавить пользовательскую запись в/etc/grub.d/40_custom
:
# A dummy entry to mark the separation
menuentry "Extracted from /dev/sdb2" {
true
}
# the following if for MBR disk, change to part_gpt if necessary
insmod part_msdos
# adapt with appropriate file system module
insmod ext2
# replace aaaa-bbbb-cccc with actual partition UUID
search --fs-uuid aaaa-bbbb-cccc --set slavegrub --no-floppy
extract_entries_source ($slavegrub)/boot/grub/grub.cfg
UUID )файловой системы раздела (можно получить с помощью blkid
.
Вы также можете запретить GRUB автоматически заполнять меню пробником ОС -. Это настраивается в /etc/default/grub
и может быть отключено глобально с помощью GRUB_DISABLE_OS_PROBER
или выборочно для некоторых разделов с помощью GRUB_OS_PROBER_SKIP_LIST
(, см. руководство GRUB ).
Тогда вы можете update-grub
.
Ничего не нужно делать, так как файл /boot/grub/grub.cfg
будет прочитан только из-за его записей и никогда не будет фактически выполнен. Вы, вероятно, захотите полностью отключить пробник ОС -, так как эти записи будут излишними при интеграции в главное меню GRUB.