| 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 из загрузчика – никогда заранее не знаешь, как стоят часы на другой машине. Мелочь, а приятно :) |