[Перевод] Мой четвертый день с Haiku: проблемы с установкой и загрузкой

blgyp4dfid32no07rajo8cjkyo8.jpeg

TL; DR: спустя несколько дней экспериментов с Haiku я решил поставить ее на отдельный SSD. Но все оказалось не так-то непросто.

3dfiostzjqnzjzlnub4nfinwj-a.jpeg
Идет ударная работа по проверке загрузки Haiku.

Три дня назад я узнал о Haiku, неожиданно хорошей операционной системе для ПК. Идет четвертый день и мне захотелось проделать больше «реальной работы» с этой системой, а раздел, идущий в образе Anyboot, для этого слишком маленький. Тогда беру в руки новенький SSD объемом 120Гб, готовлюсь к гладкой работе установщика… И меня ждет облом!

Установке и загрузке обычно уделяют повышенное внимание и любовь, поскольку это первые и самые важные впечатления. Есть надежда, что протокол моего опыта «новичка» окажется полезным для команды разработчиков Haiku в их постоянных усилиях по отладке операционной системы, которая «просто работает». Беру все ошибки на себя!
Как мне кажется, особенно важной будет ситуация с загрузкой по USB, поскольку не каждый пользователь готов использовать основной SATA-диск (я уж молчу про NVME…) для экспериментов с совершенно незнакомой операционной системой. Мне кажется, загрузка по USB — наиболее вероятный сценарий для большинства пользователей, решивших попробовать Haiku на реальном оборудовании. Разработчикам на это стоит серьезно присмотреться к этому.

Комментарий разработчика:


Мы только-только начали поддержку EFI, по-быстрому написав бета-версию, которая загружается на машинах с поддержкой EFI. Полученные результаты пока что далеки от желаемого уровня поддержки. Я не знаю, стоит ли нам документировать текущую работу, или просто сосредоточиться на достижении должного результата, после чего уже задокументировать все.

Звучит осмысленно, и есть надежда, что в итоге все будет гораздо лучше, чем сейчас. Пока что я могу только проверить то, что сделано на сегодня. Приступим…


Образ Anyboot слишком маленький

Несмотря на то, что образ Anyboot удивительно легко пишется на обычную флешку, в нем нет достаточно места на разделе с Haiku для установки дополнительного ПО.

rag6-ji_you2id8xsys7lclsqf4.gif
Запись образа Anyboot на флешку в принципе достаточно проста, но в результате места для реальной работы не хватает.

Быстрое решение: увеличить размер раздела Haiku по-умолчанию.

Так что для реальной работы с Haiku все же нужно ее установить с помощью приложения Installer.


Installer не делает все необходимое в одном месте.

Помните великолепный установщик Mac OS X?

hrkruvtbaectfz5qs-ebrmjpyf4.png
Установщик Mac OS X 10.2

Он:


  • инициализирует диски (пишет GPT, таблицу разделов GUID)
  • создает разделы (EFI, основной) используя «здравый смысл» (для наилучшего использования диска)
  • помечает загрузочный раздел (устанавливает на нем bootable флаг)
  • копирует файлы

Другими словами он делает «все» без лишней возни для пользователя.

С другой стороны есть Installer для Haiku, который просто копирует файлы и отдает пользователю на откуп все остальное, слишком громоздкое, в чем даже при наличии опыта не сразу разберешься. Особенно если нужна система, загружаемая как на системах с BIOS, так и на EFI.


Что же мне делать?

Точно не скажу, но, во всяком случае, предполагаю вот что:


  1. Открыть DriveSetup
  2. Выбрать устройство для установки
  3. Диск→Инициализировать→GUID Partition Map…→Продолжить→Записать изменения→OK
  4. Правый щелчок по пустому месту на устройстве, куда будет установлена система
  5. Создать…→Ввожу 256 как размер→EFI system data (полностью не уверен)→Записать изменения
  6. Правый щелчок по «EFI system data» на устройстве, куда будет установлена система
  7. Инициализировать→FAT32 File System…→Продолжить→Ввожу имя: «EFI», разрядность FAT: 32→Форматировать→Записать изменения
  8. Повторяю правый щелчок по пустому месту на нужном устройстве
  9. Создать…→Ввожу имя раздела: Haiku, тип раздела: Be File System→Создать→Записать изменения
  10. Правый щелчок по EFI→Подключить
  11. Запускаю Installer→смущен техносленгом→Продолжить→На диск: Haiku (удостоверился, что это тот же раздел, что я создал до этого)→Установить
  12. В файловом менеджере копирую каталог EFI из текущей системы на раздел EFI (полагаю, что это нужно для загрузки с EFI)
  13. [прим. переводчика: убрал этот пункт из перевода; если кратко — автор не совсем осилил создание гибридной системы для загрузки как EFI, так и BIOS]
  14. выключаю
  15. подключаю новосозданный диск в порт, с которого система точно будет загружаться [странно, мне этого делать не пришлось. — прим. переводчика]
  16. включаю

