FreeBSD: установка на ThinkPad X200 Tablet у 2025 році

Автор |  30/11/2025
 

Я давно фанат ThinkPad, дуже люблю всю їхню лінійку.

Нещодавно десь зустрів модель X200, які випускались з 2008 року – просто десь побачив картинку, і дуже захотів собі в “колекцію”. Неочікувано – але він навіть знайшовся в продажу на OLX, тому купив собі цей чудо-девайс.

ThinkPad X200 overview

Він… Ну – це просто бімба 🙂

Перше, що відрізняє цей ноутбук від інших моделей – це поворотний екран на 360 градусів, і це “фірмова фішка” моделі саме X200 Tablet, бо є X200 без цього.

Друге – це тачскрін.

Зовнішній вигляд

Виглядає ThinkPad X200 Tablet так:

На борту навіть є dial-up модем!

Ну і, звісно, ніяких HDMI – для зовнішнього монітору тільки VGA.

Хоча HDMI 1.0 з’явився ще у 2003, але тоді він використовувався для DVD-плеєрів та телевізорах, а ноутбуки в ті роки ще йшли переважно з VGA.

Замовив перехідник VGA на HDMI, бо в моєму моніторі DELL U3421WE ніяких VGA, само собою, вже нема – подивимось, чи спрацює.

Справа є фізичний перемикач для відключення WiFi/Bluetooth, хоча в моїй моделі блютузу нема:

В комплекті йде стилус:

ThinkPad X200 Hardware

Звісно, залізо вже стареньке:

  • дисплей: 12.1 дюймів, 1440×900 точок
  • процесор: Intel Core 2 Duo SU9400, 1.4 GHz
  • відео: Integrated card Intel 4500MHD
  • оперативна пам’ять: DDR3-1066 MHz
    • в офіційній документації Lenovo завжди писали, що максимум пам’яті 4 гігабайти, але гугол каже, що 8 гіг працює без проблем
    • поки що в мене 4 GB, замовив нові 2 планки по 4 ГБ, подивимось чи запрацює
    • зараз (2025 рік) DDR3-1066 MHz на 4 ГБ коштує 440 гривень 🙂
  • диск: SATA, але сам диск HDD, 250 ГБ, 5400 RPM
    • начебто є можливість замінити диск на SSD, але корпус ще не розбирав, потім подивлюся, і якщо можна – то поставлю якийсь SSD
  • мережа:
    • Ethernet 1000 bmps
    • WiFi: 802.11a, 802.11g, 802.11n

Встановлення FreeBSD

Чому FreeBSD? Бо це моя перша UNIX-система, на якій я вперше збирав ядро, ще у 2006 чи 2007 році, і потім до 2012 чи 2013 це була моя основна система на моїх перших сервера.

Моя перша версія FreeBSD була… не пам’ятаю точно, чи то 5, чи то 6. Але згодом, після виходу FreeBSD 9 перейшов на Linux (CentOS). Правда чому саме – теж не пам’ятаю. Щось пов’язане зі змінами в роботі з пакетами і FreeBSD ports.

І навіть в цьому блозі одним із перших матеріалів були пости саме по FreeBSD – FreeBSD: установка коллекции портов (Ports Collection), 14 серпня 2011.

Ну і раз вже налаштовуємо “раритетний” ноутбук – то чому б не спробувати і “раритетну” систему? 🙂

Трохи ностальгії по тим часам, коли вчився працювати з портами FreeBSD, коли вперше розбирався з runlevels в Linux часів SysV init і їхніми аналогами у FreeBSD – режимами завантаження системи.

Хоча, звісно, встановлювати будемо актуальну версію FreeBSD, 14.3 на сьогодняшній день.

Єдине, що тачскрін завести не вдалося, і, судячи з результатів гуглінгу, не вдасться – бо FreeBSD просто не має драйвера.

Тому я все ж встановлю FreeBSD, пограюсь і опишу якісь деталі, але потім на цьому ноутбуці буде Arch Linux – там хоч і довелось трохи попрацювати напильником, але тачскрін працює відмінно.

Вибір образу FreeBSD

