HP Zbook Fury 17.8 G8 в режиме FreeDOS из коробки
Чтобы сэкономить на лицензии, производители компьютеров часто предлагают «голый» вариант техники без операционной системы. Но совсем без системы продавать нельзя, потому что это может нарушать законодательство (такой компьютер не выполняет заявленные функции, то есть не соответствует характеристикам). Поэтому они делают ход конём — ставят какую-нибудь бесполезную систему чисто для юридических формальностей. Нет, нормальный Linux они тоже ставят. Но кроме него зачем-то ещё и другой вариант.
Например, FreeDOS, как в нашем случае. Казалось бы, очень старая ОС, но её действительно используют в современной технике.
Разработчик компьютерных игр и специалист по виртуализации Linux Хайн-Питер ван Браам-Стюарт решил разобраться и посмотреть, что скрывается под капотом современного ноутбука HP ZBook 17.8 G8. Это оказалось как раз из его профессиональной области (извините за спойлер...).
Итак, слово автору…
Расскажу о некоторых странных вещах в компьютере с FreeDOS от Hewlett Packard. Подозреваю, что многим читателям не слишком интересны эти подробности, но лично я получил большое удовольствие. Возможно, вы тоже найдёте здесь что-то смешное.
Немного предыстории: недавно я купил ноутбук HP ZBook 17.8 G8. Но поскольку сам пользуюсь Fedora Linux, то решил немного развлечься с операционками — и при покупке выбрал вариант FreeDOS (там есть и другие варианты, включая Ubuntu и различные версии Windows 11).
Ну и конечно, после распаковки и включения ноутбука меня встретила радостная картинка на КДПВ.
Во-первых, это очень старая версия FreeDOS. Но ещё интереснее длительное время загрузки. Уверен, при загрузке там что-то мигало, подозрительно напоминая некоторые сообщения ядра Linux. Поэтому перед установкой Fedora Workstation я сделал точную копию HDD. На диске оказалось три раздела:
Всё это совсем не похоже на систему DOS… Похоже, HP на самом деле ставит на диск Linux, а затем запускает DOS в виртуальной машине. Давайте попробуем загрузить всё это в виртуальной машине и посмотрим, что получится.
Как видите, ссылка на документацию запускает какой-то PDF-ридер. Документ на последнем скриншоте начинается словами «Компьютер оборудован операционной системой FreeDOS, которая предоставляет только ограниченную функциональность». Что ж, с этим сложно спорить.
Но самое интересное, что на диске установлены ещё как минимум две другие ОС. Я говорю «как минимум», потому что в реальности на этом компьютере ТРИ операционные системы!
Заводской образ
Мы изучили содержимое образа. Теперь посмотрим, как загружается система.
# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Похоже, на диске лежит дистрибутив Debian GNU/Linux 9. После небольшого расследования выяснилось следующее:
- Ноутбук загружает прошивку UEFI, из которой запускается стандартный GRUB
- Debian загружается с отключенной KMS, а также со всеми DRM-драйверами
- После загрузки системы запускается Gnome Display Manager
- GDM автоматически регистрирует пользователя
root
и запустит /root/.xsession
- XSession из терминала XFCE запускает Qemu на образе в
/home/aos/qemu
Ниже скопирована настоящая
/root/.xsession
:#!/bin/bash
xfce4-terminal --zoom=-7 --geometry=1x1 --fullscreen --hide-toolbar --hide-menubar --hide-scrollbar --hide-borders -e "bash -c 'sleep 2 && xdotool search --name QEMU windowsize 100% 100% && xdotool search --name QEMU windowsize 100% 100% && xdotool search --name QEMU windowsize 100% 100% && xdotool search --name QEMU windowsize 100% 100% & qemu-system-x86_64 -smp cores=8 --enable-kvm -m 2048 -vga cirrus -hda /home/aos/qemu/freedos.img -usbdevice tablet -usb -device usb-host,hostbus=2,hostaddr=1 -monitor telnet:127.0.0.1:9378,server,nowait && poweroff -f ; exec bash'" >/dev/null 2>&1
poweroff -f
#xfce4-terminal --fullscreen --hide-toolbar --hide-menubar --hide-scrollbar --hide-borders
Это… интересный подход. Возможно, необходимый, потому что в X-сессии не запускается оконный менеджер. В этом случае Xdotool несколько раз пытается изменить размер окна Qemu, чтобы оно покрыло всю X-сессию. Видимо, после тестирования разработчики решили, что трёх раз будет достаточно.
По сути, этот скрипт делает следующее:
- Запускает терминал XFCE, скрывая весь его UI
- Запускает двусекундный таймер и ждёт
- В это время запускает виртуальную машину Qemu
- По истечении двухсекундного интервала ищет окно Qemu и пытается изменить его размер, чтобы оно заполнило весь экран. Делает это три раза на случай, если с первого раза не получилось
- После выхода из Qemu выключает компьютер
Больше вопросов, чем ответов
На этом этапе стоит упомянуть, что меню FreeDOS/HP Documentation запущено внутри виртуальной машины Qemu. Настоящий загрузчик (grub) не предлагает вариантов выбора и всегда загружает Debian 9.
Что это за «Документация HP»? Неужели они используют DOS PDF Reader? Ну, есть только один способ узнать. Нужно спуститься НА УРОВЕНЬ ГЛУБЖЕ (в
/home/aos/qemu/freedos.img
).# fdisk -l freedos.img
Disk freedos.img: 2 GiB, 2150400000 bytes, 4200000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
Device Boot Start End Sectors Size Id Type
freedos.img1 2048 2007039 2004992 979M b W95 FAT32
freedos.img2 * 2007040 4192255 2185216 1G b W95 FAT32
Похоже, у нас два раздела… Погодите, здесь есть диски
C:
и D:
?Помните, я говорил про три операционные системы? Так вот, я соврал. Их четыре. Файл
freedos.img
на самом деле содержит ДВЕ отдельные установки FreeDOS, хотя с одинаковой версией.Погружение: что в файле freedos.img
После извлечения содержимого двух разделов FAT32 обнаружилось следующее:
- В образе лежит дистрибутив syslinux
- Первый вариант — цепочка загрузки во FreeDOS на первом разделе
- Второй вариант — другой Linux со второго раздела
label dos
menu label ^FreeDOS
menu default
com32 chain.c32
append hd0 1
label live
menu label ^HP Documents
kernel /live/vmlinuz
append initrd=/live/initrd.img boot=live config homepage=file:///hpdocs/platform_guides/languages/index.html nonetworking nopersistent quickreboot nomodeset radeon.modeset=0 nouveau.modeset=0 i915.modeset=0 username=webc video=vesa apm=off novtswitch pnpbios=off acpi=off nomce loglevel=3 libata.force=noncq quiet splash noroot novtswitch
Похоже, этот Linux живёт в директории /live c файловой системой squashfs. Ну… давайте проверим. Действительно, во втором разделе находим /live/filesystem.squashfs — никакого бонуса за креатив.
Похоже, большинству файлов тут несколько десятилетий… так что удобного отчёта
/etc/os-release
ожидать не приходится. Зато есть /etc/debian_version
, в то время как ubuntu_version
отсутствует.# cat debian_version
6.0.3
Похоже, у нас 32-разрядный дистрибутив Debian 6.0.3. Судя по release notes, он датируется 8 октября 2011 года.
Ниже, ещё ниже
Похоже, в наши ручки попал ещё один объект для препарирования. Теперь это дистрибутив Debian 6.0.3, задача которого — показывать «полезный» PDF с информацией, что ПК бесполезен в заводской конфигурации. Судя по всему, в данном случае сценарий такой:
- Debian загружается почти как обычно, отключены все видеовыходы с аппаратным ускорением, активирован драйвер VESA
- Файл
/etc/rc.local
ищет раздел с меткойHPDOCS
и монтирует его в/hpdocs
. Если не может найти, то монтирует в/hpdocs
любой/dev/sda1
.
- Запускается служба под названием 'Webconverger'. Видимо, это старый проект в стиле «Превратить Debian в веб-киоск» (ссылка на Archive.org)
Webconverger делает ещё пару вещей:
- Настраивает X-сервер
- Устанавливает домашнюю страницу iceweasel в соответствии со значением из конфигурации
pxelinux
выше
- Устанавливает громкость звука на 100% (ой)
- Засыпает на 10 секунд, затем переключаетсяся между виртуальными терминалами 1 и 2
Резюме
При покупке компьютера HP с FreeDOS вы получаете следующее:
- установленный Linux загружает виртуальную машину
- эта виртуальная машина загружает либо старую версию FreeDOS, либо…
- … старую версию Linux в режиме киоска
Выводы, без приукрас
Судя по всему, установленный образ FreeDOS совсем негодный. Нет, я особо ничего не ожидал… просто думал запустить хотя бы Duke Nukem 3D на голом железе с заводской ОС.
По датам и набору файлов можно предположить, что содержимое
freedos.img
когда-то ставилось на реальное железо. Когда вошли в обиход диски NVME и другие современные аппаратные стандарты, наверное, образ перестал загружаться. Вместо обновления образа решили создать слой VM, и старый заводской образ просто включили в новый. На самом деле не такое и ужасное решение.Хотя кому-то в HP действительно нужно узнать, зачем нужны менеджеры окон в X11. Ну или пишите мне на почту, что-нибудь придумаем.
В завершение обзора — пару видеороликов с различными вариантами загрузки ноутбука из коробки.
Загрузка из исходного образа в DOS
Загрузка из исходного образа в экран «Документация»