Мне кажется, ясно видно: нужен инструмент, который сделает все по одному нажатию кнопки, со своевременным (!) подтверждением, что затереть устройство можно.

«Быстрое» решение: сделать автомагический Installer, делающий все.

Ну, даже если и не «быстрое», то достойное. Это же первые впечатления от новой системы. Если не получится установить (а у меня так было несколько раз) — многие просто тихо уйдут навсегда.

Техническое пояснение насчет DriveSetup согласно PulkoMandy


BootManager записывает полноценное загрузочное меню, включая возможность загрузки нескольких систем с диска, для этого ему достаточно всего около 2 кб в начале диска. Это годится для старых схем разметки диска, но не для GPT, который использует те же сектора для таблицы разделов. С другой стороны writembr записывает сильно упрощенный код на диск, который просто найдет активный раздел и продолжит загрузку с него. Этому коду достаточно 400 первых байт на диске, так что он не пересекается с GPT. У него ограничена поддержка дисков с разметкой GPT (но для простых случаев все будет как надо).

Быстрое решение: пусть GUI для настройки BootManager ставит на диск все, что устанавливается с помощью writembr, если обнаруживается разметка GPT. Не нужно ставить код размером 2 кб на диски GPT. Не нужно ставить флаг bootable на раздел EFI, только на раздел Haiku.


Первая попытка: kernel panic


Оборудование


  • Acer TravelMate B117 N16Q9 (продавался с EndlessOS)
  • lspci
  • lsusb
  • существующая система была запущена с флешки Kingston DataTraveler 100 размером 16 гб, сделанной из Anyboot образа с помощью Etcher на Linux, вставленной в порт USB2.0 (потому что не загружалась с порта USB3)
  • SSD Kingston A400 размером 120 гб, только с завода, подключен в переходник sata-usb3 ASMedia ASM2115, который подключен в порт USB3 в TravelMate B117.


Результаты

Installer запускает копирование файлов, потом вылезает ошибка ввода-вывода, сопровождаемая kernel panic

vk2dfafsbmqfadhy31qxatguhgw.jpeg
kernel panic


Вторая попытка: незагружаемый диск


Оборудование

Все как и прежде, но SSD подключен в переходник, который подключен в USB2.0 Hub, воткнутый в порт USB3 в TravelMate. Я проверил с помощью установочной флешки с Windows, что эта машина загружается с USB3.


Результаты

Незагружаемая система. Разметка диска как будто слетела из-за BootManager.

slrsvi_tuuytncd4invdt8takew.png
BootManager. «Write boot menu» что, разрушает разметку диска?!


Третья попытка: ух ты, оно загружается! Но не через порт USB3 на этой машине.


Оборудование

Все так же, как и во второй попытке, но в этот раз я не использую BootManager вовсе.
Разметка без запуска BootManager выглядит так, если проверять из Linux.

6n1m3pgr6q3wcqkcr1r4b78ietq.png
Раздел «efi» с файловой системой FAT32 помечен загрузочным без запуска BootManager. Оно запустится на не-EFI машине?


Результаты


  • Режим EFI, USB2 порт: загрузка прямиком в Haiku
  • Режим EFI, USB2 hub, подключенный в USB3 порт: Сообщение «no boot path found, scan for all partitions…», после чего загрузочный экран с «Select boot volume (Current: haiku)». Кнопка «Continue booting» серая, не нажимается. Если выбрать в списке «Select Boot Volume» → Haiku (Current: Latest state)→Latest state →Return to main menu→Continue booting — загружается прямиком в Haiku. Интересно, почему оно не может «просто загрузиться», а требует пляски с бубном? Тем более, что на экране загрузки явно автоматически найден загрузочный раздел. Программная ошибка?
  • Режим EFI, USB3 порт: загружается прямиком в Haiku. Ух, как я рад… Преждевременно, как оказалось. Показывается голубой экран, но доооооолгое время ничего не происходит. Курсор-«палец» повис в середине экрана и не двигается. Переходник sata-usb3 мигает. Дело окончилось kernel panic. Образ Anyboot на флешке USB3 даже не распознался загрузочным на текущем оборудовании. Ба, да это же bug! Касательно этого я завел заявку.

