До цього моменту описувалася загальна процедура завантаження. Тепер деякі важливі (і складні) її етапи необхідно розглянути докладно, проаналізувавши особливості роботи кожної з тестових операційних систем.
А почнемо ми знову з етапу включення живлення і завантаження ядра. На традиційному UNIX-обладнанні це простий процес, який заслуговує на лише кількох рядків опису. Однак якщо система встановлена на персональному комп'ютері, то все значно складніше. Нам доведеться дати багато вступної інформації, щоб ви змогли зрозуміти суть подій, що відбуваються.
Якщо ви не працюєте на персональному комп'ютері, переходьте безпосередньо до параграфу 2.3.
Чим персональний комп'ютер відрізняється від фірмового обладнання
Коли комп'ютер завантажується, починає виконуватися код, записаний в ПЗП. Точне його розташування і структура залежать від типу обладнання. У комп'ютерах, створених спеціально для UNIX, код «прошивається» розробником, який заздалегідь задає алгоритм підключення пристроїв, базової ініціалізації мережі і розпізнавання локальних файлових систем. Це дуже зручно для системного адміністратора. Йому досить ввести ім'я нового файлу ядра, а код ПЗУ автоматично виявить і прочитає цей файл.
Вбудований код BIOS знає про деякі основні пристрої, розташованих на материнській платі, зокрема про контролері IDE (і жорстких дисках), клавіатурі, послідовних і паралельних портах. А SCSI-адаптери розпізнають тільки ті пристрої, які підключені безпосередньо до них. Виявлення конфліктів між різними рівнями BIOS може стати справжнім кошмаром. Найскладніше зрозуміти те, як відбувається вибір пристрою, з якого повинна бути проведена завантаження.
Процес завантаження ПК
У сучасних комп'ютерах BIOS-програми «розумніші», ніж раніше. Вони дозволяють на етапі завантаження входити в режим конфігурації, утримуючи одну або дві клавіші. Як правило, назва цих клавіш відображаються на екрані, щоб їх не потрібно було шукати в документації.
В режимі конфігурації можна вибрати, з якого пристрою потрібно робити завантаження. Як правило, це дисковод для гнучких дисків, перший IDE-дисковод CD-ROM або перший жорсткий диск IDE. Нам би хотілося пояснити вам, як все працює, але, на жаль, це неможливо, так як дана стадія процесу завантаження знаходиться під контролем виробників комп'ютерів і їх численних BIOS-програм. Вони встановлюють свої власні правила гри, яких доводиться дотримуватися.
Коли комп'ютер визначив, з якого пристрою слід завантажуватися, проводиться зчитування перших 512-ти байтів з диска. Цей сегмент диска відомий як головний завантажувальний запис (ГЗЗ). У ній міститься програма, яка повідомляє комп'ютера про те, в якому розділі диска знаходиться програма вторинної завантаження (завантажувач ОС). Додаткова інформація про розділи дисків на персональних комп'ютерах і головною завантажувального запису наводиться в главі 8.
Стандартна програма ГЗЗ дає комп'ютера вказівку витягти завантажувача ОС з першого розділу диска. Linux і FreeBSD підтримують більш складні програми, які знають, як працювати з декількома операційними системами і ядрами.
Коли програма ГЗЗ знаходить розділ, з якого буде виконана завантаження, вона намагається запустити завантажувальний програму, пов'язану з цим розділом. У разі успіху цієї програми передаються повноваження щодо подальшої завантаженні ядра.
LILO: завантажувач Linux
Завантажувач LILO неймовірно складний і в той же час жахливо нетямущий. У ньому підтримується безліч можливостей, відсутніх у інших завантажувачів, але немає деяких елементарних властивостей.
Завантажувач LILO входить до складу практично всіх дистрибутивів Linux, включаючи Red Hat. При першій установці системи інсталяційні сценарії створюють копію LILO зі стандартними параметрами завантаження. Якось вплинути на цей процес не можна. LILO не так вже необхідний для завантаження Linux, але це частина системи. Доведеться навчиться її любити ...
LILO може бути встановлений в головний завантажувальний запис диска або в завантажувальний запис кореневого розділу Linux. Конфігурація і інсталяція завантажувача здійснюється за допомогою програми lilo. яка витягує параметри конфігурації з файлу /etc/lilo.conf. Щоб змінити налаштування завантажувача, досить відредагувати цей файл і повторно запустити програму lilo. Цю процедуру необхідно проробляти кожного разу при зміні процесу завантаження - зокрема, кожен раз, коли додається новий завантажувальний розділ або створюється нове ядро.
Нижче наведено вміст файлу lilo.conf для системи, в якій є робоче і резервне ядро:
boot = / dev / hda # поміщаємо завантажувач в ГЗЗ
root = / dev / hda1 # задаємо кореневий розділ
Щоб завантажити резервне ядро, введіть його мітку в рядку запрошення.
Модуль завантаження у FreeBSD простий і ефективний. Він розділений на дві частини: одна знаходиться в головний запис завантаження, а друга - в кореневому розділі FreeBSD. Обидві частини встановлюються окремо.
Первинний завантажувач інсталюється за допомогою команди boot0cfg. Наприклад, команда
поміщає першу частину завантажувача в ГЗЗ першого IDE-диска системи. Тут практично нічого не потрібно міняти (а найчастіше це зробити просто неможливо.) В процесі завантаження модуль переглядає список доступних дисків (витягується з BIOS) і знаходить розділи, які, на його думку, є завантажувальними. Перелік розділів відображаються у вигляді невеликого меню:
Додаткову інформацію про тонкої настройки первинного завантажника можна отримати на сторінці інтерактивного керівництва, присвяченій програмі boot0cfg.
Другий модуль безпосередньо відповідає за завантаження FreeBSD і дозволяє користувачеві передати ядру додаткові параметри. Інсталяція модуля здійснюється за допомогою команди dicklabel -B. Програма dicklabel є досить потужною: вона має безліч опцій і підтримує майже всі дискові накопичувачі. Ось так вона зазвичай викликається:
# Dicklabel -B / dev / wd0s1
Тут вторинний завантажувач записується в перший розділ першого IDE-диска.
Параметри конфігурації вторинний завантажувач витягує з наступних файлів:
Останній файл містить стандартні установки завантажувача і не повинен ніколи модифікуватися. Всі ці установки можна перевизначити за допомогою файлів loader.conf і loader.conf.local. а також з командного рядка на етапі завантаження системи. Інформацію про параметри завантажувача ви можете знайти на сторінках керівництва boot (8) і loader (8).
Оскільки на одному персональному комп'ютері можуть працювати кілька операційних систем, звичною є ситуація, коли комп'ютер завантажується в Мультисистемність режимі. Щоб домогтися цього, необхідно правильно налаштувати модуль завантаження, дозволивши йому розпізнати наявні на локальних дисках операційні систем.
Проблеми при багатосистемні завантаженні
Організація багатосистемні завантаження може бути болючим процесом. Нижче викладається інформація, яка дозволить вам зберегти безліч нервових клітин.
Коли на комп'ютері з багатосистемні завантаженням планується встановити одну з клієнтських версій Windows (95, 98 або Ме), це повинно бути зроблено до того. як будуть інстальовані інші системи. Дані версії Windows занадто дурні і не припускають, що на комп'ютері може бути встановлена якась інша ОС. Вони завжди займають перший розділ першого диска, переписуючи в процесі інсталяції існуючі програми завантаження.
Щоб змусити цього завантажувача розпізнавати розділи UNIX, необхідно попередньо інсталювати UNIX і завантажиться з дискети або компакт-диска. Потім потрібно прочитати перший 512 байтів розділу UNIX (завантажувальний сектор розділу) і записати їх у файл. Це можна зробити за допомогою команди dd. Ось приклад її використання в Linux:
# Dd if = / dev / hda2 of = linux.bin bs = 512 count = 1
Додаткову інформацію про структуру файлу boot.ini можна отримати в інтерактивній базі знань на Web-сайті support.microsoft.com.
Ця дія має бути зроблено до того, як вторинний завантажувач буде записаний у файл і скопійований в розділ NT. По суті, весь процес повинен повторяться кожен раз, коли потрібно повторний запуск програми lolo.
Мультисистемні конфігурація LILO
Якщо LILO є головним загрузчиком (наприклад, на комп'ютері встановлено системи Linux і Windows 98), почніть зі стандартного процесу конфігурації LILO, описаного вище. Потім у міру необхідності можна додавати записи для інших операційних систем в файл /etc/lilo.conf.
Ось так буде виглядати запис, призначена для завантаження Windows з першого розділу першого IDE-диска:
Нижче наведено повний текст файлу lilo.conf для випадку, коли Windows завантажується з першого розділу, Linux - з другого, а FreeBSD - з третього:
boot = / dev / hda # поміщаємо завантажувач в ГЗЗ першого IDE-диска
delay = 20 # 2-секундна затримка, що дає користувачеві можливість вмешат
default = linux # за умовчанням завантажується Linux з другого розділу
image = / dev / hda1 # завантаження Windows з першого розділу
image = / dev / hda3 # завантаження FreeBSD з третього розділу
Після модифікації файлу lilo.conf програма lilo повинна бути викликана повторно. Не забудьте попередньо виконати її в тестовому режимі за допомогою опції -t.
Мультисистемні конфігурація FreeBSD
Завантажувач FreeBSD завжди намагається виявити завантажувальні розділи. Але можна самостійно повідомити йому про них, скориставшись опцією -mмаска програми boot0cfg. Параметр маска містить бітів маску розділів, у тому числі потрібно завантажуватися. Перший розділ представляється двійковим кодом 0001 (шістнадцятковий еквівалент - 0х1), другий розділ - кодом 0010 (еквівалент 0х2) і т.д. Наприклад, команда
# Boot0cfg -B -m 0x7
інсталює первинного завантажника і повідомляє йому про те, що розділи 1, 2 і 3 є завантажуваних (0х7 = 0111). У процесі завантаження на екрані відобразиться меню з трьома елементами - по одному для кожного розділу.
Уразливість в Apache CouchDB, що дозволяє зробити атаку на реєстр пакетів NPM
Linux витіснив інші ОС з рейтингу суперкомп'ютерів Top500
Реліз середовища розробки додатків KDevelop 5.2
Відбувся реліз інтегрованого середовища програмування KDevelop 5.2, повністю підтримує процес розробки для KDE 5, в тому числі з використанням Clang як компілятора. Код проекту.
Випуск Firefox 57 з багатопотоковим CSS-движком і новим оформленням
Відбувся реліз web-браузера Firefox 57, а також мобільної версії Firefox 57 для платформи Android. Firefox 57 є одним з найбільш значних випусків в історії проекту. У новій версії.