fbpx
22.8 C
София

Нещо много странно е скрито във FreeDOS на Hewlett Packard

Оригиналът е на Hein-Pieter van Braam

Най-четени

Даниел Десподов
Даниел Десподовhttps://www.kaldata.com/
Ежедневен автор на новини. Увличам се от съвременни технологии, оръжие, информационна безопасност, спорт, наука и концепцията Internet of Things.

За да икономисат от плащането на лицензи производителите на най-различни компютри често продават една съвсем оголена версия на съответното устройство от гледна точка на софтуера. Но не могат да се продават компютри без операционна система, понеже по този начин няма как да се провери тяхната работа, а и в някои държави това се счита за незаконно. Ето защо се инсталира някаква безплатна и почти безполезна ОС, която може да убеди купувача, че избраният от него компютър работи, а и по този начин се спазват юридическите формалности. Понякога се инсталира някаква Linux дистрибуция, но по-често се прибягва до един друг вариант.

Много често за тези цели се използва FreeDOS. Бихме си помислили, че това е една много стара операционна система, само тя масово се използва при продажбите на съвременната компютърна техника.

С това се е заел известният специалист Hein-Pieter van Braam по виртуализацията на Linux, който реши по-задълбочено да надникне във FreeDOS, където откри нещо твърде странно. Статията му е от 15-ти май тази година.


Ще опиша някои твърде странни неща в лаптоп на Hewlett Packard, на който е инсталирана операционната система FreeDOS. Наскоро си купих лаптопа HP ZBook 17.8 G8 и тъй като самият аз използвам Fedora Linux, реших при покупката да си избера нещо друго, което да не е Windows. Избрах си FreeDOS, въпреки че имаше и други варианти, включително Ubuntu.

Естествено, след включването на компютъра бях посрещнат от добре познатият екран на FreeDOS:

Това е една много стара версия на FreeDOS. Но по-интересното е, че тя се зарежда твърде дълго. Още по-интересно е, че при нейното зареждане дисковете работят, а светодиодите мигат по съвсем същия начин и за същото време, сякаш това са съобщения на Linux ядрото. Много подозрително. Ето защо, преди да инсталирам харесваната от мен Fedora Workstation, бързичко направих точно копие на системния диск. Оказа се, че там са налични цели три дискови дяла:

  • Системен EFI дял
  • Файловата система EXT4 Linux
  • SWAP файл за Linux

Това изобщо не прилича на 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/"

По всичко личи, че в този дисков образ е поставена Linux дистрибуцията 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

Това един… много интересен подход. Може би така и трябва, понеже в Х-сесия не може да се стартира прозоречен мениджър. Конкретно в този случай Xdotool на няколко пъти се опитва да промени размера на програмния прозорец на Qemu, за да може да се скрие цялата Х-сесия. По всичко личи, че след тестването програмистите са решили, че три пъти е достатъчно.

На практика показаният по-горе скрипт върши следното:

  • Стартира терминала на XFCE средата и изцяло скрива неговия UI
  • Стартира 2 секунден таймер и чака
  • През това време се стартира виртуалната машина 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 с файловата система squashfs. Нека да проверим… Наистина, във втория дял се вижда /live/filesystem.squashfs. Тези момчета изобщо не са креативни.

Датите на тези файлове са отпреди няколко десетилетия… Не можем да очакваме нещо удобно от /etc/os-release. Но за сметка на това имаме /etc/debian_version, но от друга страна ubuntu_version липсва. Постъпваме по следния начин:

# cat debian_version 
6.0.3

По всичко личи, че пред нас е 32-битовата Linux дистрибуция Debian 6.0.3. Проверяваме в release notes, и да, тя е от 8-ми ноември 2011 година.

Още по-надолу

Да, получихме още един обект за препариране. Сега това е Linux дистрибуцията Debian 6.0.3, задачата на която е да покаже полезния PDF с информацията, че този лаптоп е безполезен само със заводската си конфигурация. Сценарият явно е следният:

  • Debian се зарежда почти както обикновено, но са изключени всички видеоизходи с хардуерно ускорение, активиран е VESA драйвера
  • Файлът /etc/rc.local търси дисков дял с име HPDOCS и го монтира в /hpdocs. Ако не може да го намери, монтирането става в /hpdocs в произволен /dev/sda1.
  • Стартира се процес с име Webconverger. По всичко личи, че това е някакъв стар проект в стил да превърнем Debian в уеб киоск

Webconverger извършва още две неща:

  • Настройва Х-сървъра
  • Настройва домашната страница iceweasel в съответствие със значенията от конфигурацията pxelinux, която показах по-горе
  • Силата на звука се вдига до 100%
  • Изчакване с продължителност 10 секунди, след което се осъществява превключване между виртуалните терминали 1 и 2

Обобщение

При закупуването на лаптоп с FreeDOS получавате следното:

  • Инсталиран Linux стартира виртуална машина
  • Тази виртуална машина зарежда или стара версия на FreeDOS, или…
  • … стара версия на Linux в режим на киоск

Изводи

Използваният FreeDOS е съвсем неподходящ. Аз и не очаквах нещо друго… Просто си мислех да пусна Duke Nukem 3D на голия хардуер със заводската ОС.

По датите и комплекта файлове си личи, че съдържанието на freedos.img преди много време се е инсталирало на реален хардуер. Когато започна използването на NVME флаш дисковете и другите съвременни хардуерни стандарти, образът е престанал да се зарежда. Вместо да обновят образа, програмистите са решили да създадат виртуален софтуерен слой, който може да стартира тази ОС. Не е най-ужасното решение, но и не е най-доброто.

А може би някой в HP е искал да разбере за какво се използват прозоречните мениджъри в Х11. Нека да ми пише – ще измислим нещо. 

И накрая два клипа с различните варианти на зареждане на лаптопа.

Зареждането на операционната система FreeDOS:

Зареждане от опцията HP Documents:

 


В коментарите към този материал потребителите се шегуват, че след десетина години, когато старта версия на Debian спре да се зарежда, разгледаният дотук дисков образ ще бъде обвит още един виртуализационен слой и всичко ще бъде наред. А може би тогава това ще бъде някакъв тънък клиент с фирмен електронен облак? За да зареди DOS?

Наистина изглежда доста странно – купуваш си лаптоп с гол DOS, а се оказва, че там има цели четири операционни системи с мрежова поддръжка, което означава, че може би се осъществява следене… 


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook или изтеглете приложението на Kaldata.com за Android, iOS и Huawei!

Абонирай се
Извести ме за
guest
10 Коментара
стари
нови
Отзиви
Всички коментари

Нови ревюта

Подобни новини