xdk0waazjrjnpdvncsd1jlxcbxw.jpeg
Kernel panic при загрузке с порта USB3.

Что поразительно — все еще можно набирать команды, но придется использовать английскую раскладку. Так что, делаю как советовали:

o19tqvvthiava2sdgot0z8tu2bi.jpeg
подпись к картинке: вывод syslog | tail 15 — пока ядро паникует

Вызов команды reboot, к сожалению, не работает.


Четвертая попытка: вторая машина.

Я перенес такой же (точно рабочий) диск на другую машину, где проверил работу с разными портами.


Оборудование

Все то же, что и в третьей попытке, но на Acer Revo One RL 85.


Результаты


  • Режим EFI, USB2 порт: Сообщение «no boot path found, scan for all partitions…», после чего загрузочный экран с «Select boot volume (Current: haiku)». Кнопка «Continue booting» серая, не нажимается. Если выбрать в списке «Select Boot Volume» → Haiku (Current: Latest state)→Latest state →Return to main menu→Continue booting — загружается прямиком в Haiku. Выключение зависает на сообщении «Shutting down…».
  • Режим EFI, USB2 hub, подключенный в USB3 порт: требуется уточнение
  • Режим EFI, USB3 порт: Сообщение «no boot path found, scan for all partitions…», после чего загрузочный экран с «Select boot volume (Current: haiku)». Кнопка «Continue booting» серая, не нажимается. Если выбрать в списке «Select Boot Volume» → Haiku (Current: Latest state)→Latest state →Return to main menu→Continue booting — загружается прямиком в Haiku.
    Обращаю внимание, что, в отличие от первой системы, есть нормальная загрузка до рабочего стола без kernel panic. Выключение зависает на сообщении «Идет выключение».
  • Режим EFI, порт sata: Загружается прямиком в Haiku. Выключение зависает на сообщении «Shutting down…».
  • Режим CSM BIOS, порт USB2: нужно уточнение
  • Режим CSM BIOS, USB2 hub, подключенный в порт USB3: нужно уточнение
  • Режим CSM BIOS, порт USB3: нужно уточнение
  • Режим CSM BIOS, порт sata: Черный экран с надписью «Reboot and Select proper Boot Device or Insert Boot Media in selected device and press a key». Пришло от CSM BIOS? [Да, точно такое же сообщение выдает моя система, если не находит загрузчик. — прим. переводчика]


Пятая попытка: третья машина.

Перенес этот же диск на третью машину, проверил на разных портах.


Оборудование

То же, что и в третьей попытке, но на Dell Optiplex 780. Если я не ошибаюсь — на этой машине ранний EFI, который видимо всегда работает в режиме CSM BIOS.


Результаты


  • Порт USB2: загрузка Haiku
  • Порт USB3 (через карточку PCIe, Renesas Technology Corp. uPD720202 USB 3.0 Host Controller): нужно уточнение
  • Порт sata: требуется уточнение


Шестая попытка, четвертая машина, MacBook Pro


Оборудование

Все то же, как и в третьей попытке, но с MacBookPro 7.1


Результаты

sagciaimcpdpwqz_vfqf1frmp5m.jpeg
Как Mac видит флешку с Haiku.


  • Режим CSM («Windows»): черный экран с надписью «No bootable drive — insert boot disk and press any key». Она пришла от Apple CSM?
  • Режим UEFI («EFI Boot»): останавливается на экране выбора загрузочного устройства.


Седьмая попытка, нетбук Lenovo с 32-битным процессором Atom


Оборудование


  • Флешка Kingston DataTraveler 100 емкостью 16 гб, сделанная на Linux с помощью Etcher, используя 32-битный образ Anyboot отсюда.


  • Нетбук Lenovo ideapad s10 на основе процессора Atom без жесткого диска.


  • lspci этой машины, снят на linux.


  • lsusb

    00:1d.7 USB controller: Intel Corporation NM10/ICH7 Family USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI])
    Subsystem: Lenovo NM10/ICH7 Family USB2 EHCI Controller
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- 


Результаты

Идет загрузка, потом случается kernel panic, команда syslog|tail 15 выводит kDiskDeviceManager::InitialDeviceScan() failed: No such file or directory после нескольких ошибок ATA. Примечание: я пробовал загружаться с USB, не с sata.

