unix
Today

Проект "полутруп": FreeBSD на Lenovo G50-45

На свете есть много разных моделей ноутбуков.

Бывают быстрые и дорогие, красивые и дорогие, просто дорогие и даже охренеть какие дорогие.

Однако временами среди этой серо-черной пластиковой массы встречаются настолько феерические экземпляры корпоративного скотства, что любое их использование превращается в пытку.

Именно на такое «проклятие техподдержки» из недалекго прошлого, я и буду сейчас устанавливать любимую FreeBSD.

Ня!

Адский аппарат в полевых условиях.

Адская машинка

Стоит сразу уточнить, что термин «дорогой» совсем необязательно описывает цену в магазине, куда чаще (но не так очевидней) речь идет про дальнейшее использование «скотского устройства»:

сложность и стоимость ремонта, редкость деталей и саму возможность их замены.

Немалую часть к стоимости владения добавляет и упоротость отдельных вендоров, не всегда заинтересованных в долгом и счастливом пользовании их продукцией.

В нашем сегодняшнем подопытном удачно сочетались практически все проблемы ноутбуков как электронных устройств:

слабость железа, редкость модели, сложность ремонта и упоротость вендора, решившего максимально сэкономить на лохах любимых покупателях.

Называется это чудо инженерно-экономической мысли Lenovo G50-45 и вот что о нем известно поисковой системе:

G50-45 is an affordable, entry-level 15.6-inch budget laptop released by Lenovo to handle everyday office work, web browsing, and media consumption.

Технические характеристики этого чуда.. не менее впечатляющие (убогостью да):

Примерно такое в народе и называют «дровами».

AMD вместо процессора и Radeon вместо видеокарты, будучи соединенными в одном устройстве обязательно дают пользователю непередаваемую гамму негативных эмоций в процессе настройки и использования.

Особенно если речь идет о столь редкой операционной системе, как FreeBSD.

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

Боевые шрамы. Впервые вижу ноутбук, покусанный своим пользователем.

Сей дивный аппарат ко всему прочему попал в мои волосатые лапы в сильно побитом виде — по всей видимости его выбросили из окна или удачно приложили об стену. Настолько велика была радость от процесса его эксплуатации.

Есть еще один важный нюанс:

ноутбук достался мне без модуля Wifi, поэтому установка системы проходила с помощью проводной сети Ethernet.

Про последующую эпическую перепрошивку BIOS, ради удаления «белого списка» сертифицированных карт WiFi расскажу в следующий раз и отдельной статье, а пока просто держите в уме, что проверить работу штатной карты под FreeBSD не было возможности.

Вид на внутренности.

Установка FreeBSD

Поскольку проклятое отродье из ада этот милый ноутбук считается довольно современным по меркам пользователей BSD-систем, устанавливалась последняя (на момент создания статьи) версия FreeBSD 15.1, причем с UEFI.

Сам процесс установки вполне стандартный, с поправкой на современные реалии с блокировками, о которых стоит рассказать отдельно.

Скачиваем установочный образ с зеркала Яндекса, поскольку основные CDN-сервера FreeBSD для доступа из РФ стали работать откровенно хреново:

wget https://mirror.yandex.ru/../FreeBSD-15.1-RELEASE-amd64-memstick.img

Копируем образ на флешку командой dd, которая присутствует в любом дистрибутиве Linux и любой BSD:

dd if=FreeBSD-15.1-RELEASE-amd64-memstick.img of=/dev/da0 bs=1M conv=sync

Загружаемся с нее и запускаем установку FreeBSD.

Добавлю, что при установке использовалась схема «single partition» — когда вся система целиком устанавливается в один единственный раздел /, о чем не жалею.

Хотя я сразу добавил плашку памяти, получив суммарно 6Гб, этого все равно оказалось мало по современным меркам. Поэтому дополнительно был добавлен большой раздел подкачки (swap) — целых 4Гб.

Без этого будут вылеты и зависания современных разжиревших программ, вроде всенародно любимого Chrome или VSCode с Rust.

Начальная настройка

Ввиду печальных реалий с блокировками и тотальной сетевой педерастией первым делом настраиваем самое быстрое зеркало из доступных.

Делается это с помощью отдельной утилиты, устанавливаемой из пакетов:

pkg install py312-fastest_pkg

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

pkg search fastest_pkg

Если этого пакета не окажется в готовом виде, его можно легко собрать из портов, находится тут: /usr/ports/ports-mgmt/fastest_pkg.

Запускаем утилиту:

fastest_pkg

При запуске произойдет проверка всех зеркал FreeBSD на предмет их доступности и (что важнее) скорости скачивания из вашей локации, после чего утилита выплюнет в консоль готовый конфиг для пакетного менеджера.

