Переклад: Станіслав Рогін. ASPLinux
Ця версія Lilo mini-HOWTO заснована на роботі Cameron Spitzer ([email protected]) і Alessandro Rubini ([email protected]).
Цей документ є частиною проекту Linux HOWTO.
З тієї причини, що документація в початкових текстах Lilo (та, що знаходиться в каталозі / usr / doc / lilo-версія) дуже складна для розуміння, у багатьох користувачів виникають деякі проблеми при написанні власного файлу /etc/lilo.conf. Цей документ призначений для того, щоб підтримати їх і дати мінімальну інформацію, а також привести 5 прикладів інсталяції Lilo:
Перший приклад: класична інсталяція "Linux і щось ще".
Наступний приклад покаже, як встановити Lilo на вінчестер, підключений до / dev / hdc. який завантажиться як / dev / hda. Це зазвичай буває потрібно, коли ви встановлюєте новий Linux на вашій вже працюючій машині. У ньому також описано, як завантажуватися зі SCSI-дисків, коли ваш BIOS досить сучасний.
Третій приклад показує, як завантажити Linux, чий кореневий розділ не доступний BIOS.
Наступний приклад використовується для великих дисків, з якими проблеми і у BIOS-а і у DOS-а (цей приклад вже трохи застарів).
Останній приклад показує, як відновити пошкоджений диск, якщо пошкодження було нанесено шляхом встановлення іншої операційної системи.
Коли Lilo завантажує систему, він використовує виклики BIOS для завантаження ядра Linux з диска (IDE, флоппі або що-небудь ще). Таким чином, ядро має перебувати в деякому місці на диску, доступному BIOS.
Директива boot = в файлі /etc/lilo.conf вказує Lilo, де повинен знаходитися його головний завантажувач (primary boot loader). У загальному випадку, ви можете вибрати або головний завантажувальний сектор (master boot record) (/ dev / hda) або завантажувальний сектор кореневого розділу вашого Linux-а (це зазвичай / dev / hda1 або / dev / hda2).
Якщо у вас є інша операційна система на вашому жорсткому диску, вам краще встановити Lilo в завантажувальний сектор вашої кореневої файлової системи замість MBR. В цьому випадку ви повинні помітити ваш кореневий розділ, як "завантажується" ( "bootable"), використовуючи команду "a" в програмі fdisk або команду "b" в програмі cfdisk. Якщо ви не зміните свій MBR, вам буде простіше прибрати свій Linux і Lilo, якщо це знадобиться.
Звичайно завжди можна уникнути "правил" подібних вищезазначеного. Ви можете встановити Lilo в MBR, навіть якщо у вас встановлена інша система. Наприклад, якщо ви встановили Windows NT 4.0, як першу операційну систему на вашій машині, тоді завантажувач NT буде записаний в MBR, таким чином ваш NT повинен був завантажуватися без проблем. Після установки Linux і вибору - встановити Lilo в MBR, Lilo перепише завантажувач NT. Наступного разу при завантаженні машини ви не зможете завантажити NT. Але немає ніяких проблем. Ви просто повинні відредагувати ваш /etc/lilo.conf і додати новий запис для NT. Наступного разу, перезагрузив систему, ви побачите в Lilo запис для меню.
Я особисто не використовую налаштування LBA і LARGE в BIOS-е (але у мене на машині тільки Linux); це одні з найжахливіших винаходів, викликане неефективністю світу PC. Таке рішення вимагає, щоб ядро знаходилося на перших 1024 циліндри вінчестера, але це не проблема, тому що ви розбиваєте диск на розділи, і виділяєте під кореневий розділ невеликий простір (що ви і повинні завжди робити в будь-якому випадку).
Якщо на вашому диску є інша операційна система, то вам напевно не можна буде змінити настройки BIOS, інакше ця ОС перестане працювати. Всі останні версії Lilo розуміють настройки LBA і LARGE.
Якщо у вас більше, ніж один вінчестер, і деякі з них використовуються тільки Linux-ом, і не включаються в процес завантаження, ви можете сказати BIOS, що їх немає. Ваша система буде завантажуватися швидше, а Linux автоматично визначить їх наявність при завантаженні. Я часто міняю вінчестери в моїх комп'ютерах, що не ніколи не чіпаю конфігурацію BIOS.
Коли ви бачите запрошення Lilo, ви можете натиснути
root =. ви можете вказати Linux підключити кореневий розділ, відмінний від того, що написано в lilo.conf. Наприклад, в моїй системі, є маленький розділ, в якому знаходиться мінімальна установка Linux, і я зможу завантажити систему, навіть якщо, помилково, повністю зіпсую основної кореневої розділ.
init =. ядра Linux версії 1.3.43 і новіше можуть виконати команду, відмінну від запуску / sbin / init. відповідно до того, що написано в командному рядку. Якщо у вас виникають проблеми в процесі завантаження, ви можете отримати доступ до чистої системі, набравши в командному рядку init = / bin / sh (коли ви отримаєте запрошення оболонки (shell prompt) вам швидше за все знадобиться підключити диски: спробуйте "mount -w - n -o remount /; mount -a ", і не забудьте зробити" umount -a "перед вимиканням комп'ютера).
Число: ввівши ядру в командному рядку число, ви змушуєте init запуститися на специфічному робочому рівні (run-level) (за замовчуванням зазвичай це бувають 3 або 2, відповідно до того, який у вас дистрибутив). Прочитайте документацію по команді init. вивчіть файли / etc / inittab і /etc/rc*.d для подальших експериментів.
Коли Lilo перезаписує завантажувальний сектор, він залишає резервну копію у файлі /boot/boot.xxyy. де xxyy - головне і залежне число пристрої (major and minor numbers), в шістнадцятковому вигляді. Ви можете побачити головне і залежне число вашого диска або розділу, набравши команду "ls -l / dev / device". Наприклад, перший сектор пристрою / dev / hda (головне число - 3, залежне - 0) буде записано в файл /boot/boot.0300. установка Lilo на / dev / fd0 створює файл /boot/boot.0200 і установка на пристрій / dev / sdb3 (головне число - 8, залежне - 19) створить файл /boot/boot.0813. Зауважте, що Lilo не створить резервну копію, якщо файл вже існує, тому вам не треба турбуватися про збереження цієї копії при перевстановлення Lilo (наприклад, після складання нового ядра). Резервні копії в каталозі / boot / завжди відображають загальну ситуацію до установки Lilo.
Якщо вам треба деінсталювати Lilo (наприклад, в дуже невдалому випадку - деінсталяції Linux), вам досить відновити вихідний завантажувальний сектор. Якщо Lilo встановлений в / dev / hda. просто наберіть "dd if = / boot / boot.0300 of = / dev / hda bs = 446 count = 1" (Я особисто роблю "cat /boot/boot.0300> / dev / hda", але це не зовсім безпечно, так як це відновить і стандартну таблицю розділів, яку ви могли змінити з часу збереження завантажувального сектора). Ця команда значно простіше, ніж "fdisk / mbr" з DOS-а: вона дозволяє вам начисто видалити Linux з диска без завантаження чого-небудь, крім Linux-а. Після видалення Lilo не забудьте запустити команду fdisk Linux-а для видалення всіх Linux-розділів (fdisk в DOS-Е не видаляє не-DOS розділи) (Примітка перекладача: Це не вірно для так званого DOS 7.0, вбудованого в Windows 95/98) .
Якщо ви встановили Lilo в кореневий розділ (наприклад, в / dev / hda2), нічого особливого не треба робити для деінсталяції Lilo. Просто приберіть з диска все Linux-розділи за допомогою fdisk. Ви також повинні помітити DOS-розділ завантажуваних (bootable).
Багато установки Lilo використовують файл, подібний до наведеного нижче:
У вас може бути кілька секцій "image" і "other" - стільки, скільки захочете. Не дуже поширена ситуація - мати кілька образів ядер, налаштованих в файлі lilo.conf. якщо тільки ви не займаєтеся розробкою частин ядра (kernel development).
Якщо ви збираєте "zImage" -ядро, і воно більше половини мегабайта (досить часте явище для ядер версії 2.1), то вам потрібно зібрати замість zImage, великий zImage ( "make bzImage") за допомогою команди: "make bzImage". Для завантаження великого ядра не треба нічого додатково робити, але у вас повинна бути версія Lilo18 або новіша. Якщо у вас стара версія, поновіть (upgrade) пакет Lilo.
Тут я пропоную вам спосіб, як можна додати пункти в меню Lilo для того, щоб завантажити Linux або NT:
Перш за все я запропонував би встановити свіжий дистрибутив Windows NT 4.0 на ваш жорсткий диск. Я припускаю, що ви вже зробили резервну копію важливих даних, тоді установка NT повинна пройти без проблем. Під час установки NT, інсталятор не запитає вас, де розмістити завантажувач NT. Він буде поміщений в MBR (Master Boot Record) на жорсткому диску. Є можливість відновити попередній вміст MBR (наприклад від попереднього вмісту Lilo). Я запропонував би вам (до інсталяції NT) завантажити комп'ютер з дискети DOS, що має програму FDISK. У командному рядку a: \ введіть: fdisk / mbr і знову перезавантажте комп'ютер (без дискети).
Після успішної установки NT, ви побачите, що система використовує цілий жорсткий диск або певний розділ жорсткого диска (в залежності від того, що ви вибрали в процесі установки). Тобто рекомендується 'стиснути' розділ, де знаходиться NT, щоб звільнити деякий простір на диску. На цьому вільному просторі ви встановите Linux. Після того, як ваш NT налаштований і запускається, ви повинні завантажити комп'ютер, використовуючи дискету з утилітою Partition Magic. Це графічна утиліта дозволяє бачити всі розділи на всіх жорстких дисках, які у вас є. Ви зможете змінити розділи, не втративши дані. Перше - зробіть ваші існуючі розділи меншого розміру, таким чином ви отримаєте деякий вільне місце на диску для інших цілей. Хоча я вам раджу зробити резервну копію до того, як ви будете робити будь-які зміни розділів, я зазвичай роблю 'стиснення' розділів NT, коли NT встановлена в повному обсязі (тобто якщо з'явиться необхідність, то повторний запуск установки не викличе проблем). Partition Magic (або інша подібна утиліта) буде 'стискати' ваші дані на NT розділі (NTFS або FAT) в верхню чи нижню частину розділу. Ви можете самі вибрати, де розміщувати дані - на початку або в кінці диска (я віддаю перевагу, щоб дані NT розділу були на початку, т.ч. в кінці диска буде вільний простір). Після 'стиснення' ви можете перезавантажити систему (NT), щоб перевірити результат: використовуйте для цього Провідник Windows або Disk Administrator.
Поки все добре. Наступний крок - установка Linux. Візьміть ваш дистрибутив RedHat (я сподіваюся, що з іншими пакетами подібно), помістіть інсталяційний диск у пристрій і перезавантажте комп'ютер. Коли ви оберете тип установки (Gnome або KDE Workstation, Custom і т.п.) можна вибрати заплановані заздалегідь компоненти для установки, але я рекомендую спочатку встановити Workstation. Це краще, тому що установка Linux буде автоматично шукати вільний простір на (першому) жорсткому диску, зробіть все розділи необхідні Linux, відформатуйте їх належним чином і виберіть більшість опцій за замовчуванням, так установка пройде краще (пізніше, якщо ви хочете, ви можете або додати відсутні компоненти, або перевстановити Linux, вибравши Custom). Lilo запишеться в MBR.
Після закінчення установки Linux, ви повинні перезавантажити комп'ютер і після перезавантаження ви побачите тільки Lilo, з єдиним пунктом "Linux" в меню завантаження (або може бути більше, ніж один пункт, в разі, коли у вас многопроцессорная система). Але не панікуйте! Ваш Windows NT знаходиться там, де ви його встановили. Вам буде необхідно знайти і відредагувати файл /etc/lilo.conf. Спочатку, коли ви відкриєте цей файл, ви побачите тільки одну (або більше) записів для завантаження Linux. Ви повинні точно знати розташування (читай: розділ), де встановлено Windows NT, таким чином ви повинні додати відповідний запис в файл /etc/lilo.conf. Після того, як ви це зробите, запустіть Lilo, і при наступному перезавантаженні ви побачите обидва записи 'linux' і 'nt' в меню Lilo.
Файл lilo.conf. який я використовую для інсталяції Lilo виглядає приблизно так:
Директива "bios =" у файлі lilo.conf потрібна для того, щоб вказати Lilo, що думає про ваших пристроях Lilo. Виклики BIOS визначають флоппі-диски і жорсткі диски номерами: 0x00 і 0x01 означають флоппі-дисководи, 0x80 і більше означають вінчестери (старі версії BIOS могли працювати тільки з двома дисками). Тому "bios = 0x80" в попередньому прикладі означає "використовувати 0x80 у викликах BIOS при доступі до / dev / hdc".
Ця директива Lilo може бути застосовна і в іншій ситуації: коли, наприклад, ваш BIOS має можливість завантажуватися зі SCSI-дисків замість IDE. Коли є і IDE-, і SCSI-пристрої, Lilo не може визначити, до якого буде ставитися цифра 0x80, тому що користувач вибирає порядок в конфігураційних меню BIOS, і вони не доступні під час роботи Linux.
За замовчуванням Lilo вважає, що IDE-диски йдуть першими, тому, в іншому випадку, в файлі /etc/lilo.conf має перебувати приблизно наступне:
disk = / dev / sda bios = 0x80
У мене два IDE-диска, і один SCSI. SCSI-диск не видно з BIOS. Завантажувач Linux, Lilo, використовує виклики BIOS і може бачити тільки ті диски, які бачить BIOS. Мій дурний AMI BIOS може завантажитися тільки з "A:" або "C:" Моя коренева файлова система знаходиться на SCSI-диску.
Рішення полягає в тому, щоб тримати ядро, файл таблиць (map file) і ланцюговий завантажувач (chain loader) в Linux-розділі на першому IDE-диску. Зауважте, що необов'язково в цьому випадку мати ядро на кореневому розділі.
Другий розділ на моєму першому IDE-диску (/ dev / hda2. Linux-розділ для завантаження системи) підключений до / u2. Ось файл /etc/lilo.conf. який я використовував.
У мене на роботі в системі встановлений IDE-диск розміром 1Гб. BIOS може бачити тільки перші 504 Мб цього диска. (Тут Мб означає 2 ** 10 байт, а не 10 ** 6.) Тому у мене MS-DOS на 350 Мб розділі / dev / hda1 і мій кореневий розділ Linux розміром 120 Мб - / dev / hda2.
MS-DOS не зміг встановитися правильно, коли диск був чистий. У Novell DOS 7 була та ж проблема. На щастя для мене, "Аксесуари від IBM" були неповними - забули покласти дискету з програмою "OnTrack" в коробку з вінчестером. Вінчестер повинен був поставлятися з продуктом під назвою "OnTrack Disk Manager." Якщо у вас тільки MSDOS, я думаю, вам він знадобиться.
Тому я створив таблицю розділів за допомогою команди fdisk в Linux-е. MSDOS-6.2 відмовився від інсталяції в / dev / hda1. Він сказав щось типу "Ця версія MS-DOS тільки для нових установок, а на вашому комп'ютері вже є MS-DOS, тому отримаєте версію оновлення (upgrade release) від вашого дилера." А насправді диск був новий.
Яка невдача! Тому я знову запустив fdisk в Linux-е знову і видалив розділ 1. Задоволена цим MS-DOS 6.2 створила такий же в точності розділ, який я тільки що видалив і туди себе встановила. MS-DOS 6.2 також записала свій MBR на диск, але він не завантажувався.
На щастя, у мене було ядро Slackware на флоппі (створене програмою установки дистрибутива Slackware), тому я завантажив Linux і перезаписав Lilo поверх зламаного MBR MS-DOS-а. І все запрацювало. Ось файл /etc/lilo.conf. який я використовував:
Після того, як я це все встановив, я з'ясував, що розділ, що містить файли zImage, boot.b, map, chain.b і файли повідомлень, може мати файлову систему msdos, якщо тільки вона не зіпсована "Stacker" -ом або " Doublespace "-ом. Тому мій розділ DOS на / dev / hda1 міг стати розміром 500 Мб.
Я також з'ясував, що система "OnTrack" записала б таблицю розділів трохи в інше місце, ніж зазвичай, і, можливо, для сумісності змінила IDE-драйвер Linux-а. Але установка цього "OnTrack" зробила б неможливою завантаження зі стандартного ядра, що входить в поставку Slackware. До речі, потім IBM надіслав мені дискету з "OnTrack". Я подзвонив в службу підтримки OnTrack. Вони сказали мені, що Linux - погана система, тому що не використовує BIOS. Я викинув їх дискету.
Потім, я встановив Windows-95 в моєму офісі. Вона геть затерла мій прекрасний MBR Lilo, але залишила мої розділи з Linux в спокої. Ядра довго завантажуються з флоппі, тому я попрацював над настройками, щоб флоппі міг завантажувати ядро з IDE-диска.
Я зробив цей флоппі приблизно так:
Зауважте, що дискета повинна бути підключена до системи під час запуску інсталятора Lilo. щоб Lilo міг правильно побудувати свої таблиці.
Нижче наведено файл /etc/lilo.flop. Він майже такий же, як і попередній:
І останнє. Мені знадобилася MS-DOS 6.2 в моїй офісної системі, але я не хотів чіпати перший диск. Я встановив SCSI-контролер і диск, створив там файлову систему msdos за допомогою команди mkdosfs, і Windows-95 побачив його як "D:". Але, звичайно, MSDOS не міг завантажитися з D. Це не проблема, коли у вас є Lilo. Я додав наступне в файл lilo.conf з Прикладу 2.
З цим доповненням MSDOS-6.2 працює і думає, що він на диску C. а Windows-95 - на D :.