И всичко започва с рестартиране Зареждане и инициализиране на системата
29 октомври 2008 г
Съдържание
Интерактивен контрол на процеса на изтегляне
Възниква въпросът - може ли потребителят да повлияе на процеса на изтегляне? Отговорът на него ще бъде положителен. По време на системата за зареждане на потребителя се дава свобода на избор три пъти: избор на дял за зареждане в началния етап boot0, избор на интерактивен контрол на етап boot2 и избор на режим на зареждане веднага след стартиране на зареждащия механизъм. И във всички тези случаи потребителят може да се намеси в процеса с ръцете си. За какво? Това е друг въпрос, а отговорът на него, надявам се, ще стане ясен от следващото изложение.
С избора на дял за зареждане всичко е ясно: той ви позволява да стартирате една от операционните системи, ако има няколко от тях, инсталирани на тази машина. Но на етап boot2 можете да прекъснете неговото изпълнение или по-скоро да избегнете стартирането на loader 'a. За да направите това, в паузата между избора на зареждане от BSD дяла и появата на съобщения за зареждане на ядрото и модулите (тази пауза се маркира от появата на мигащ символ _ на екрана и е много кратка, така че е необходима доста бърза реакция), трябва да натиснете произволен клавиш. Отговорът ще бъде подкана като:
В подканващия ред можете да посочите опция за зареждане, различна от тази по подразбиране. Например, можете да изтеглите директно файла с изображението на системното ядро. Това може да има някакъв смисъл след възстановяване на ядрото - ако новото се окаже, че не е конфигурирано достатъчно правилно за зареждане (но - уви - достатъчно за компилиране).
За да направите това, трябва да конструирате пътя до старото ядро по образ и подобие на версията по подразбиране. Тоест уточнете:
- номера на диска в машината в съответствие с разбирането на BIOS ( 0 е първият от парите, 1 е вторият и т.н. извънв зависимост от реда на свързване);
- неговият интерфейс - в примерната реклама символизира ATA диск (за SCSI диск ще бъде da, за флопи диск ще бъде fd);
- номер на IDE канала (0 - главен, 1 - подчинен);
- раздел в смисъла, използван от BSD етикета, т.е. частта от среза, запазена за основната файлова система на BSD ( a ;
- името на файла на старото изображение на ядрото е /kernel.old.
Ако на диска има няколко първични дяла от различни типове, тогава дяловете от тип, различен от BSD, ще бъдат пропуснати и буквата a (очевидно изображението на ядрото може да лежи само в основната файлова система) ще се отнася до първия подраздел на среза с идентификатор 165 (дори ако ще бъде четвъртият на диска).
Въпреки това, същата процедура - зареждане на старото ядро - може (и трябва, тъй като е много по-лесно) да се извърши чрез зареждащия инструмент, към разглеждането на интерактивните възможности на който преминаваме.
Менюто на товарача предлага достатъчен избор от режими за нормални ситуации, но всички необичайни (това са те) очевидно не покриват. По-специално, опцията за зареждане на старото ядро не е предоставена в менюто. За щастие, предпоследният елемент от менюто решава този проблем (и много други заедно с него).
И така, избирайки шестия елемент от менюто -Escape to loader prompt - се озоваваме в средата на командния интерпретатор на зареждащия механизъм. Има интерфейс, подобен на обвивката - командите с техните опции и аргументи се въвеждат след подкана, която изглежда като
От гледна точка на удобството на интерактивната работа - не GRUB, разбира се: нито автоматично довършване, нито история на командите, опциите за редактиране са ограничени до клавишаBackspace. Но с основната си роля - въвеждане и изпълнение на вградени команди - товарачът се справя доста добре.
Освен това има доста от тези команди: може да бъде пълен списък с тяхполучите, като въведете въпросителен знак в командния ред. Налична е и помощ - командата help ще даде кратка подсказка, help command_name - по-подробна информация за използването на командата argument. Синтаксисът на командата обаче също е подобен на обвивката, така че не би трябвало да има никакви затруднения с това.
Вградените команди на товарача могат да бъдат разделени на три части според предназначението им:
- да получават информация;
- за конфигуриране на буутлоудъра;
- всъщност за контрол на процеса на изтегляне.
Командата lsdev показва списък с дискови устройства, налични в машината, техните първични дялове (срезове) и логически дялове в последните - разбира се, само за дялове, разделени според правилата за оформление на BSD). Опцията -v осигурява подробен изход.
Командата show изпълнява подобна функция, но по отношение на променливите на буутлоудъра. Даден без аргумент, той извежда стойностите за всички дефинирани променливи. Ако зададете име на променлива като аргумент, ще се покаже само нейната стойност. Разрешени са множество аргументи, разделени с точка и запетая.
Конфигурационните команди ви позволяват да задавате или изчиствате променливи на зареждащия механизъм, да зареждате или премахвате модули на ядрото. Както вече споменахме, самото ядро, с определен предварително дефиниран набор от модули и променливи, се зарежда преди менюто на зареждащия инструмент и неговия команден интерпретатор. Така че, с помощта на подходящите команди, тези предварително дефинирани набори могат да бъдат леко коригирани (или напълно променени). Това може да е необходимо, ако конфигурацията на ядрото по подразбиране не е заредена по някаква причина (често конфликт между системите за пестене на енергия на лаптопа и системните модули на ACPI), за целите на отстраняване на грешки или просто за задоволяване на любопитството.
Първо, нека разгледаме командите за управление на модула. Това- двойка команди за зареждане и разтоварване съответно за зареждане и премахване на модули. Първият се използва с аргумента име_на_модула, който може да се търси (с помощта на ls ) в директорията /modules, ако е необходимо - името в аргумента се дава без суфикса *.ko. Командата за разтоварване със същия аргумент ще премахне посочения модул, без аргументи ще премахне всички модули като цяло, позволявайки конфигурацията да започне от нулата.
Командите за зареждане и разтоварване също се отнасят за ядрото като цяло. Да, чрез командата
можете да разтоварите ядрото по подразбиране от паметта (например, ако се окаже неработещо) и с помощта на командата
заредете старото, работоспособно ядро.
Двойка команди с подобна цел - set и unset - също съществуват за управление на променливите на средата на буутлоудъра. Тези променливи се използват за промяна на текущото дисково устройство, указване на местоположението на основната файлова система, дефиниране на пътища към модули на ядрото, различни от /modules по подразбиране, и т.н. Това се прави с командата set в съответствие със синтаксиса на C-shell, например:
Указва текущото дисково устройство по отношение на "disk#_slice#_partition".
Допускат се няколко стойности за една променлива - те се разделят с точка и запетая. Например командата
дефинира местоположението на модулите на ядрото - главната, модулите на директорията по подразбиране и директорията /path2mymodule : очевидно е, че ако просто дефинирате пътя до вашите собствени модули в тази променлива, информацията за местоположението на модулите по подразбиране ще бъде загубена.
Някои променливи просто активират или деактивират някои действия и съответно техните булеви стойности са ДА или НЕ. Естествено, те се нуждаят от гранулирани променливи, определящи какво им е позволено да правят. Например променлива
самопозволява изпълнението на персонализирани конфигурационни скриптове и променливата
определя кой скрипт трябва да се приложи в този случай.
Променливите също могат да се използват за определяне на режими на зареждане. Например след задаване на променливата
изтеглянето ще се извърши в режим за един потребител.
Дефиницията на променлива може да бъде отменена с командата
В някои случаи еквивалентът би бил да се дефинира променлива с булева стойност NO или думата disable в името.
За пълен списък на вградените променливи на средата на буутлоудъра вижте съответната страница с ръководство:
И накрая, команди за управление на изтегляне. Най-важното от тях е boot, без опции или аргументи, карайки ядрото да бъде незабавно заредено в неговата конфигурация по подразбиране или текуща (т.е. със заменени променливи и модули). /p>
Опциите на командата за зареждане указват режима на зареждане. Например командата
ще предизвика зареждане в режим на един потребител. Това е еквивалентно на изпълнение на същата команда без опции, след първо задаване на променливата boot_single.
Аргументите на командата за зареждане могат да указват името на изображението на ядрото, изпълнимия скрипт за зареждане и т.н. Същият сакраментален пример: команда
ще зареди старото ядро, подобно на командата за зареждане без опции след изпълнение на двойката
Въпреки това, първият отбор на тази двойка все още не боли - за да се избегне. Особено ако новото ядро е сглобено доста криво.
Тук не беше казано за всички функции на интерактивния режим на буутлоудъра на BSD - само за тези, които случайно използвах. По-подробна информация може да бъде намерена не само в man (8) loader , но и директно чрез четене на помощния файл:
И не е задължително в процесауправление на изтеглянето - по-добре е да направите това предварително.
Коментари
ee /etc/rc.conf vi /etc/rc.conf - което предпочитате.
"ttyv8 "/usr/local/bin/kdm -nodaemon" xterm off secure - трябва да е "on". в ttyv8 обикновено - xdm, kdm в ttyv9
(hd0,1 според GRUB, /dev/ad1s1 според Free)