Для FreeBSD існує три гілки системи:

  • RELEASE: основна стабільна версія, апдейти тільки security + critical fixes – максимум стабільності, мінімум сюрпризів
  • STABLE: гілка розробки, з якої формується майбутній RELEASE – вже достатньо стабільна, але все ще можуть бути баги
  • CURRENT: гілка активної розробки з усіма новими фічами і плюшками – мінімум стабільності, максимум нових експерементальних штук

FreeBSD має окремі версії для майже всіх платформ:

Для нашого ThinkPad X200 вибираємо amd64, завантажуємо образ зі сторінки Get FreeBSD, і починаємо установку.

Встановлення FreeBSD на віртуальну машину

Аби не робити 100500 фотографій екрану – процес установки FreeBSD покажу на віртуалці з QEMU/KVM, бо принципової різниці нема.

По віртуалізації QEMU/KVM в Linux є чорнетка, допишу якось, давно лежить.

Офіційна документація – Chapter 2. Installing FreeBSD.

У FreeBSD дуже приємний інсталятор bsdinstall, з яким можна зробити все і відразу. І, як на мене – він зручніший за archintsall, з яким я взагалі не подружився і Arch Linux завжди встановлюю руками:

Вибираємо 1, далі маємо вибір – або запустити установку, або використати ISO як live-cd:

Задаємо ім’я хоста:

Далі вибір компонентів.

Нам тут потрібні тільки порти, “ports – Ports tree“, і можна додати “src – System source tree” – тут весь код FreeBSD, корисно, якщо хочеться зібрати власне ядро і для установку апдейдів з утилітою freebsd-update, про неї трохи далі:

Наступний крок – розбивка диску:

  • ZFS: файлова система з підтримкою snapshots, RAID і можливістю зміни розміру розділів
    • з’явилась у 2005 році для операційної системи Solaris від Sun Microsystems, і на той час була революційною системою
  • UFS: класична для FreeBSD файлова система – дуже стабільна, мінімум використання RAM, але і не має всіх фіч ZFS

Залишаємо дефолтну опцію “Auto (ZFS)”:

Забігаючи наперед – ось так потім виглядають розділи вже на самому ноутбуку:

# gpart show
=>       40  312581728  ada0  GPT  (149G)
         40       1024     1  freebsd-boot  (512K)
       1064        984        - free -  (492K)
       2048    4194304     2  freebsd-swap  (2.0G)
    4196352  308383744     3  freebsd-zfs  (147G)
  312580096       1672        - free -  (836K)

І навіть пропонується відразу налаштувати RAID – але це явно не наш кейс:

Вибираємо диск для установки:

Чекаємо завершення установки:

Задаємо пароль root:

Вибираємо мережевий інтерфейс:

Це установка на віртуалку, WiFi тут нема.

Але на самому ноуті можна відразу налаштувати і його, хоча в моєму випадку з ThinkPad X200 потім довелось трохи робити руками, далі покажу.

Залишаємо DHCP:

Вибираємо таймзону:

Після чого налаштовуємо базові параметри системи:

  • local_unbound: локальний DNS-кеш + DNSSEC валідація, для домашнього ноута можна не включати
  • sshd: включаємо
  • moused: підтримка миші в консолі – користі мало, але виглядає прикольно 🙂
  • ntpd: синхронізація часу
  • powerd: динамічне керування частотою CPU, дуже корисно, особливо для ноутбука – зберігати час роботи батареї
  • dumpdev: допомагає дебажити kernel panic

Далі налаштування для security – цікаво, але для домашнього ноута можна пропустити, має сенс для серверів:

