Windows 7 & openSUSE 11.3 + MeeGo 1.1 - опыт установки на нетбук третьей системой

Процесс установки ОС 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.


Предварительная подготовка

  1. Редактируем разметку, освобождая пространство для установки 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 на накопитель. Загрузившись с флэшки, уменьшаем размер раздела.

  2. Загружаем свежий образ ОС MeeGo для нетбука и записываем на накопитель:

    
    $ sudo dd bs=4096 if=имя_файла_образа of=/dev/sdb1
    
  3. Создаем резервную копию загрузочного сектора на накопитель

    
    $ sudo dd bs=1 count=512 if=/dev/sda of=/dev/sdc1/suse.mbr
    


Установка MeeGo


  1. Загрузившись с флэш-накопителя, выполняем установку ОС MeeGo, следуя указаниям мастера. Отметим лишь некоторые моменты:
    1. На этапе редактирования разметки создаем разделы автоматически, используя свободное пространство, при этом инсталлятор предлагает следующую конфигурацию

      /dev/sda7 /boot (250M, ext3)

      /dev/sda8 / (все свободное пространство, btrfs)
    2. На этапе установки загрузчика 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

Перезагружаемся и обнаруживаем в меню загрузчика все три системы.


Несколько финальных замечаний

  1. На форуме MeeGo предложено решение, использующее загрузчик extlinux ОС MeeGo. При этом GRUB устанавливается в раздел, содержащий /boot исходной системы Linux и используется цепная загрузка. В нашей конфигурации этот метод не сработал, возможно из-за Ext4 на корневом разделе с openSUSE.
  2. Для монтирования корневого раздела MeeGo, например, для доступа к файлам пользователя, возможно, потребуется установить поддержку btrfs
    $ sudo zypper in btrfsprogs
    $ sudo mkdir /mnt/meego-root
    $ sudo mount /dev/sda8 /mnt/meego-root

    Кроме того, модифицируя /etc/fstab (или используя Yast2->Разметка), можно создать перманентные точки монтирования.

  3. К сожалению, существующие методы обеспечения поддержки Ext4 со стороны MeeGo требуют значительных усилий: установки на нетбук средств разработки и сборки модулей вручную. В эксперименте использовался оригинальный образ с meego.com, другие сборки, возможно, содержат (или будут содержать) модифицированные ядра с поддержкой Ext4.
  4. К сожалению, традиционная символическая ссылка vmlinuz на свежий образ ядра в MeeGo не создается: после первого же обновления системы ядро обновилось до версии 2.6.35.3-12.1, пришлось заново править руками /boot/grub/menu.lst.

Благодарности

Выражаю благодарность системному администратору кафедры ИМО ПетрГУ Вадиму Пономареву за ценные комментарии.