Загрузка linux на компьютере с несколькими ОС

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Soloven
Сообщения: 63
Контактная информация:

Загрузка linux на компьютере с несколькими ОС

Сообщение Soloven »

ver. 0.0.2 от 5.11.03

1. Введение и отказ от обязательств.
2. Постановка задачи.
a. Причины
b. Организация диска.
3. Загрузчик LILO
a. Основные теги
b. Установка
c. Восстановление LILO
d. Кратко о главном
4. Загрузчик grub
a. Основные теги
b. Установка
5. Если два ЖД.
a. Схема функционирования NTLoader
b. Конфигурируем lilo.
6. Заключение.
7. Благодарности.
8. Автор
9. Литература.


1. Введение и отказ от обязательств.
Для написания подобной статьи естественно необходимо было бы провести массу экспериментов, но как вы понимаете, в таком случае писать бы пришлось все это на папирусе, да еще и гусиными перьями. :( Только не надо считать, что все это из воздуха слеплено, читайте маны они рулез © Ananas.
Данный документ по конфигурированию ни в коей мере не является прямым руководством к действию. Все ниже сказанное основано на личном опыте.

2. Постановка задачи.
Не буду говорить про всех, расскажу о себе. Хоть и не считаю себя поклонником Windows™, однако отказаться от его использования пока не могу (VS.NET, Win-Pak PRO International и локальная офисная сеть). На работе поступил просто - на одном диске Windows™ XP/2000 – на другом Linux™ Red Hat 8.0. Просто так надо, не один же я за машинкой сижу, да Notebook мне не часто в командировки дают :).
Другое дело дома... На одном компьютере дерутся за место под солнцем две оси - Windows™ XP и Linux™ Red Hat 8.0. Как та и так и другая бывает входит в такое состояние, что поднять ее тремя пальцами уже не получается (Ctrl-Alt-Del).
a. Причины.
1. У всех переходящих пользователей обязательно на другом разделе еще живет какая-нибудь Windows™. В один прекрасный день она дает сбой, и вы принимаетесь переустанавливать ее. Установили, настроили, перезагружаете компьютер, а входа-то в Linux™ уже и нет — Windows™ преспокойно затерла загрузочный сектор.
А чтобы этого не произошло, перед переустановкой Windows™ создаём в "Блокноте" текстовый файл следующего содержания:

[setup]

CleanBoot=0

и схраняем его, как
msbatch.inf
где угодно, хоть на дискете. Теперь, при переустановке Windows™, просто указываем путь к этому файлу.
Например:
D:\win98\setupcor.exe A:\msbatch.inf
Итог:
И овцы целы и волки сыты! (И Windows™ переустановлен и загрузочный сектор сохранён в неприкосновенности) {Shirik}
Если описанные выше действия произведены не были, паниковать не надо, все можно исправить – доктор сказал: жить будет, но недолго :).

2. Вы собрали/пересобрали очередное ядро, и напортачили с конфигурацией загрузчика и oops – Kernel panic no init found. Не гипнотизируйте монитор, поздно вспоминать о не созданной дискете, да она и не поможет.



b. Организация диска.
Физический диск состоит из нескольких областей, называемых разделами (партициями, partitions). На одном диске может быть от 1 до 4 первичных разделов (primary partition). Один из них можно объявить расширенным разделом (extended partition). Расширенный раздел делится на логические разделы (logical partitions). Такой механизм позволяет разбить большой диск на необходимое количество разделов. Разделы называются логическими дисками или просто дисками. Для операционных систем диском является именно логический диск.

Нулевой сектор каждого физического диска содержит таблицу разделов (partition table). Этот сектор называется master boot record (MBR).

Первые 446 (0x1BE) байт MBR заняты программой-загрузчиком. За ними следует таблица разделов длиной 64 (0x40) байт. Последние два байта содержат "магическое число" которое используется для проверки, является ли данный сектор загрузочным.

+------------------------+


0x000 | |


| Program code |


| |


| |


|------------------------|


0x1BE | Partition table |


| |


|------------------------|


0x1FE | Magic number (0xAA55) |


+------------------------+

Таблица разделов содержит 4 записи для 4-х первичных разделов. Каждая запись имеет следующую структуру:

struct partition {


char active; /* 0x80: bootable, 0: not bootable */


char begin[3]; /* CHS for first sector */


char type;


char end[3]; /* CHS for last sector */


int start; /* 32 bit sector number (counting from 0) */


int length; /* 32 bit number of sectors */


};

(где CHS означает Cylinder/Head/Sector).

Каждый первичный раздел, расширенный раздел, и каждый логический раздел также содержат свою таблицу разделов. Таблицы разделов хранятся в загрузочных секторах своих разделов (нулевой сектор раздела).

