тему развивать никто не хочет,и не надо я сам продолжу
Dosifei, не буду спорить о полезности скрипта, но вот удобство...
Это скорее продолжение,
ранее скаанного.Речь не совсем о скрипте, в прямом смысле.
Сегодня понадобилось внести записи в nvram UEFI. Вот примерная строка:
efibootmgr -c -d /dev/sda -p 1 -L Linux -l '\EFI\linux\vmlinuz-xx' -u "root=/dev/sda2 initrd=/EFI/linux/initrd.img-xx quiet"
Ошибившись три раза, рука потянулась за долотом. Примерная идея следующая. В файлменеджере выделяешь загрузчик, жмещь ентер. Скрипт парсит данные и на их основе генерит параметры для efibootmgr.
На текущий момент код такой:
+= f [Ee][Ff][Ii] | f [Bb][Oo][Oo]
efibootmgr list
key='-v'
efibootmgr ${key}
+= d /*/[Ee][Ff][Ii]*
<< efibootmgr create (run as root)
#key='-c -d /dev/sda -p 1 -L Linux -l '\EFI\linux\vmlinuz-xx' -u "root=/dev/sda2 initrd=/EFI/linux/initrd.img-xx quiet"'
for i in %s; do
key='--create'
case %d/${i} in
/mnt/sda1*) key='-c -d /dev/sda -p 1'
key='-c -d /dev/sda -p 1 -L Linux -l '\EFI\linux\vmlinuz-xx' -u "root=/dev/sda2 initrd=/EFI/linux/initrd.img-xx quiet"'
;;
/mnt/mmcblk0p1*)
key="${key} --disk /dev/mmcblk0 --part 1"
case %d/${i} in
*/EFI/BOOT/[Gg][Rr][Uu][Bb]*)
key="${key} --label Grub --loader \EFI\BOOT\GRUBX64.EFI";;
*/EFI/BOOT/[Bb][Oo][Oo]*)
key="${key} --label BOOTX64 --loader \EFI\BOOT\BOOTX64.EFI";;
*/EFI/[Mm][Ii][Cc][Rr][Oo][Ss][Oo][Ff]/[Bb][Oo][Oo]*)
key="${key} --label Windows --loader \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI";;
*/EFI/[Uu][Bb][Uu][Nn][Uu]/[Gg][Rr][Uu][Bb]*)
key="${key} --label ubuntu_grub --loader \EFI\UBUNTU\GRUBX64.EFI";;
*/EFI/[Uu][Bb][Uu][Nn][Uu]/[Ss][Hh][Ii][Mm]*)
key="${key} --label ubuntu_shim --loader \EFI\UBUNTU\SHIMX64.EFI";;
*) continue
# key="${key} --label BOOTX64 --loader \EFI\BOOT\BOOTX64.EFI"
;;
esac;;
*) continue
# key='-c -l '\EFI\linux\vmlinuz-xx' -u "root=/dev/sda2 initrd=/EFI/linux/initrd.img-xx quiet"'
;;
esac
echo "$key [${i}]\n%d %f [%s]"
# efibootmgr ${key}
done
+= f [Ee][Ff][Ii] | f [Bb][Oo][Oo] | d /[Ee][Ff][Ii]* | d /[Bb][Oo][Oo]*
efibootmgr delete (run as root)
key=%{Enter number entry:}
efibootmgr --bootnum ${key} --delete-bootnum
С list и delete все просто, там ничего не изобретешь. А вот create.
Пока что просто для проверки идеи, в лоб прописаны неколько стандартных вариантов. Как пойдет дальше, время покажет.
Сильно пока не тестировал, поэтому код привожу в "отладочном режиме". Echo просто выводит на экран получившуюся строку параметров. Но пару нужных мне записей создал.
Это код для mc.menu Midnight commandera. Его несложно трансформировать в обычный скрипт, но без ФМ сразу потеряется удобство.