Детально можна почитати в документації Section 2.8.4, “Enabling Hardening Security Options”, але коротко пройдемось по опціях, бо тут проявляються перші (якщо не говорити про файлу систему) відмінності від Linux:

  • hide_uids і hide_gids: ховає процеси інших користувачів системи (root, звісно, бачить все)
  • hide_jail: ховає процеси, які запущені в jail
    • FreeBSD Jails – аналог “класичних” контейнерів в Linux, але з більше жорсткою ізоляцією
    • і з’явились вони ще до того, як в Linux ядрі взагалі з’явилась підтримка чогось схожого:
      • jails були додані у FreeBSD ще у 2000 році, з FreeBSD 4.0
      • в Linux на той час був тільки chroot, де ізоляція була дуже слабка, і можна було легко вийти за межі “контейнера” і тримати доступ до всієї системи
      • і тільки у 2006-2008 в Linux з’явились cgroups, аж в 2008-2013 були додані namespaces, і тільки після цього, у 2013 році, з’явився Docker і контейнери в Linux, якими ми їх знаємо зараз
  • read_msgbuf: заборона читання dmesg звичайним юзерам
  • proc_debug: вимикає для звичайних користувачів можливість дебажити чужі процеси і обмежує частину інформації з /proc
  • random_pid: якщо включено, то PID задається з рандомним зміщенням номеру, а не по черзі
  • clear_tmp: у FreeBSD каталог /tmp по дефолту не очищається при ребуті, з clear_tmp це можна включити
    • в Linux залежить від дистрибутива і того, як саме монтується /tmp, бо зазвичай це tmpfs в RAM, який, звісно, очищається
    • FreeBSD свідомо не очищає його, бо політика FreeBSD – “адміністратор сам вирішує, що треба робити системі
  • disable_syslogd: заборона відкриття мережевого сокету для демона syslogd – на ноуті можна включити
    • але сам syslogd продовжує використання локального Unix socket /var/run/log для роботи
  • secure_console: блокує root-вхід з консолі без пароля при завантаженні системи в single-user mode (див. Chapter 15. The FreeBSD Booting Process – у FreeBSD дуже класна документація)
  • disable_dtrace: DTrace у FreeBSD – аналог strace/eBPF в Linux, для трасування процесів, системних викликів і роботи ядра, і має можливість вносити “на льоту” зміни в пам’ять та ядро; disable_dtrace блокує цю можливість навіть для root

Окей – залишаємо тут все по дефолту, і переходимо до user management:

Додаємо юзера:

У FreeBSD є можливість вказати Login class, і це фішка чисто FreeBSD, див. Configuring Login Classes.

Ну і власне на цьому установка завершена.

В останньому вікні є можливість щось дотюнити:

Ребутаємось, і маємо нову систему:

FreeBSD load options

Коротко по доступних опціях:

  • Boot Multi user (Enter): стандартний запуск, монтуються файлові системи, запускаються сервіси із /etc/rc.conf
    • аналог в Linux – звичайний boot у runlevel/systemd multi-user.target
  • Boot Single user: коли система зламалась, і треба щось пофіксити
    • запускається тільки ядро і мінімальний shell
    • /” монтується в read-only (можна перемонтувати в r/w)
    • аналог в Linux – init=/bin/bash або systemd.unit=rescue.target
  • Escape to loader prompt: консоль у FreeBSD loader, де можна змінити параметри ядра, вибрати інше ядро, змінити ZFS Boot Environments
    • аналог в Linux – GRUB console, але FreeBSD loader глибше інтегрований з системою
  • Reboot: reboot 🙂
  • Cons: Video: фішка FreeBSD, задає тип для system console – video console (звичайний екран) або serial console
  • Kernel: default/kernel: вибір ядра для завантаження
    • при апгрейдах попередня версія ядра зберігається у /boot/kernel.old/, і при проблемах можна завантажити інші ядра
  • Boot Options: додаткові параметри для завантаження – відключити ACPI, DMA, ZFS cache, etc

Повертаємось до ноутбука.

Налаштування WiFi

При встановленні на ноутбук побачило карту:

І мережі:

Але після налаштування і завершення установки інтерфейсу нема:

Робимо вручну.

З pciconf -lv перевіряємо пристрої на PCI/PCI-Express шині:

Нас цікавить device iwn – “Intel WiFi Link 5300“:

The Intel® WiFi Link 5300 Series is a family of IEEE 802.11a/b/g/Draft-N1 wireless network adapters that operate in both the 2.4 GHz and 5.0 GHz spectra

Intel® WiFi Link 5300 Series.

Значить, нам потрібен драйвер iwn і модуль iwn5000fw.

Додаємо їх завантаження у файл /boot/loader.conf:

if_iwn_load="YES"
iwn5000fw_load="YES"

Можна додати без ребуту з kldload:

# kldload if_iwn
# kldload iwn5000fw

Створюємо новий віртуальний Wi-Fi інтерфейс з іменем wlan0 на основі апаратного пристрою iwn0, який ми побачили в pciconf:

# ifconfig wlan0 create wlandev iwn0

Перевіряємо:

Звісно, мережі ще нема – додаємо конфіг для неї.

Для роботи з WiFi у FreeBSD є утиліта wpa_supplicant, яка відповідає за авторизацію, підтримку підключення, перепідключення при втраті сигналу.

Редагуємо файл /etc/wpa_supplicant.conf, в кінець додаємо параметри:

network={
    ssid="MyWiFi"
    psk="qwerty12345"
}

Додаємо загрузку конфігу WiFi у /etc/rc.conf, який відповідає за autostart:

wlans_iwn0="wlan0"
ifconfig_wlan0="WPA DHCP"

Рестартимо мережу:

# service netif restart

І wlan0 має підключитись і отримати IP:

root@setevoy-x200:/home/setevoy # ifconfig wlan0
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=0
        ether 00:21:6a:b5:32:4c
        inet 192.168.0.172 netmask 0xffffff00 broadcast 192.168.0.255
        groups: wlan
        ssid setevoy-tp-link-21-5 channel 36 (5180 MHz 11a ht/40+) bssid 30:68:93:80:ef:73
        regdomain FCC country US authmode WPA2/802.11i privacy ON
        deftxkey UNDEF AES-CCM 2:128-bit txpower 17 bmiss 10 mcastrate 6
        mgmtrate 6 scanvalid 60 ampdulimit 64k -amsdutx amsdurx shortgi -stbc
        -ldpc -uapsd wme roaming MANUAL
        parent interface: iwn0
        media: IEEE 802.11 Wireless Ethernet MCS mode 11na
        status: associated
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

Може бути із затримкою в 10-30 секунд, але в результаті завелось.

При потребі можна запустити wpa_supplicant в дебаг-режимі:

# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -dd

FreeBSD Ports Collection та pkg

У FreeBSD є два незалежні механізми встановлення програм – з утилітою pkg, або збирати самому.

pkg – аналог apt або pacman в Linux: отримує і встановлює вже зібрані і готові до встановлення пакети з офіційного репозиторію:

