Проект "полутруп": 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