hc4koxaq9jh3xxfe8kruqlwq1i8.jpeg
Kernel panic на нетбуке Lenovo ideapad s10 при загрузке с флешки.

Прикола ради я вставил диск в порт sata, но особой разницы с флешкой не заметил. Хотя я получил разные сообщения при использовании команды syslog|tail 15 (оно сказало, что нашло /dev/disk/ata/0/master/1).

mr. waddlesplash попросил меня выполнить команду `syslog | grep usb для этого случая, так что вот результаты. Я все еще рад, что можно запускать подобные команды на экране с kernel panic.

54i_ohcbd6j2c_idum17onzyq5s.jpeg
m4zm2dywiyret-3zeyyh-7pf7e4.jpeg

Согласно mr. waddlesplash эта ошибка EHCI — такая же, как в этой заявке


Восьмая попытка: нетбук MSI с 32-битным процессором Atom


Оборудование

Как и прежде


  • Нетбук Medion Akoya E1210 (под маркировкой MSI Wind U100) с установленным диском (который я не использую для Haiku).
  • lspci этой машины
  • lsusb этой машины
    00:1d.7 USB controller: Intel Corporation NM10/ICH7 Family USB2 EHCI Controller (rev 02) (prog-if 20 [EHCI])
    Subsystem: Micro-Star International Co., Ltd. [MSI] NM10/ICH7 Family USB2 EHCI Controller
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
    Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- 


Результаты

Загружается в Installer Haiku. Работает TouchPad! (к примеру, прокрутка). Видеокарта распозналась как Intel GMA (i945GME).


Девятая попытка: флешка с 32-битным образом на MacBook Pro


Оборудование


  • Как и ранее.
  • MacBook 7.1


Результаты

Черный экран с надписью «No bootable drive — insert boot disk and press any key».


Примечание: клавиатура Apple

В левом нижнем углу любой клавиатуры на нижнем ряду есть следующие кнопки:
не-Apple: Ctrl-Fn-Windows-Alt-Spacebar
Apple: Fn-Ctrl-(Option или Alt)-Command-Spacebar

Было бы здорово, если бы все клавиатуры в Haiku вели себя одинаково, чтобы ими можно было пользоваться одинаково, независимо от того, что реально на них выбито.
На клавиатуре Apple кнопка Alt идет не сразу слева от пробела (вместо нее там клавиша Command).
В этом случае я бы обнаружил, что в Haiku будет автоматически использоваться клавиша Command вместо клавиши Alt. Так что, работая на клавиатуре Apple, я бы ощущал, что клавиатура — не-Apple.
Очевидно, в настройках есть разные опции, но хотелось бы автоматического распознавания и подстройки, ведь это USB, в конце-то концов.


Примечание: writembr для восстановления?

Я слышал, что с помощью команды writembr можно сделать систему (работающей с EFI) загружаемой с BIOS.

/> writembr /dev/disk/.../.../.../.../raw
About to overwrite the MBR boot code on /dev/disk/scsi/0/2/0/raw
This may disable any partition managers you have installed.
Are you sure you want to continue?
yes/[no]: yes
Rewriting MBR for /dev/disk/.../.../.../.../raw
MBR was written OK

Выглядит хорошо, но в результате систему загрузить все еще невозможно, как и прежде. Возможно, потому, что загрузка через BIOS работает только с подходящей разметкой, а не GPT? [надо бы попробовать protective MBR… — прим. переводчика]


Заключение

Haiku потрясающая, но для получения опыта установки нужен серьезный подход. Кроме того процесс загрузки — лотерея, с шансами на успех примерно ⅓, и неважно USB2 (нетбук на Atom) у тебя или USB3 (Acer TravelMate). Но по крайней мере, у одного разработчика такое же оборудование. Надеюсь, мой «нубский» опыт поможет разработчикам понять, что нужно «простым смертным», а также сделать результат таким же элегантным, как установщик Mac OS X. Не стоит забывать, что это даже не версия 1.0, так что все очень даже хорошо!

Попробуйте сами! Ведь проект Haiku предоставляет образы для загрузки с DVD или USB, формируемые ежедневно. Для установки достаточно скачать образ и записать его на флешку с помощью Etcher

Появились вопросы? Приглашаем вас в русскоязычный telegram-канал.

Обзор ошибок: Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS

От автора перевода: это четвертая статья из цикла про Haiku.

Список статей: Первая Вторая Третья

© Habrahabr.ru