![]() |
| ALT Linux в офисе |
| WWW.TEKCT.RU | Содержание книги | Предыдущий раздел | Следующий раздел |
9.2. Linux не загружает другую ОС. LILOРассмотрим совсем уж убойный вариант: на компьютере стоят четыре ОС (две Windows XP и две ALT Linux), не загружается ни одна из систем. Допустим также, что нас не устраивает загрузчик Windows, мы хотим использовать загрузчик Linux (LILO). Пусть ОС установлены так: Диск C: (/dev/hda1) — Windows XP; Диск D: (/dev/hda5) — Windows XP; Диск /dev/hda9 — ALT Linux 4.1 Desktop; Диск /dev/hda11 — ALT Linux 5 Ковчег; Может такая ситуация возникнуть на компьютере сисадмина? Может. Прежде чем что-то делать, рассмотрим ситуацию более подробно. BIOS компьютера не знает ни о каких логических дисках и использует главную загрузочную запись (MBR) того физического диска, который указан в ее настройках. Если мы хотим производить выбор ОС средствами Linux, значит, загрузочный сектор раздела C: должен быть записан системой Linux (в него должен быть записан загрузчик первого уровня LILO). Но, с другой стороны, загрузить Windows без ее собственного загрузочного сектора невозможно. Значит, первое, что надо сделать — записать загрузочный сектор Windows на диск D:. Набор дисков и схема загрузки всех систем показана на рис. 9.1.
Рис. 9.1. Загрузка нескольких систем В данном случае один физический диск разбит на несколько логических дисков (разделов). Загрузка компьютера начинается с диска С: — и на нем записан загрузчик Linux. Но сама Linux находится на другом разделе (hda9), поэтому управление передается загрузчику второго уровня. Он использует свое меню, с помощью которого можно загрузить одну из Linux или перейти к загрузке Windows. Если надо загрузить Linux — все просто. Если требуется загрузить Windows, надо активизировать ее загрузчик, который вынужденно находится на диске D: (на C: место занято). Но этот загрузчик все равно будет искать нужные ему файлы в корневой папке диска C:. Загрузчик Windows, используя уже свое меню, сможет запустить любую Windows, указанную в файле C:\boot.ini. Вот такое сожительство нескольких систем. Как это все организовать или исправить, если где-то что-то затерлось, и системы не загружаются? Вначале необходимо загрузиться с установочного диска Windows XP, войти в консоль восстановления системы и дать команду на запись загрузочного сектора диска D: fixboot d: Затем надо загрузиться с Rescue CD ALT Linux и дать команду для исправления загрузочного сектора (MBR) диска C: # fixboot Здесь все происходит в автоматическом режиме, нам только дадут возможность отредактировать файл /etc/lilo.conf. Если мы хотим, чтобы при включении компьютера сразу запускался загрузчик Linux, в конфиг-файле должны быть такие строки: boot="/dev/hda" disk="/dev/hda" Здесь диск надо указывать «целиком», без номеров разделов. Для указания загрузки второй Linux надо сделать запись о ней в конфиг-файле по аналогии с первой, подставив свои параметры, например: image="/boot/vmlinuz" label="ALTLinux5" initrd="/boot/initrd.img" root="UUID=xxxxxx-xxxx-xxxx-xxxx-xxxxxx" read-only Параметр label содержит строку для меню загрузки, в этой строке нельзя использовать пробелы. Параметр root определяет диск, с которого загружается Linux. Надежнее всего указывать диск по UUID (как определить UUID, рассказывается в разделе 9.3), потому что имена дисков Linux может в некоторых случаях изменять (например, когда после создания новых разделов оказывается, что номера дисков идут не по порядку). Если загрузчик второй Linux был полностью установлен на ее системный раздел (выбор пользователя во время установки системы), может возникнуть несовместимость между загрузчиками двух ОС. Тогда загрузку второй системы лучше начинать «с самого начала», то есть запускать ее загрузчик первого уровня. В этом случае систему надо определить в разряд «других», например: other="/dev/hda11" label="ALTLinux5" Для Windows мы можем создать только одну запись, потому что есть один ее загрузчик. Выбор конкретной Windows будем выполнять в меню загрузки Windows. Запись в нашем случае будет такая: other="/dev/hda5" label="Windows" После сохранения файла надо дать команду # lilo Здесь надо следить за диагностическими сообщениями. Наилучший вариант, когда появляются только строки «Added...». Если LILO сообщит об ошибке, конфигурацию придется повторить. Если все сделано правильно, множественная загрузка должна заработать. Не забудем, что в корневом каталоге диска C: должен находиться файл boot.ini, в котором должны быть правильно записаны строки меню для выбора Windows. В нашем примере он может быть таким: timeout=20 default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP - C:" /noexecute=optin /fastdetect multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows XP - D:" /noexecute=optin /fastdetect Кроме этого файла, в корневом каталоге диска C: должны находиться все файлы, необходимые для загрузки Windows (они записываются туда при установке системы). Но есть еще одна проблема. Какая именно Linux будет отвечать за загрузку? Когда мы дали команду fixboot, был автоматически запущен скрипт /sbin/mount-system. Он нашел и смонтировал обе системы, назвав их system1 и system2. Мы даже можем увидеть на экране сообщение об этом: mount-system: /mnt/system1 : done mount-system: /mnt/system2 : done Используется последняя по счету система (в верхней строке окна редактора, когда открыт файл /etc/lilo.config, можно увидеть, какая именно). Если нас не устраивает, какая система выбирается, операцию можно провести в «ручном» режиме. После загрузки Rescue CD надо смонтировать один системный диск Linux: # mount /dev/hda9 /mnt Это необходимо, чтобы скрипт нашел файл /ets/fstab. Затем запускаем скрипт: # mount-system И ждем упомянутых сообщений. После этого можно запустить MC и выяснить, какая система нам попалась. Проще всего заглянуть в каталоги /home — мы увидим, какие пользователи зарегистрированы, какие файлы хранятся. В двух системах содержимое этих папок, скорее всего, будет отличаться. Затем надо активизировать нужную систему, например: # chroot /mnt/system1 Осталось отредактировать файл /etc/lilo.config, дать команду lilo и перезагрузить компьютер. Но и это еще не все. А что делать, если скрипт mount-system по каким-либо причинам не работает? В этом случае смонтировать системные каталоги надо самостоятельно. Если вся система находится в одном разделе (hda9), команды должны быть такими: # mount /dev/hda9 /mnt # mount /proc /mnt/proc -- bind # mount /dev /mnt/dev -- bind # mount /sys /mnt/sys -- bind Затем даем команду chroot /mnt и конфигурируем LILO. |
| WWW.TEKCT.RU | Содержание книги | Предыдущий раздел | Следующий раздел |
|
© Алексей Гончаров, 2010 |
|
|
|