В Linux диск в целом (то есть физический диск) доступен по имени устройства /dev/hda, /dev/hdb, /dev/sda, и т.п.

В операционных системах M$ легального доступа к физическому диску нет (т.е. я не могу, например, подставить имя физического диска в команду копирования).

Первичные разделы (и расширенный раздел) в Linux доступны по именам /dev/hda1 ... /dev/hda4. В системах M$ доступно только по одному первичному разделу из каждого физического диска по именам C:, D: и т.д. Такой раздел называется активным. Расширенный раздел и остальные первичные разделы недоступны.

Логические разделы в Linux доступны по именам /dev/hda5, /dev/hda6 ... В системах логические M$ разделы получают однобуквенные имена, начиная с последнего задействованного имени первичного раздела. В конфигурациях с одним винчестером логические разделы получат имена D:, E: и т.д.

Пример:


+-------------------------------------------------+


| Partition table /dev/hda |


| +-----------------------------------------------|


| | Partition 1 /dev/hda1 |


| | |


| |-----------------------------------------------|


| | Partition 2 /dev/hda2 C: |


| | |


| |-----------------------------------------------|


| | Extended partition /dev/hda3 |


| | +---------------------------------------------|


| | | Extended partition table |


| | |---------------------------------------------|


| | | Partition 3 /dev/hda5 D: |


| | | |


| | |---------------------------------------------|


| | | Extended partition table |


| | |---------------------------------------------|


| | | Partition 4 /dev/hda6 E: |


| | | |


+-------------------------------------------------+

Этот диск содержит два первичных раздела (/dev/hda1 и /dev/hda2) и расширенный раздел (/dev/hda3). Раздел 2 объявлен активным. Имя раздела /dev/hda4 не задействовано, т.к. соответствующий ему первичный раздел не создан. Такое разбиение диска на разделы возможно только пользователями Linux.

Расширенный раздел состоит из двух логических разделов (/dev/hda5 и /dev/hda6).

В итоге пользователи Linux видят устройства /dev/hda, /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda5, /dev/hda6. Пользователи систем M$ видят устройства C:, D:, E:. Почувствуйте разницу...


*Пункт взят из статьи "Как поставить много операционных систем на одном компьютере" Московских Александр mosk@chat.ru

3. Загрузчик LILO.
Как вы уже знаете, программа загрузки LILO может быть использована для загрузки ядра Linux. Кроме этого, LILO обладает способностью загружать другие операционные системы, не относящиеся к Linux, а также различные версии одной и той же операционной системы. Например, вы можете оказаться в ситуации, где вам придется компилировать определенную версию ядра Linux. С помощью LILO вы можете запустить ранее установленное ядро системы, которое будет загружаться в случае некорректной работы нового ядра.
a. Основы конфигурации.
Рассмотрим основные теги и опции загрузчика LILO на примере конфигурационного файла /etc/lilo.conf.

# target
boot = /dev/hda #область диска куда будет установлен загрузчик в данном случае
# MBR первого жесткого диска(Primary Master) , честно признаться
# по другому у меня не работало.
install = /boot/boot.b #
map = /boot/System.map # карта загрузки

# options
prompt
delay = 50 # время задержки на показ приветствия.
timeout = 50 # время ожидания перед автоматической загрузкой
message = /boot/message # сообщение содержащее приветствие
default = linux # указывает на метка раздела, который должен быть загружен по # умолчанию
image = /boot/vmlinuz-2.4.18 # указывает на имя образа ядра maybe bzImage.
initrd =/boot/initrd-2.4.18.img # образ виртуального диска
label = linux # уникальная метка раздела
root = /dev/hda1 # устанавливает корневую партицию
vga = 792 # передает геометрию монитора фрамебуферу,здесь 1024Х768-32,
# подробдости в /etc/fb.mode
read-only # Опция для монтирования корневой партиции, всегда read-only, за
# исключением редких случаев
append = "debug=2 /dev/hdd=ide-scsi" # дополнительные опции загрузки ядру
# additional entries
other = /dev/hda4 # Указывает на вторую операционную систему.
label = dos # уникальная метка раздела
table = /dev/hda # new kernel
image = /boot/vmlinuz-2.4.21 # указывает на имя образа ядра нового ядра.
initrd =/boot/initrd-2.4.21.img # образ виртуального диска нового ядра.
label = linuxnew # уникальная метка раздела
root = /dev/hda1 # устанавливает корневую партицию
vga = 792
read-only
append = "debug=2 /dev/hdd=ide-scsi"
#По имеющейся информации поддерживается до 128 уникальных меток.