С самым быстрым зеркалом, разумеется.

Так выглядит результат ее работы:

Все красиво и логично.

Проблема лишь в том, что генерируемый конфиг выдается (внезапно) в устаревшем формате и не заработает в 15й FreeBSD.

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

Так выглядит корректный конфиг:

Разница заключается в названии репозиториев (вместо «FreeBSD» нужен «FreeBSD-ports» и необходимости указания второго репозитория, под названием «FreeBSD-ports-kmods», причем обязательно с постфиксом _$VERSION_MINOR в ссылке.

Второй репозиторий появился как раз в 15й версии, в него были перенесены модули ядра с бинарными прошивками для видеокарт.

Desktop Installer

В пакетах FreeBSD с незапамятных времен очень давно присутствует специальная консольная утилита, предназначенная для быстрой и безболезненной установки пользовательского окружения:

Знают о ней далеко не все бздуны пользователи FreeBSD, с чего до сих пор появляются однотипные статьи про установку Xorg и Xfce полностью вручную, пакет за пакетом.

Мы же пойдем другим путем — светлым путем прогресса.

Устанавливаем эту замечательную утилиту:

pkg install desktop-installer

И немедленно запускаем:

desktop-installer

Дальше пойдут диалоги выбора с автоматической установкой, по итогам которой у вас появится полностью рабочее пользовательское окружение с каким-нибудь KDE, Xfce или Gnome.

Как нетрудно догадаться по скриншотам, я выбрал KDE.

Дальнейшая настройка

В случае более адекватного железа, одной утилитой desktop-installer можно было и ограничиться, сразу же получив работающее пользовательское окружение.

К сожалению на отбитом (во всех смыслах) G50 все оказалось несколько.. сложнее.

Для начала, неверно определился нужный для видеокарты Radeon HD 8280 модуль ядра и требуемая версия прошивки DRM, которая используется в этом адском аппарате.

Оказалось, вместо модуля amdgpu, отвечающего за современные видеокарты AMD, необходимо использовать radeonkms, в который скидывают поддержку legacy-устройств.

Рабочая версия прошивки DRM также самая старая из поддерживаемых:

   drm-515-kmod: 5.15.160.1501000_11

Стоит сразу предупредить, что с любой другой версией прошивки система намертво зависает при попытке инициализации видеокарты.

Думаю несложно догадаться, что выяснилось это лишь опытным путем и множества перезагрузок.

Впрочем в этом нет вины разработчиков FreeBSD, поскольку проблема появилась не так давно и на уровне апстрима DRM.

Таким образом, строка загрузки модулей в /etc/rc.conf целиком выглядит так:

kld_list="acpi_lenovo acpi_video coretemp radeonkms fusefs"

Еще я сразу добавил отдельный конфиг для Xorg с указанием на использование DRM-модуля (modesetting):

cat /usr/local/etc/X11/xorg.conf.d/radeon.conf
Section "Device"
    Identifier "Card0"
    Driver "modesetting"
EndSection

Хотя по-идее Xorg должен самостоятельно определять наличие модуля DRM и использовать modesetting, по какой-то причине этого не происходит и без указанного выше конфига аппарат зависает.

Но это еще не все.

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

Чтобы этого избежать, нужно принудительно включить текстовый режим в консоли, задав параметры в /boot/loader.conf:

hw.vga.textmode=1
kern.vty=vt

Последняя проблема с графикой в этом скотском устройстве заключается в зависании при переключении TTY:

достаточно нажать Ctrl+Alt+F1 и при возвращении в Xorg вас ожидает черный экран тьмы и зависшая система.

Чтобы решить и эту проблему, необходимо задать еще несколько дополнительных параметров (какой сюрприз):

efi_max_resolution="1280x1024"
hw.radeon.si_support=0

Таким образом целиком /boot/loader.conf выглядит следующим образом:

hw.vga.textmode=1
kern.vty=vt
efi_max_resolution="1280x1024"
hw.radeon.si_support=0

Но это еще не конец.

Еще настройки

Помимо проблем с видео, в этом чудовище детище иностранных капиталистов оказалось еще и проблемное аудио.

Ну как проблемное, «немного сложное» в настройке  — для правильной работы и получения работающего звука, необходимо задать юнит по-умолчанию:

sysctl -w hw.snd.default_unit=1

Наконец последней эпичной проблемой, достойной упоминания, оказалась вот такая плашка настройки экрана, вылезающая как черт из табакерки по любому поводу:

«По любому поводу» — не фигура речи, эта проклятая плашка вылезала например при изменении яркости экрана или проигрывании видео в полноэкранном режиме.

И разумеется очень сильно бесила.

kcmshell6 kcm_kded