FreeBSD на HP Compaq NX7400
Силами сердобольных людей в моей «элитной конюшне» появился еще один интересный аппарат из далекого прошлого, так что теперь рассказываю как развернуть на нем FreeBSD и наслаждаться жизнью.
HP Compaq NX7400
Это чудовище ноутбук бизнес-класса из далекого 2006 года (аппарату уже полные 20 лет), тяжелый, здоровый и квадратный — все как было положено в корпорациях недалекого прошлого.
C весьма брутальным внешним видом, дающим фору даже некоторым моделям старых Thinkpad — самое оно для показа в «кино про хакеров» в качестве реквизита.
Собственно при полевых испытаниях в питерском кафе, от меня впервые отсаживались другие посетители, настолько жуткого вида оказался этот аппарат.
Основные характеристики, целиком тут:
Ввиду возраста и очевидной слабости железа, сколь-нибудь разумное использование такого девайса нормальными людьми крайне ограничено, новый GTA VI на таком точно не пойдет. Но для всего остального, не связанного с ААА-игорами и нейросетями оно вполне пригодно, собственно эта статья пишется сейчас как раз на нем.
Естественно на борту полный набор всей необходимой периферии тех лет:
Wifi, Bluetooth, Ethernet, аналоговый модем и выход VGA.
Все это добро до сих пор работает, но по большому счету уже не актуально, так что использовал автор лишь WiFi и Ethernet.
Тюнинг
Первым делом аппарат был немного улучшен в авторском стиле:
внутрь была запихнута вся доступная память (обои две плашки DDR2 SO-DIMM, суммарно на 2.5Гб) и 1Тб SATA-диск.
Что разумеется сильно ускорило его работу, хотя главную проблему в виде слишком слабого процессора не решило.
Позже удалось достать еще и новую батарею для этого монстра, хотя такой заказ продавцов наверное сильно удивил.
Так что машинка получилась заметно лучше и быстрее, чем была 20 лет назад.
Стоит добавить, что при таком небольшом количестве физической памяти (по современным меркам), в обязательном порядке нужен большой swap, который задан отдельным разделом на диске:
swapinfo -g Device 1G-blocks Used Avail Capacity /dev/ada0p7 7 1 6 17%
Установка
Ноутбук поддерживает загрузку с USB-флешек, но поскольку разъемы устаревшего формата USB 2.0 (Type A), флешки должны быть соответствующие.
На одну из таких был записан официальный образ FreeBSD 15.1, с которого затем происходила установка.
Самой большой проблемой ноутбука оказался процессор:
CPU: Intel(R) Core(TM)2 CPU T5500 @ 1.66GHz (1662.62-MHz K8-class CPU)
Это одна из ранних моделей Centrino с проблемным микрокодом, поэтому попытка загрузки FreeBSD без отключенного SMP приводила к произвольным зависаниям.
Для установки необходимо выбрать «Safe mode» в загрузчике FreeBSD, этот режим установит флаг:
kern.smp.disabled=1
Это разумеется плохо для и без того дохлой производительности, но другого способа решить эту проблему я увы не нашел.
В сети есть упоминания решений с помощью обновления BIOS или микрокода процессора, но они к сожалению не помогли — ноутбук все также произвольно зависал при работе.
Настройка сети
Поскольку было откровенно лень вбивать пароль от точки WiFi в инсталляторе, для установки использовался Ethernet — старая добрая проводная сеть. Хотя адаптер беспроводной сети также был доступен сразу и без необходимости скачивания прошивки.
Называется сей сказочный девайс PRO/Wireless 3945ABG, отвечает за его поддержку в ядре FreeBSD модуль wpi, который был подключен настройкой в файле /etc/rc.conf:
wlans_wpi0="wlan0" ifconfig_wlan0="WPA DHCP powersave country RU regdomain NONE"
Обратите внимание на указанный regdomain, что это такое и зачем я уже описывал в отдельной статье.
Дальше никаких особых приключений не было, в /etc/wpa_supplicant.conf был добавлен раздел с нужной WiFi-точкой и все сразу заработало.
Настройка видео
Видеокарта называется Intel GMA 950 и оказалась полным дном слабой по нынешним меркам:
чип не поддерживает аппаратную обработку T&L и современные видеокодеки вроде H.264, из-за чего просмотрпорнофильмов в HD вызывает сильную загрузку процессора.
Но даже на таком древнем чудище чуде автору удалось завести KMS, вместе с DRI и даже VDPAU:
40.515] (II) modeset(0): [DRI2] Setup complete [ 40.515] (II) modeset(0): [DRI2] DRI driver: i915 [ 40.515] (II) modeset(0): [DRI2] VDPAU driver: i915
Просмотр 4K видео разумеется будет тормозить из-за слабости железа, но все остальное вполне юзабельно.
Пакет DRM с поддержкой этой видеокарты называется drm-61-kmod, более новые ее не поддерживают, для установки:
pkg install drm-61-kmod
Затем добавляем в /etc/rc.conf:
kld_list="fusefs i915kms acpi_hp coretemp"
Важный нюанс, проявивший себя в последних версиях FreeBSD:
на старых компьютерах модуль KMS может не успеть полностью загрузиться до запуска X-сервера!
Поэтому xdm у меня запускается как отдельный TTY, настройка в файле /etc/ttys:
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm on secure
При этом в /etc/rc.conf нужно закомментировать или удалить строку:
xdm_enable=YES
После всех этих интересных манипуляций, вывод команды glxinfo показывает наличие ускорения, а известный тест glxgears отрабатывает без ошибок, показывая вращающиеся шестеренки с вполне адекватным FPS:
Настройка засыпания
Любой приличный ноутбук должен уметь засыпать и просыпаться, поэтому настройка правильного засыпания во FreeBSD — обязательная часть шоу.
Первым делом в /boot/loader.conf прописываем следующие настройки:
kern.vt.suspendswitch=0 hw.syscons.sc_no_suspend_vtswitch=1
Без них при пробуждении аппарата будет лишь черный экран и глубокое разочарование в высоких технологиях.
Однако стандартных настроек оказалось недостаточно:
хотя при пробуждении машина оживала, яростно мигая светодиодами, клавиатура и тачпад намертво блокировались.
Поэтому пришлось применить военную хитрость и.. принудильно переключать TTY перед засыпанием. Отвечает за такое действо в FreeBSD утилита vidcontrol, о существовании которой почему-то мало кому известно.
Вот такой интересной командой происходит программное (без нажатия кнопок) переключение текущего TTY:
/usr/sbin/vidcontrol -s 2 </dev/ttyv1
Эту команду я вписал в конец файла /etc/rc.suspend, перед вызовом команды zzz, после чего при засыпании вначале происходило переключение в консоль и только после ноутбук засыпал.
Более подробно про особенности процессов suspend/resume во FreeBSD на разных моделях ноутбуков описано тут.
Тачпад
С тачпадом особых проблем замечено не было, поэтому я лишь добавил стандартную конфигурацию для «Tap to click» — симуляции нажатия кнопок мыши при двойному клику по тачпаду.
Необходимый конфиг для Х-сервера был добавлен в файл /etc/X11/xorg.conf.d/30-tap.conf:
# Restart X11 after changing or removing this file Section "InputClass" Identifier "touchpad" Driver "libinput" MatchIsTouchpad "on" Option "Tapping" "on" # Scroll same direction as mouse movement Option "NaturalScrolling" "on" Option "ClickMethod" "clickfinger" # -1.0 to +1.0 to slow down or speed up pointer Option "AccelSpeed" "0.0" # Avoid accidental movement or clicks while typing Option "DisableWhileTyping" "on" EndSection
Еще я добавил «программный курсор», для решения проблемы с замиранием курсора, конфиг в файле /etc/X11/xorg.conf.d/20-swcursor.conf :
# Restart X11 after changing or removing this file
Section "Device"
Identifier "Device0"
Option "SWCursor" "on"
EndSectionНа этом базовая настройка была завершена.
Фирменные кнопки
На этом винтажном Compaq разумеется присутствуют множество фирменных управляющих кнопок:
управление яркостью экрана, звуком, переключение отображения на внешний VGA и так далее.
Из интересного и необычного тут есть отдельная огромная кнопка для переключения WiFi, таких размеров что по ней можно бить сразу кулаком — не промахнешься.
Чтобы все эти радости заработали, необходимо загрузить модуль acpi для устройств HP:
kldload acpi_hp
Для загрузки при запуске системы, этот модуль прописан в /etc/rc.conf:
kld_list="fusefs i915kms acpi_hp coretemp"
Модуль coretemp, который также присутствует в списке модулей позволяет считывать температуру с датчиков, что дает использовать мою утилиту для мониторинга температуры:
К сожалению один из датчиков глючит, поэтому буфер сообщений ядра забивается однотипными сообщениями:
acpi_tz0: _CRT value is absurd, ignored (256.1C)
Разумеется я захотел проверить производительность, ради чего собрал из исходников и запустил NBlood:
В следующей серии
На самом деле история с этим Compaq несколько сложнее, поскольку в оригинале его хотели пустить на запчасти в качестве донора, чтобы оживить еще более жуткий аппарат на фото выше.
Но он ожил сам, так что монстра у меня теперь два и про второй тоже скоро будет статья.