Процесс установки ОС MeeGo на нетбук в мультизагрузке с ОС Windows довольно подробно описан в множестве руководств и обсуждался на официальном форуме.
Однако в экспериментах с установкой MeeGo на портативный компьютер с ОС Linux или третьей системой выявился ряд нетривиальных моментов. В частности, MeeGo не имеет поддержки файловой системы Ext4, в то время как многие современные дистрибутивы используют ее по умолчанию. В этом случае загрузчик MeeGo (extlinux) переписывает главную загрузочную запись, но обнаруживает и добавляет опцию мультизагрузки только для ОС Windows. Между тем установка MeeGo параллельно рабочей копии Linux — обычная практика для потенциального разработчика.
Проблема обсуждалась здесь и здесь. В этой статье описаны метод решения, подразумевающий использование загрузчика GRUB для загрузки всех трех систем. В примечаниях приведены сведения об использовании в этом качестве загрузчика extlinux ОС MeeGo.
Описание тестовой системы
В эксперименте использовался нетбук Asus EeePC 1005P, указанный в перечне поддерживаемых устройств, кроме того работоспособность MeeGo на этой модели подтверждена пользователями.
Изначально жесткий диск (160 Гб) размечен полностью следующим образом:
/dev/sda1 Основной раздел, установка ОС Windows (80Gb, NTFS)
/dev/sda2 Основной раздел, диск восстановления ОС Windows (15Gb, FAT)
/dev/sda3 Основной раздел, файлы для ускорения загрузки ОС Windows (20Mb, FAT)
/dev/sda4 Дополнительный раздел
/dev/sda5 Логический диск, используемый как swap-раздел (2Gb, Swap)
/dev/sda6 Логический диск, корневой раздел openSUSE 11.3 (53Gb, Ext4)
Мультизагрузка обеспечивается с помощью GRUB, установленного в главную загрузочную запись.
В ходе эксперимента используются два флэш-накопителя:
/dev/sdb1 — для создания установочного носителя. Объем диска должен быть достаточен для записи установочного образа. Все существующие данные на этом накопителе будут уничтожены!
/dev/sdc1 — для резервного сохранения и последующего восстановления загрузочного сектора с GRUB.
Предварительная подготовка
- Редактируем разметку, освобождая пространство для установки MeeGo. Для этого изменим размер раздела с установкой Linux, освободив ~12Гб. Вообще говоря, openSUSE 11.3 включает средства, позволяющие управлять разделами, однако для изменения размера раздела потребуется отмонтировать его, что для корневого раздела невозможно. Воспользуемся GParted Live. Загружаем свежий iso-образ GParted Live. Устанавливаем Unetbootin:
$ sudo zypper ar http://download.opensuse.org/repositories/openSUSE:/11.3:/Contrib/standard/ $ sudo zypper in unetbootin
С помощью Unetbootin заливаем образ GParted Live на накопитель. Загрузившись с флэшки, уменьшаем размер раздела. - Загружаем свежий образ ОС MeeGo для нетбука и записываем на накопитель:
$ sudo dd bs=4096 if=имя_файла_образа of=/dev/sdb1
- Создаем резервную копию загрузочного сектора на накопитель
$ sudo dd bs=1 count=512 if=/dev/sda of=/dev/sdc1/suse.mbr
Установка MeeGo
- Загрузившись с флэш-накопителя, выполняем установку ОС MeeGo, следуя указаниям мастера. Отметим лишь некоторые моменты:
- На этапе редактирования разметки создаем разделы автоматически, используя свободное пространство, при этом инсталлятор предлагает следующую конфигурацию
/dev/sda7 /boot (250M, ext3)
/dev/sda8 / (все свободное пространство, btrfs) - На этапе установки загрузчика MeeGo предлагает две опции: загрузку MeeGo и загрузку «другой системы» (это Windows). Файловая система Ext4 MeeGo не знакома. При переходе к следующему шагу главная загрузочная запись будет переписана загрузчиком MeeGo.
- На этапе редактирования разметки создаем разделы автоматически, используя свободное пространство, при этом инсталлятор предлагает следующую конфигурацию
Возвращаем и конфигурируем GRUB
Загружаемся в MeeGo, открываем терминал, восстанавливаем загрузчик:
$ sudo cat /dev/sdc1/suse.mbr > /dev/sda
Перезагружаемся в openSUSE, монтируем раздел /boot ОС MeeGo
$ mkdir /mnt/meego-boot
$ mount /dev/sda7 /mnt/meego-boot
Модифицируем /boot/grub/menu.lst, добавляя в него секцию
### MeeGo (/dev/sda7) ###
title MeeGo
root (hd0,6)
kernel /vmlinuz-2.6.35.3-10.3-netbook root=/dev/sda8 init=/sbin/init
Актуальное имя файла образа ядра смотрим в /mnt/meego-boot
Перезагружаемся и обнаруживаем в меню загрузчика все три системы.
Несколько финальных замечаний
- На форуме MeeGo предложено решение, использующее загрузчик extlinux ОС MeeGo. При этом GRUB устанавливается в раздел, содержащий /boot исходной системы Linux и используется цепная загрузка. В нашей конфигурации этот метод не сработал, возможно из-за Ext4 на корневом разделе с openSUSE.
- Для монтирования корневого раздела MeeGo, например, для доступа к файлам пользователя, возможно, потребуется установить поддержку btrfs
$ sudo zypper in btrfsprogs $ sudo mkdir /mnt/meego-root $ sudo mount /dev/sda8 /mnt/meego-root
Кроме того, модифицируя /etc/fstab (или используя Yast2->Разметка), можно создать перманентные точки монтирования.
- К сожалению, существующие методы обеспечения поддержки Ext4 со стороны MeeGo требуют значительных усилий: установки на нетбук средств разработки и сборки модулей вручную. В эксперименте использовался оригинальный образ с meego.com, другие сборки, возможно, содержат (или будут содержать) модифицированные ядра с поддержкой Ext4.
- К сожалению, традиционная символическая ссылка vmlinuz на свежий образ ядра в MeeGo не создается: после первого же обновления системы ядро обновилось до версии 2.6.35.3-12.1, пришлось заново править руками /boot/grub/menu.lst.
Благодарности
Выражаю благодарность системному администратору кафедры ИМО ПетрГУ Вадиму Пономареву за ценные комментарии.