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

в 11:15, , рубрики: bug reports, EFI, gpt, Haiku, linux, open source, SATA, testing, usb, Блог компании Southbridge, системное администрирование, Софт

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

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

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 2
Идет ударная работа по проверке загрузки Haiku.

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

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

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

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

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

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

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

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 3
Запись образа Anyboot на флешку в принципе достаточно проста, но в результате места для реальной работы не хватает.

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

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

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

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

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 4
Установщик 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

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 5
kernel panic

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

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

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

Результаты

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

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 6
BootManager. "Write boot menu" что, разрушает разметку диска?!

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

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

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

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 7
Раздел "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! Касательно этого я завел заявку.

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 8
Kernel panic при загрузке с порта USB3.

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

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 9
подпись к картинке: вывод 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

Результаты

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 10
Как 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- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0
    Interrupt: pin A routed to IRQ 23
    Region 0: Memory at f0844000 (32-bit, non-prefetchable) [size=1K]
    Capabilities: [50] Power Management version 2
        Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
        Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
    Capabilities: [58] Debug port: BAR=1 offset=00a0
    Kernel driver in use: ehci-pci

Результаты

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

Мой четвертый день с Haiku: проблемы с установкой и загрузкой - 11
Kernel panic на нетбуке Lenovo ideapad s10 при загрузке с флешки.

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

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

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

Согласно 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- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0
    Interrupt: pin A routed to IRQ 23
    Region 0: Memory at dff40400 (32-bit, non-prefetchable) [size=1K]
    Capabilities: [50] Power Management version 2
        Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
        Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
    Capabilities: [58] Debug port: BAR=1 offset=00a0
    Kernel driver in use: ehci-pci

Результаты

Загружается в 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 потрясающая, но для получения опыта установки нужен серьезный подход. Кроме того процесс загрузки — лотерея, с шансами на успех примерно 1/3, и неважно USB2 (нетбук на Atom) у тебя или USB3 (Acer TravelMate). Но по крайней мере, у одного разработчика такое же оборудование. Надеюсь, мой "нубский" опыт поможет разработчикам понять, что нужно "простым смертным", а также сделать результат таким же элегантным, как установщик Mac OS X. Не стоит забывать, что это даже не версия 1.0, так что все очень даже хорошо!

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

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

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

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

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

Автор: Finnix

Источник


* - обязательные к заполнению поля