Я давно фанат 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: вимикає для звичайних користувачів можливість дебажити чужі процеси і обмежує частину інформації з/procrandom_pid: якщо включено, то PID задається з рандомним зміщенням номеру, а не по черзіclear_tmp: у FreeBSD каталог/tmpпо дефолту не очищається при ребуті, зclear_tmpце можна включити- в Linux залежить від дистрибутива і того, як саме монтується
/tmp, бо зазвичай цеtmpfsв RAM, який, звісно, очищається - FreeBSD свідомо не очищає його, бо політика FreeBSD – “адміністратор сам вирішує, що треба робити системі“
- в Linux залежить від дистрибутива і того, як саме монтується
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
Значить, нам потрібен драйвер 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 – з ним вже тестив, там тачскрін пальцями і стилусом працює без проблем.




