Еще встречается , но крайне редко такое вот написание конфигурационного файла для lilo. Например, тот, который я приведу ниже взят мной из Уcтановленной у меня на момент корректировки ASPLinux 9.0 (URAL). Привожу в качестве примера без каких либо комментариев.

#lilo.conf.floppy
disk=/dev/hda
bios=128
disk=/dev/hdb
bios=129

boot=/dev/fd0
install=/mnt/floppy/boot.b
map=/mnt/floppy/map

prompt
timeout=300
lba32
default=linux-2.4.20

# ASPLinux
image=/boot/vmlinuz-2.4.20-9asp
initrd=/boot/initrd.2.4.20-9asp.img
label=linux-2.4.20
root=/dev/hda1
read-only
append="hdc=ide-scsi"
vga = 792

# Operating system on /dev/hdb1
other=/dev/hdb1
label=Widows



b. Установка LILO.
Для переустановки загрузчика необходимо выполнить повторный запуск инсталлятора map-файла. При этом будет выполнено следующее:

# /sbin/lilo –v
Added linux *
Added linuxnew
Added dos
Added linuxnew
#


c. Восстановление LILO.
Для загрузки существующих разделов Linux можно воспользоваться установочной дискетой (или компакт-диском), предварительно задав параметр:
boot: root= /dev/device_name;
Вам остается только заменить выражение device_name; фактическим именем раздела (таким, как, например, hdal, hda2, sdal, sda2 и так далее).
Для загрузки существующих разделов Linux с помощью инсталяциионного CD. Войдите с режим восстановления.
boot: restore
Инсталляционная программа проверит ваши жесткие диски на наличие Linux™ и, если таковой найдется, примонтирует вашу файловую систему куда-то в /mnt/sysimage (об этом будет сказано в специальном сообщении). Теперь вам нужно /mnt/sysimage сделать вашим корневым каталогом:
chroot /mnt/sysimage
d. FAQ.
LILO:
1. –С позволяет использовать в качестве конфигурации файл с иным размещением.
2. –v verbose – отображает информацию во время создания map- файла.
3. –V показывает версию LILO.
Сделать загрузочную дискету просто и удобно командой:

# mkbootdisk –device /dev/fd0 2.4.21 –где 2.4.21 версия ядра изготавливаемой дискеты


Отсутствует образ виртуального диска:

# mkinitrd 2.4.21 –где 2.4.21 версия ядра изготавливаемой дискеты


Ничего не получилось:
# man man
# man lilo
# man chroot
# man mkbootdisk
# man mkinitdr
Все равно глухо:
Search The Fine Manual (STFM)
P.S. FAQ – это ответ на часто задаваемые вопросы а не сказки Братьев Грим ©.

4. Загрузчик Grub.
Программа загрузки GRUB обладает не только некоторыми преимуществами по сравнению с загрузчиком LILO, но и определенными недостатками. К преимуществам можно отнести отсутствие необходимости переустановки загрузочного сектора при изменении ядра системы. Более того, программа GRUB позволяет определить расположение нового ядра при его перезаписи поверх старого ядра с последующей перезагрузкой системы. К недостаткам программы относится замена достаточно простой командной строки более сложной. Это приводит к необходимости ее постоянного редактирования перед загрузкой системы. Если, например, достаточно часто приходится изменять параметры загрузки, вам это быстро надоест. К достоинствам загрузчика GRUB, как и загрузчика LILO, следует отнести также отсутствие прежнего ограничения 1024-м цилиндром жесткого диска.

a. Основы конфигурации.
Программа загрузки GRUB включает в себя несколько файлов, о которых я вам расскажу в этом разделе.

./boot/grub/grub.cfg
root (hd0,2) # указание на раздел в который установлен загрузчик, партиция указана в BSD-
# формате, нумерование начинается с 0 hd – hard drive
install /boot/grub/stage1 (hd0,2) /boot/grub/stage2 0х8000 (hd0,2) boot/grub/menu.1st quit

/boot/grub/device.map # загружает карту устройств
#
(fd0) /dev/fd0
(hd0) /dev/hda

/boot/grub/menu.1st
#
#options
timeout=5 #время ожидания до загрузки дефолтной операционной системы.
splashscreen = (hd0,1)/boot/messages.col24 # запуск графического загрузчика
default=0 # установка образа загрузки по умолчанию
title=Linux # уникальное имя образа
root=(hd0,2) # определение корневой партиции
kernel=/boot/vmlinuz-2.4.21 vga=792 noapic nosmp root=/dev/hda3
title=Win95 # уникальное имя
chainloader = (hd0, 0) +1 # смена загрузчика!


