Начално зареждане на системата

 

1.       Въведение. 1

2.       POST.. 1

3.       GRUB2 (GRand Unified Bootloader, version 2). 1

4.       Зареждане на ядрото. 1

5.       Стартиране на системата. 1

6.       Конфигуриране на GRUB.. 1

Въведение. 1

Редактиране на конфигурационния файл. 1

Ø     Избор на операционна система стартирана по подразбиране. 1

Ø     Избор дали да се показва менюто. 1

Ø     Управление на времето за показване на менюто. 1

Ø     Избор на изображение за фон. 1

Ø     Други настройки. 1

Стартиране на скриптовете. 1

7.       Пример – при загубена root парола в Ubuntu. 1

Рестартиране на компютъра за достъп до GRUB менюто. 1

Редактиране на менюто. 1

Промяна на менюто. 1

Задаване на нова парола. 1

 

        1.        Въведение

Началното зареждане започва с включването на компютъра и включва 2 етапа – зареждане (boot) и стартиране (startup). Етапът boot започва с включването на компютъра и завършва когато ядрото е инициализирано и  systemd е стартиран. Етапът startup има задачата да доведе Linux системата в работоспособно състояние.

Етапът  зареждане включва следните подетапи:

·        POST;

·        Boot loader (GRUB2);

·        Инициализация на ядрото;

·        Стартиране на  systemd, родителя на всички процеси.

GRUB2 и systemd са повсеместно използвани понастоящем в съвременните Linux дистрибуции. Исторически са използвани и други софтуерни опции (като например Boot loader LILO), които могат да се срещат още в някои дистрибуции.

        2.        POST

Първата стъпка от началното зареждане няма нищо общо с Linux. Това е хардуерната част от началното зареждане  и е еднаква за всички операционни системи. При включването на компютъра се включва POST (Power On Self Test), която е част от BIOS (Basic I/O System) или от по-съвременната система UEFI (Unified Extensible Firmware Interface).

POST проверява базовата функционалност на хардуера, след което локализира boot сектора, на всички закачени устройства подредени по начин задаван от потребителя в CMOS (памет поддържана от батерия). Първият намерен валиден boot loader сектор се зарежда в паметта и му се предава управлението.  

Повечето Linux  дистрибуции използват три boot loader -  GRUB, GRUB2, и LILO. GRUB2 е най-новият и понастоящем е използван много по-често от другите по-стари опции.

        3.        GRUB2 (GRand Unified Bootloader, version 2)

GRUB2 е програмата, която намира ядрото на операционната система и го зарежда в паметта.  Той е проектиран да позволява зареждането на различни операционни системи, както на такива със свободен лиценз, така и на защитени от частни лицензи.

Той позволява зареждането на различни ядра от коя и да е зададена Linux  дистрибуция, което дава възможност за зареждане на старо ядро, ако новата версия е несъвместима с някакъв хардуер. При зареждането чете настройките си от конфигурационния файл /boot/grub/grub.conf.

GRUB1 понастоящем се разглежда като остарял (legacy) и е заместен с по-съвременният GRUB2, който е пренаписан GRUB1. В изложението по надолу под GRUB ще бъде разбиран GRUB2

Изпълнението на GRUB преминава през различни етапи и завършва със зареждането на избраното ядро на операционната система.

Подробна информация за него може да бъде намерена в GRUB manual.

        4.        Зареждане на ядрото

Всички ядра се съхраняват в само разархивиращ се компресиран формат в директория /boot заедно с хардуерна информация за компютърната система.

След като ядрото се разархивира, то зарежда systemd, който е бащиният процес на всички процеси. С този под етап  завършва етапа bootядрото на операционната система и systemd функционират, но нищо друго още не работи

        5.        Стартиране на системата

Стартирането на системата се извършва от systemd.

Той започва с закачването (mount) файловите системи, които са описани във файла  /etc/fstab, включително всички swap файлове или дискови дялове. След това има той получава достъп до конфигурационните файлове в директорията   /etc/systemd/system/ за да определи в какво състояние (  target) трябва да стартира компютъра.

Стартирането може да бъде извършено в различни състояния (runlevels). Най-често използваните са :

·        5 (graphical target) – използвано от работни станции с графичен потребителски интерфейс

·        3 (multi-user.target) – работеща система само с команден интерфейс, използвано от сървъри

·        1 (rescue.target) – един потребител с конзола за поддръжка.

В какво състояние да се стартира компютъра може да се зададе чрез подходящо конфигуриране на GRUB.

        6.        Конфигуриране на GRUB

Въведение

Главният конфигурационен файл на GRUB е /boot/grub/grub.cfg, но той не се редактира директно, а се създава от скриптове разположени в директорията /etc/grub.d/, които ползват въведените настройки във файла  /etc/default/grub.

Например в Ubuntu има скриптове, които конфигурират как да изглежда менюто, както и скриптове, които проверяват твърдите дискове за инсталирани други операционни системи - Windows, други Linux дистрибуции, Mac OS, … и ги добавят автоматично към менюто на GRUB2.

 Файлът /boot/grub/grub.cfg се създава автоматично при изпълнение на командата:

$sudo update-grub

При изпълнение на тази команда скриптовете от директорията /etc/grub.d/ използват данните от файла /etc/default/grub за създаване на файла /boot/grub/grub.cfg,  който се използва при стартирането на системата. Това налага използването на командата всеки път при въвеждането на промени в /etc/default/grub за да могат промените да бъдат отразени.

