TL;DR: спустя несколько дней экспериментов с Haiku я решил поставить ее на отдельный SSD. Но все оказалось не так-то непросто.
Идет ударная работа по проверке загрузки Haiku.
Три дня назад я узнал о Haiku, неожиданно хорошей операционной системе для ПК. Идет четвертый день и мне захотелось проделать больше "реальной работы" с этой системой, а раздел, идущий в образе Anyboot, для этого слишком маленький. Тогда беру в руки новенький SSD объемом 120Гб, готовлюсь к гладкой работе установщика… И меня ждет облом!
Установке и загрузке обычно уделяют повышенное внимание и любовь, поскольку это первые и самые важные впечатления. Есть надежда, что протокол моего опыта "новичка" окажется полезным для команды разработчиков Haiku в их постоянных усилиях по отладке операционной системы, которая "просто работает". Беру все ошибки на себя!
Как мне кажется, особенно важной будет ситуация с загрузкой по USB, поскольку не каждый пользователь готов использовать основной SATA-диск (я уж молчу про NVME...) для экспериментов с совершенно незнакомой операционной системой. Мне кажется, загрузка по USB — наиболее вероятный сценарий для большинства пользователей, решивших попробовать Haiku на реальном оборудовании. Разработчикам на это стоит серьезно присмотреться к этому.
Комментарий разработчика:
Мы только-только начали поддержку EFI, по-быстрому написав бета-версию, которая загружается на машинах с поддержкой EFI. Полученные результаты пока что далеки от желаемого уровня поддержки. Я не знаю, стоит ли нам документировать текущую работу, или просто сосредоточиться на достижении должного результата, после чего уже задокументировать все.
Звучит осмысленно, и есть надежда, что в итоге все будет гораздо лучше, чем сейчас. Пока что я могу только проверить то, что сделано на сегодня. Приступим...
Образ Anyboot слишком маленький
Несмотря на то, что образ Anyboot удивительно легко пишется на обычную флешку, в нем нет достаточно места на разделе с Haiku для установки дополнительного ПО.
Запись образа Anyboot на флешку в принципе достаточно проста, но в результате места для реальной работы не хватает.
Быстрое решение: увеличить размер раздела Haiku по-умолчанию.
Так что для реальной работы с Haiku все же нужно ее установить с помощью приложения Installer.
Installer не делает все необходимое в одном месте.
Помните великолепный установщик Mac OS X?
Установщик Mac OS X 10.2
Он:
- инициализирует диски (пишет GPT, таблицу разделов GUID)
- создает разделы (EFI, основной) используя "здравый смысл" (для наилучшего использования диска)
- помечает загрузочный раздел (устанавливает на нем bootable флаг)
- копирует файлы
Другими словами он делает "все" без лишней возни для пользователя.
С другой стороны есть Installer для Haiku, который просто копирует файлы и отдает пользователю на откуп все остальное, слишком громоздкое, в чем даже при наличии опыта не сразу разберешься. Особенно если нужна система, загружаемая как на системах с BIOS, так и на EFI.
Что же мне делать?
Точно не скажу, но, во всяком случае, предполагаю вот что:
- Открыть DriveSetup
- Выбрать устройство для установки
- Диск->Инициализировать->GUID Partition Map...->Продолжить->Записать изменения->OK
- Правый щелчок по пустому месту на устройстве, куда будет установлена система
- Создать...->Ввожу 256 как размер->EFI system data (полностью не уверен)->Записать изменения
- Правый щелчок по "EFI system data" на устройстве, куда будет установлена система
- Инициализировать->FAT32 File System...->Продолжить->Ввожу имя: "EFI", разрядность FAT: 32->Форматировать->Записать изменения
- Повторяю правый щелчок по пустому месту на нужном устройстве
- Создать...->Ввожу имя раздела: Haiku, тип раздела: Be File System->Создать->Записать изменения
- Правый щелчок по EFI->Подключить
- Запускаю Installer->смущен техносленгом->Продолжить->На диск: Haiku (удостоверился, что это тот же раздел, что я создал до этого)->Установить
- В файловом менеджере копирую каталог EFI из текущей системы на раздел EFI (полагаю, что это нужно для загрузки с EFI)
- [прим. переводчика: убрал этот пункт из перевода; если кратко — автор не совсем осилил создание гибридной системы для загрузки как EFI, так и BIOS]
- выключаю
- подключаю новосозданный диск в порт, с которого система точно будет загружаться [странно, мне этого делать не пришлось. — прим. переводчика]
- включаю
Мне кажется, ясно видно: нужен инструмент, который сделает все по одному нажатию кнопки, со своевременным (!) подтверждением, что затереть устройство можно.
"Быстрое" решение: сделать автомагический 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
kernel panic
Вторая попытка: незагружаемый диск
Оборудование
Все как и прежде, но SSD подключен в переходник, который подключен в USB2.0 Hub, воткнутый в порт USB3 в TravelMate. Я проверил с помощью установочной флешки с Windows, что эта машина загружается с USB3.
Результаты
Незагружаемая система. Разметка диска как будто слетела из-за BootManager.
BootManager. "Write boot menu" что, разрушает разметку диска?!
Третья попытка: ух ты, оно загружается! Но не через порт USB3 на этой машине.
Оборудование
Все так же, как и во второй попытке, но в этот раз я не использую BootManager вовсе.
Разметка без запуска BootManager выглядит так, если проверять из Linux.
Раздел "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! Касательно этого я завел заявку.
Kernel panic при загрузке с порта USB3.
Что поразительно — все еще можно набирать команды, но придется использовать английскую раскладку. Так что, делаю как советовали:
подпись к картинке: вывод 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
Результаты
Как 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.
Kernel panic на нетбуке Lenovo ideapad s10 при загрузке с флешки.
Прикола ради я вставил диск в порт sata, но особой разницы с флешкой не заметил. Хотя я получил разные сообщения при использовании команды syslog|tail 15
(оно сказало, что нашло /dev/disk/ata/0/master/1
).
mr. waddlesplash попросил меня выполнить команду `syslog | grep usb
для этого случая, так что вот результаты. Я все еще рад, что можно запускать подобные команды на экране с kernel panic.
Согласно 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