Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Ковырял я тут на днях свой переносной арч на флешке, и подумал – зачем мне это громоздкое меню с кучей разных комбинаций на все случаи жизни, если гораздо проще задать каждый параметр отдельно? Стал я искать способы задать отдельно, и упёрся в то, что не выходило никак сделать индикацию в меню уже добавленных опций. И тут меня осенило – зачем вообще меню, зачем мне вообще этот гуй, если у груба есть настоящая консоль? Сделаю конфиг с командами-функциями, В итоге получился вот такой конфиг (grub.cfg): function RESET { iLTS='' iFALL='' iNM='' VESAFB='' MLOAD='' GFX='' CUST='' } function LIST { echo "Options: LTS=$iLTS FALL=$iFALL NM=$iNM VESAFB=$VESAFB GFX=$GFX MLOAD=$MLOAD CUST=$CUST" echo "Commands: LIST RESET BOOT INTEL NM VESA FALL LTS NEXTDISK MENU" echo "VESA 8 =800x600x8 10 =1024x768x8 12 =1280x1024x8 n12 =1280x800x8 '' =auto" } function MENU { configfile /boot/grub/menu.cfg } function BOOT { set gfxpayload="$GFX" linux /boot/vmlinuz-linux$iLTS root=/dev/root loglevel=6 $iNM $VESAFB $MLOAD $CUST initrd /boot/initramfs-linux$iLTS$iFALL.img boot } function INTEL { MLOAD="modload.first=i915" } function NM { iNM=nomodeset } function VESA { if [ "$1" == "8" ] ; then GFX=800x600x8 elif [ "$1" == "10" ] ; then GFX=1024x768x8 elif [ "$1" == "12" ] ; then GFX=1280x1024x8 elif [ "$1" == "n12" ] ; then GFX=1280x800x8 elif [ -z "$1" ] ; then GFX=auto else GFX="$1" fi VESAFB="video=vesafb:mtrr:3" iNM=nomodeset } function FALL { iFALL="-fallback" } function LTS { iLTS="-lts" } function NEXTDISK { set root=(hd1) chainloader +1 } set pager=1 RESET Теперь у меня загрузка с флешки по дефолту выглядит так: grub> BOOT grub> VESA grub> LTS grub> BOOT grub> VESA n12 grub> BOOT |
sleepycat |
|
![]()
Темы:
98
Сообщения:
3291
Участник с: 19 июля 2011
|
занятно, сразу понял, что поддержка скриптинга в конфиге дает полет фантизии. По сабжу мне понавилось, просто, а главное - сердито.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
|
Natrio |
|
Темы:
47
Сообщения:
4763
Участник с: 08 января 2011
|
Вот, новое издание конфига, доработанное. 1) Поменял все команды-функции на слова в нижнем регистре, так всё же набирать легче. 2) Добавил ручное сохранание параметров и автоматическое их восстановление при старте. 3) Подумав, добавил меню. Всё же оно бывает нужно, если ничего не надо менять, или если параметры уже сохранены в прошлый раз. Для всех остальных случаев – консоль удобнее :) grub.cfg : function reset { LTS= FALL= NM= VESAFB= MLOAD= GFX= UTC= CUST= } function save { save_env LTS FALL NM VESAFB MLOAD GFX UTC CUST } function load { load_env } function list { echo "Options: LTS=$LTS FALL=$FALL UTC=$UTC NM=$NM VESAFB=$VESAFB GFX=$GFX MLOAD=$MLOAD CUST=$CUST" echo "Commands: list reset load save utc intel nm vesa fall lts go (boot) nextdisk" echo "vesa 8 =800x600x8 10 =1024x768x8 12 =1280x1024x8 n12 =1280x800x8 '' =auto" } function go { set gfxpayload="$GFX" linux /boot/vmlinuz-linux$LTS root=/dev/root loglevel=6 $NM $VESAFB $MLOAD $UTC $CUST initrd /boot/initramfs-linux$LTS$FALL.img boot } function utc { UTC="clock=UTC" } function intel { MLOAD="modload.first=i915" } function nm { NM=nomodeset } function vesa { if [ "$1" == "8" ] ; then GFX=800x600x8 elif [ "$1" == "10" ] ; then GFX=1024x768x8 elif [ "$1" == "12" ] ; then GFX=1280x1024x8 elif [ "$1" == "n12" ] ; then GFX=1280x800x8 elif [ -z "$1" ] ; then GFX=auto else GFX="$1" fi VESAFB="video=vesafb:mtrr:3" nm } function fall { FALL="-fallback" } function lts { LTS="-lts" } function nextdisk { set root=(hd1) chainloader +1 } set pager=1 reset load # Simple menu set timeout=5 set default=0 set menu_color_normal=white/blue set menu_color_highlight=white/black menuentry "Boot Arch Linux" { go } menuentry "Boot next disk" { nextdisk } menuentry "'c' - configire, list - more info" { true } P.S. Ну и задание HARDWARECLOCK в rc.conf из загрузчика – никогда заранее не знаешь, как стоят часы на другой машине. Мелочь, а приятно :) |