С други думи въвеждането на промени в менюто за начално зареждане се осъществява на две стъпки – редактиране на конфигурационния файл /etc/default/grub и стартиране на командата grub-update.

Редактиране на конфигурационния файл

Конфигурационният файл се отваря с текстов редактор – например

$sudo nano /etc/default/grub

Файлът /etc/default/grub е малък и е лесен за редактиране. Като при всеки  друг конфигурационен файл трябва да бъдат променени желаните опции и файлът да бъде записан. Ако някоя от описаните по-долу опции я няма – тя се добавя на нов ред. Ако съществува –  редът се редактира.

Ø  Избор на операционна система стартирана по подразбиране

Редактира се редът GRUB_DEFAULT. По подразбиране се задава  GRUB_DEFAULT=0, което означава че се стартира първата операционна система намерена от скриптовете. Номерът трябва да бъде сменен на 1 за втората, на 2 за третата.

Възможно е да се специфицира не номер, а етикет на операционната система зададен от скриптовете. Например, ако в менюто има операционна система Windows 10 (loader), може да се използва GRUB_DEFAULT=”Windows 10 (loader)”.

Възможно е също така да се използва GRUB_DEFAULT=saved и GRUB автоматично ще зарежда последната избрана операционна система. За да работи трябва да бъде добавен ред GRUB_SAVEDEFAULT=true.

Ø  Избор дали да се показва менюто

Когато има заредена само една операционна система по подразбиране менюто не се показва, а системата се стартира автоматично. В конфигурационния файл опцията е GRUB_HIDDEN_TIMEOUT=0 – скрито меню и операционна система стартирана след 0 секунди. В този случай менюто отново може да се види като се натисне клавиша shift по време на стартирането. За увеличаване на времето на стартирането (повече време за натискане на shift) може да се използва GRUB_HIDDEN_TIMEOUT=5. В този случай се извежда празен екран за 5 секунди, през които може да бъде натиснат shift.

За да се показва менюто редът трябва да бъде превърнат в коментар с въвеждане на   #  в началото — #GRUB_HIDDEN_TIMEOUT=0.

Ø  Управление на времето за показване на менюто

Ако менюто не е скрито GRUB ще зареди автоматично подразбиращата се операционна система след определен период от време, обикновено 10 секунди. За промяна на този период трябва да се редактира редът  GRUB_TIMEOUT=10 и да се въведе необходимото време в секунди.

За да бъде избегнато автоматичното зареждане (винаги да се чака избор с enter) трябва редът да бъде променен на GRUB_TIMEOUT=-1

Ø  Избор на изображение за фон

Редът GRUB_BACKGROUND задава изображение, което се използва като фон на менюто. По подразбиране GRUB  използва черно бял екран. Може да бъде добавен ред за специфициране на файл с фоново изображение например GRUB_BACKGROUND=”/home/user/Pictures/background.png.

Има ограничения за файла.  GRUB поддържа JPG/JPEG но те са ограничени до 256 цвята. Файловете PNG поддържат произволен брой цветове и винаги могат да се използват. Могат също така да бъдат използвани  и TGA файлове.

Ø  Други настройки

Това не са всички настройки, но това са някои от най-често променяните. Някои настройки могат да бъдат променяни с редактиране на скриптовете в директорията  /etc/grub.d .

Допълнителна информация може да бъде намерена в GRUB manual.

Стартиране на скриптовете

След извършената редакция трябва да се стартират скриптовете за да се създаде новият конфигурационен файл /boot/grub/grub.cfg:

$sudo update-grub

Забележка: Ако искате да забавите стартирането на Windows опцията (например за да можете спокойно да натиснете F8 за преминаване в  save mode) в административен команден прозорец на Windows се задава командата

bcdedit /set {default} bootmenupolicy legacy

и се рестартира. Възстановяването се извършва  отново в административен команден прозорец на Windows с командата:

bcdedit /set {default} bootmenupolicy standard

        7.        Пример – при загубена root парола в Ubuntu

Необходим е непосредствен (а не отдалечен) достъп до компютъра, за да се има достъп до настройките на GRUB.

Рестартиране на компютъра за достъп до GRUB менюто

 

Редактиране на менюто

Отива се на реда с който се стартира UBUNTU и се натиска клавиш "e" за редакция.

 

Промяна на менюто

Намира се редът който започва  linux  и се редактира за да бъде включен   read-write mode rw и init=/bin/bash. Например

 

От:

linux     /boot/vmlinuz-4-4.0-22-generic root=UUID=43ad24d3-e\

c5b-44ee-a099-a88eb9520989 ro  quiet splash $vt_handoff

 

Да се промени на:

linux     /boot/vmlinuz-4-4.0-22-generic root=UUID=43ad24d3-e\

c5b-44ee-a099-a88eb9520989 rw init=/bin/bash

 

 

След което се натиска  CTRL+x или F10 за зареждане ( boot).

Задаване на нова парола

След зареждането трябва да се появи командния ред на root и да има монтиран root дисков дял за четене и писане. Това може да се провери с командата:

root@(none):/# mount | grep -w /

Нова парола се задава с команда

root@(none):/# passwd

След което системата се зарежда отново

root@(none):/# exec /sbin/init