Для каждой из файловых систем, которые могут быть использованы программой GRUB, существуют различные файлы fs_stage1-5.
Во время загрузки системы можно изменить параметры командной строки с помощью GRUB, выделив строку Linux (в данной случае) и нажав на клавишу е. Перед вами появится второе окно с отображенной строкой kernel =. Выделите данную строку и еще раз нажмите на клавишу е. После этого в указанную строку могут быть введены самые различные параметры, необходимые для загрузки системы (или же удалены те, которые вы не хотите использовать). Для того чтобы сохранить сделанные вами изменения, нажмите клавишу Enter, а затем нажмите на клавишу b для продолжения загрузки ядра с уже измененными параметрами.

b. Установка Grub.
/sbin/grub-install /device_name;
Вам остается только заменить выражение device_name фактическим именем раздела (таким, как, например, hdal, hda2, sdal, sda2 и так далее).

5. Если два ЖД.
Автор: "Shurik"
Если на Вашем компьютере имеются 2 жестких диска и на одном из них у Вас уже были установлены Операционные Системы (ОС) Windows2k и 98 , а второй Вы решили использовать для ознакомления, или работы с Linux, то вам совершенно не нужно переключать в BIOS загрузку то с HDD-0, то c HDD-1, для этого воспользуйтесь загрузчиком lilo.

a. Схема функционирования NTLoader
Дело в том, что кроме "стандартного" загрузчика Windows2k/XP при инсталляции создаёт дополнительный раздел объёмом 8MBt, расширяя "стандартный" загрузчик, куда и записывает свой загрузчик. Поэтому мультизагрузка происходит так:
Стандартный загрузчик передаёт управление дополнительному загрузчику, который "считывает" файл boot.ini и выводит информацию о ОС на экран монитора. После выбора той, или иной системы и нажатия на Enter дополнительный загрузчик опять передаёт управление "стандартному загрузчику, если это Windows 95_98_ME, либо "передаёт" загрузку разделу, на котором установлена WindowsXP_2000. Точно также будут загружаться и 3 ОС, например Windows98, Windows2000PRO и WindowsXP.
b. Конфигурируем lilo.
Итак, что получается? Если мы пропишем в любом загрузчике Linux "стандартные" параметры загрузки, то произойдёт следующее:
"Стандартный" загрузочный сектор считался, а вот управление не передано и компьютер будет либо "зависать", если на С:\ стоит WindowsXP, либо уходить в перезагрузку, если на С:\ стоит Windows 95_98_ME. Чтобы этого не происходило, нам необходимо явно указать передачу с "стандартного" загрузчика дополнительному и наоборот. Указываем:
map-drive=0x80
to=0x81
передача с стандартного загрузчика дополнительному, а теперь наоборот:
map-drive=0x81
to=0x80
Предположим, что на 1-ом жестком диске hda установлен Linux, а на втором - hdc - мультизагрузочный Windows.
Результатом получится следующий вид мультизагрузочной секции в загрузчике lilo:

other=/dev/hdc1 # раздел, где находится boot.ini
label=ALL_WINDOWS
table=/dev/hdc
map-drive=0x80
to=0x81
map-drive=0x81
to=0x80

Теперь Вам будет доступна загрузка нескольких ОС, без переключения в BIOS, непосредственно из графического приглашения загрузчика lilo.

6. Заключение
Хочу заметить, что в зависимости от версии загрузчика команды и теги могут претерпевать незначительные изменения, при этом основные останутся теми же. Рекомендация только одна, если проводятся частые эксперименты, то лучше иcпользовать lilo. По крайней мере? руки будут более развязаны в некоторых щепетильных ситуациях.
Сам не пробовал, но советовали при утрате пароля
На приглашение lilo boot: Наберите метка_linux -s или метка_linux single. Для просмотра возможных вариантов нажмите TAB
И второй вариант:
boot: linux init=/bin/sh
mount -n -o rw -t ext2 /dev/hda2

7. Автор.
Andrew E. Kuznetsoff aka Разгильдяй на обкуренной кошке

8. Благодарности.
Sloth - контроль авторских прав и плагиата :-)
Logvinon - контроль за стилистикой.
Shurik - п 5 авторство, общая корректировка.

9. Литература.
"Как поставить много операционных систем на одном компьютере" v1.21 от 12.10.00 "Московских Александр "
Использование Linux Дэвид Бендел, Роберт Нейпир.
Энциклопедия Linux издание 4 Ричард Петерсен.

# man man
# man lilo
# man grub
# man chroot
# man mkbootdisk
# man mkinitdr

Опубликовал: Andrew E. Kuznetsoff aka Разгильдяй на обкуренной
Дата: 05.11.2003
постоянный адрес статьи: http://linuxportal.ru/entry.php/P749_0_3_0/
The /dev/null где то рядом ©
Использовать компьютер только для игр все равно, что Использовать Ламборгини для перевозки картошки ©
Спасибо сказали:
Ответить