Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...

## А какво трябва да направя, ако искам да променя поредността, в която се стартират операционните системи при боот?

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#



Леонид е прав в случай, че си зелен, все пак е вожда на 300 убунтиста. И като начало ще направим копие на конфиг-файла на GRUB2.

spoiler :
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi

if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function recordfail {
set recordfail=1
if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}

if [ x$feature_default_font_path = xy ] ; then
font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4 b79e0149-8807-4497-b2a0-3ad8f7467cbe
else
search --no-floppy --fs-uuid --set=root b79e0149-8807-4497-b2a0-3ad8f7467cbe
fi
font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=en_US
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=10
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=10
fi
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 44,0,30,0; then
clear
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
set gfxpayload="${1}"
if [ "${1}" = "keep" ]; then
set vt_handoff=vt.handoff=7
else
set vt_handoff=
fi
}
if [ "${recordfail}" != 1 ]; then
if [ -e ${prefix}/gfxblacklist.txt ]; then
if hwmatch ${prefix}/gfxblacklist.txt 3; then
if [ ${match} = 0 ]; then
set linux_gfx_mode=keep
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=text
fi
else
set linux_gfx_mode=keep
fi
else
set linux_gfx_mode=text
fi
export linux_gfx_mode
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b79e0149-8807-4497-b2a0-3ad8f7467cbe' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4 b79e0149-8807-4497-b2a0-3ad8f7467cbe
else
search --no-floppy --fs-uuid --set=root b79e0149-8807-4497-b2a0-3ad8f7467cbe
fi
linux /boot/vmlinuz-4.8.0-41-generic root=UUID=b79e0149-8807-4497-b2a0-3ad8f7467cbe ro quiet splash $vt_handoff
initrd /boot/initrd.img-4.8.0-41-generic
}
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-b79e0149-8807-4497-b2a0-3ad8f7467cbe' {
menuentry 'Ubuntu, with Linux 4.8.0-41-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.8.0-41-generic-advanced-b79e0149-8807-4497-b2a0-3ad8f7467cbe' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4 b79e0149-8807-4497-b2a0-3ad8f7467cbe
else
search --no-floppy --fs-uuid --set=root b79e0149-8807-4497-b2a0-3ad8f7467cbe
fi
echo 'Loading Linux 4.8.0-41-generic ...'
linux /boot/vmlinuz-4.8.0-41-generic root=UUID=b79e0149-8807-4497-b2a0-3ad8f7467cbe ro quiet splash $vt_handoff
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.8.0-41-generic
}
menuentry 'Ubuntu, with Linux 4.8.0-41-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.8.0-41-generic-init-upstart-b79e0149-8807-4497-b2a0-3ad8f7467cbe' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4 b79e0149-8807-4497-b2a0-3ad8f7467cbe
else
search --no-floppy --fs-uuid --set=root b79e0149-8807-4497-b2a0-3ad8f7467cbe
fi
echo 'Loading Linux 4.8.0-41-generic ...'
linux /boot/vmlinuz-4.8.0-41-generic root=UUID=b79e0149-8807-4497-b2a0-3ad8f7467cbe ro quiet splash $vt_handoff init=/sbin/upstart
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.8.0-41-generic
}
menuentry 'Ubuntu, with Linux 4.8.0-41-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.8.0-41-generic-recovery-b79e0149-8807-4497-b2a0-3ad8f7467cbe' {
recordfail
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos4 --hint-efi=hd0,msdos4 --hint-baremetal=ahci0,msdos4 b79e0149-8807-4497-b2a0-3ad8f7467cbe
else
search --no-floppy --fs-uuid --set=root b79e0149-8807-4497-b2a0-3ad8f7467cbe
fi
echo 'Loading Linux 4.8.0-41-generic ...'
linux /boot/vmlinuz-4.8.0-41-generic root=UUID=b79e0149-8807-4497-b2a0-3ad8f7467cbe ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.8.0-41-generic
}
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 10 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-8E72EFAC72EF976D' {
insmod part_msdos
insmod ntfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 8E72EFAC72EF976D
else
search --no-floppy --fs-uuid --set=root 8E72EFAC72EF976D
fi
parttool ${root} hidden-
drivemap -s (hd0) ${root}
chainloader +1
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
set timeout=10
fi
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

Той се намира в /boot/grub/grub.cfg

Съдържанието му генерира менюто за избор на система при DUAL BOOT. Например, като това:

dualboot

Показаното от GRUB в случая предлага пет възможности, но две от тях (трета и четвърта) ми режат очите.
memtest86+ считам за фекаловоз и веднага след свежа инсталация на Ubuntu ги пускам в канализацията.

sudo apt-get remove memtest86+

След тази манипулация получаваме спартански нерафиниран GRUB.

nomemtets86

Внимателен взор подсказва, че наименованията им се извличат от съдържанието на grub.cfg. Да, така наречените menuentry. Излиза, че написаното в кавичките до съответното menuentry ще бъде визуализирано при избора. Чудесно и ето я втората манипулация. Тогава пишем по наш образ и подобие.

editedgrub

Красота! Моят GRUB най-красивият GRUB! Mister World GRUB просто и без право на обжалване.