# cat /etc/pkg/FreeBSD.conf
FreeBSD: {
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}
FreeBSD-kmods: {
  url: "pkg+https://pkg.FreeBSD.org/${ABI}/kmods_quarterly_${VERSION_MINOR}",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

Тут FreeBSD – це user-facing пакети, а FreeBSD-kmods – репозиторій для додаткових модулів ядра (nvidia-driver, virtualbox-kmod тощо).

FreeBSD Ports Collection – каталог із source code пакетів та Makefiles, розбиті по категоріям, наприклад порт для xfce4-conf буде в директорії /usr/ports/x11/:

root@setevoy-x200:/home/setevoy # ls -1 /usr/ports/x11/xfce4-conf/
Makefile
distinfo
files
pkg-descr
pkg-plist

Використовувати порти варто, якщо потрібні якісь особливі параметри для зборки та установки, але здебільшого все можна встановлювати з pkg.

Апгрейд системи і пакетів

Тут у нас є дві окремі частини – сама система, і пакети, які ми встановлюємо з pkg.

Документація – Chapter 26. Updating and Upgrading FreeBSD і freebsd-update man.

Для апгрейду системи у FreeBSD є класна утиліта freebsd-update – дозволяє і отримувати останні апдейти, і виконувати апгрейд самої системи.

Аби отримати і встановити вручну – робимо:

# freebsd-update fetch
# freebsd-update install

fetch – завантажити останні апдейти, install – встановити їх.

Або можна відразу додати в cron:

@daily    root    freebsd-update cron

freebsd-update fetch та freebsd-update install виконають апгрейд ядра, системних утиліт в /bin, /sbin, /usr/bin, бібліотеки в /lib, /usr/lib і драйверів.

Для апгрейду пакетів, які ми встановлюємо з pkg – використовуємо аналогічні команди:

# pkg update
# pkg upgrade

Аналогічно до freebsd-update – з update отримуємо оновлення, з upgrade встановлюємо їх.

Установка X.Org та Desktop Environment

Про X.Org і вибір Desktop Environment писав у пості Arch Linux: установка і налаштування KDE Plasma у 2025, зараз нам треба просто вибрати яке саме оточення собі взяти.

Враховуючи обмежені ресурси – старенький CPU та всього 4 GB RAM – треба щось легке.

Можна XFCE – легкий, стабільний, з коробки є всі необхідні інструменти.

LXQT – трохи важчий за XFCE, але більш сучасний.

Ну або просто взяти чистий Windows Manager типу Fluxbox або Openbox.

Давайте візьмемо XFCE.

Встановлюємо X.Org та драйвери для відео – Direct Rendering Manager GPU drivers.

X.org потягне велику пачку залежностей

# pkg install xorg drm-kmod
...
Number of packages to be installed: 318

The process will require 3 GiB more space.
431 MiB to be downloaded.
...

Встановлюємо сам XFCE – теж немаленький:

# pkg install xfce xfce4-goodies
...
Number of packages to be installed: 317

The process will require 1 GiB more space.
248 MiB to be downloaded.
...

Але році у 2010 встановлював KDE з ports – то процес зборки зайняв багато годин, бо pkg тоді ще не було, і в ті часи майже все встановлювалось із ports collection.

Була і тоді система pkg_tools, але в ній не було системи залежностей, пакети качались по FTP, а апгрейд пакетів виконувався фактично через видалення і встановлення заново.

Повертаємось на нашої системи.

Встановили XFCE – додаємо login manager, slim (Simple Log In Manager):

# pkg install slim slim-themes

До /etc/rc.conf додаємо запуск DBus (потрібен для XFCE) та Slim:

sysrc dbus_enable="YES"
sysrc slim_enable="YES"

Створюємо файл ~/.xinitrc в домашній директорії юзера, аби Slim знав що запускати:

# echo "exec startxfce4" > /home/setevoy/.xinitrc

Ребутаємо машинку:

# reboot

І вуаля – все готово:

Можна перевірити з яким драйвером працює відео:

# cat /var/log/Xorg.0.log | grep -E "Driver|scfb|vesa"
[   145.813]    X.Org Video Driver: 25.2
[   145.862] (==) Matched scfb as autoconfigured driver 2
[   145.862] (==) Matched vesa as autoconfigured driver 3
[   145.864]    Module class: X.Org Video Driver
[   145.864]    ABI class: X.Org Video Driver, version 25.2
[   145.864] (II) LoadModule: "scfb"
[   145.864] (II) Loading /usr/local/lib/xorg/modules/drivers/scfb_drv.so
[   145.864] (II) Module scfb: vendor="X.Org Foundation"
[   145.864]    ABI class: X.Org Video Driver, version 25.2
[   145.864] (II) LoadModule: "vesa"
[   145.864] (II) Loading /usr/local/lib/xorg/modules/drivers/vesa_drv.so
[   145.864] (II) Module vesa: vendor="X.Org Foundation"
[   145.864]    Module class: X.Org Video Driver
[   145.865]    ABI class: X.Org Video Driver, version 25.2
[   145.865] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[   145.865] (II) scfb: driver for wsdisplay framebuffer: scfb
[   145.865] (II) VESA: driver for VESA chipsets: vesa
[   145.873] (WW) Falling back to old probe method for scfb
[   145.873] scfb trace: probe start
[   145.873] scfb trace: probe done
[   145.874]    ABI class: X.Org Video Driver, version 25.2
[   145.875]    ABI class: X.Org Video Driver, version 25.2
[   146.006] (II) UnloadModule: "scfb"
[   146.006] (II) Unloading scfb

scfb чимось не сподобався, буде з vesa, але на цьому залізі взагалі не принципово.

Додаємо інші корисні пакети:

# pkg install vim sudo bash

Я вже звик до bash, тому встановлюю і його.

Аби змінити юзеру його shell – використовуємо chsh:

# chsh -s /usr/local/bin/bash setevoy
chsh: user information updated

Перевіряємо:

# grep setevoy /etc/passwd
setevoy:*:1001:1001:setevoy:/home/setevoy:/usr/local/bin/bash

Ну і власне на цьому все.

Система працює, можна користуватись.

Але, як казав на початку – на такому старому залізі під FreeBSD не працює тачскрін, тому потім все ж встановлю Arch Linux – з ним вже тестив, там тачскрін пальцями і стилусом працює без проблем.