А сега към въпроса от началото на темата.
Хората обикновено броят 1, 2, 3, 4, и т.н. Машините броят 0, 1, 2, 3 и т.н. В моя случай Windows е втори на опашката, Отваряме grub.cfg и някъде в началото търсим израз

set default="0".

Променяме на

set default="2"

Съхраняваме. Рестартираме и voila.

Windows води хорото.

winfirst

Край на въпроса.

XEROX

Всяка вечер се прибирам вкъщи с Леонид. Той няма личен автомобил, живее на 300м от мен. Леонид е мой ментор в микрохирургията. Дължа му много и в знак на признателност и благодарност го возя като куфар. Леонид е истински артефакт сред гладиаторите. По пътя си разказваме истории. Бивш танкист, служил на финландската граница. Издигал тайно антени, за да гледа вечер порно от финско. Друга история разказваше как се развел и се жени повторно, но заради новата си жена се отказва от еврейски си произход и приема православието. От Леонид разбрах, че Путин е завършил школата на КГБ втора степен, А това означава, че Путин също е гладиатор микрохирург. И тук спирам в призив, чрез телекинеза, да взимствате очите на Путин за миг. Вие, путиниста в този момент бихте изрязали тишината от екстаз, съзирайки израза

from /etc/grub.d and settings from /etc/default/grub.

Бъзикнете ли там Xerox ще ви признае за убунтист.

Какво има в кутията на Пандора. Киризим, моя бъзикан grub.

spoiler :
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
GRUB_INIT_TUNE="480 440 1"

Значението на променливата GRUB_TIMEOUT съм променил от 10 на 5. Това е времето в секунди, което GRUB ви предлага за избор на система. Аз съм го намалил на 5 секунди. Повечето е загуба на време. Отделно съм пуснал на свобода променливата GRUB_INIT_TUNE. По този начин компата бибитка. Навик. Съхранете манипулациите. Но, за да влязат в сила задължително обновете GRUB,

sudo update-grub

UPDATE-GRUB

Рестартирайте и ново 20. Този файл пренаписва горния и нещата се пренареждат по подразбиране.

nomemtets86

Но, ти вече знаеш как да направиш GRUB по свой образ и подобие. Спомни си нещата преди Xerox да поиска още манипулации.

THIS IS UBUNTU

Освен списък от инсталирани операционни системи, GRUB2 предлага в своето меню пункт - Advanced options for Ubuntu. Влизайки в него получавате възможност за избор на конкретно ядро налично в системата ви, а под него подлежащaтa му възможност за възстановяване. В моя случай са налични три версии.

multikernels

Начин да разберете същото в заредена система е следната команда.

dpkg -l linux-* | awk '/^ii/{ print $2 }' | grep -e [0-9]

kernels

И съответно потвърждение на избора.

uname

Ядрата се трупат от последвали обновявания на системата, като най-новото се зарежда по подразбиране. Старите чистя с Ubucleaner на Smarter скрипта.

old kernels

В началото на темата преупредих, да не се редактира файл /boot/grub/grub.cfg. Действията описани там не са ръководство, а по-скоро признание на автора престъпил красноречивото предупреждение на коментара, оставен в началото на файла.

#
# DO NOT EDIT THIS FILE
#

grub.cfg се генерира автоматически вследствие действията на няколко скрипта при инициализация на системата. Това обяснява, защо след всяко обновяване на grub.cfg бива създаван наново и всички редакции отлитат. Обяснението е, че необходимите параметри се намират в /etc/default/grub. Този файл разгледахме в втори спойлер и удобното при него е, че е изложен в човекоразбираем формат ОПЦИЯ=ЗНАЧЕНИЕ.

Назад към въпроса в началото на темата, като отново ползвам тази снимка.

nomemtets86

Значение на GRUB_DEFAULT задава система по подразбиране.

Ubuntu по подразбиране
GRUB_DEFAULT=0

Windows по подразбиране
GRUB_DEFAULT=2

При ядро по избор синтаксиса придобива този вид.
GRUB_DEFAULT="1>6"

1 е позицията на Advanced options for Ubuntu
6 е позицията на ядро 4.4.0-62-generic

Относно recovery mode.
Тази опция се ползва при авария. Накратко.
  • resume - нормално зареждане на системата;
  • clean - освобождаване място на диска, премахва излишните пакети;
  • dpkg - възстановяване на повредени пакети при внезапно прекъсване;
  • failsafeX - минимални графически настройки при проблеми с Х сървъра;
  • fsck - проверка на файловата система за грешки;
  • grub - обновяване настройките на Grub;
  • network - добавя работа с мрежа;
  • root - вход в терминала на root;
  • system-summary - информация относно системата.
Лампата на Аладин.
Ако при избор на система погрешно натиснем клавиш - спасението е позната клавишна комбинация Ctrl + Alt + Delete. Това ще прекъсне инициализацията и отново ще бъдете върнати към начален избор в GRUB2.






до нови срещи   ^.^
18.03.2017 profruit 

2 Response to "Манипулации над GRUB2"

  1. Poli Said,

    Този коментар бе премахнат от автора.

     

  2. Poli Said,

    Този коментар бе премахнат от автора.

     

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога