Ввиду моих личный предпочтений на железку была установлена FreeBSD, причем на usb flash, причем current, причем amd64, причем на gpt & zfs :)
На самом деле понятно что в current необходимости нет. Я его выбрал из соображений потенциального полигона для покрутить/потестировать и из соображений что в current уже ZFSv15.
В amd64 тоже необходимости нет: не смотря на то, что в материнку можно установить до 4GB оперативной памяти, видеться системой будет только чуть больше трех:
hw.physmem: 3460689920
Я выбрал amd64 из соображений чтобы на ноуте и медиабоксе была одна архитектура - потенциально это позволит в будущем использовать firewire для дебага.
На материнской плате есть только 4 sata разъема, поэтому отдельный системный диск не поставишь. А ставить систему на диски с данными не хотелось. Поэтому было решено использовать usb flash (уж usb портов полно, с большим запасом).
На дисках с данными планируется использовать zfs (в режиме raidz). Это один из пунктов, почему на системной флешке тоже используется zfs: ввиду того, что zfs в данный момент достаточно плохо интегрирован в систему распределения памяти freebsd, не рекомендуется использовать на одном компьютере и zfs, и ufs одновременно. Кроме того использование zfs на системной флешке избавляет от fsck в случае чего, позволяет использовать вкусности типа снэпшотов, сжатия, возможности легко переехать на флешку б
ольшего объема.
Установка на zfs ничем особенным от
wiki не отличается. Разве что я ставил не с инсталяционного диска, а вставил флешку в ноут, всё разметил и потом сделал
make installkernel installworld distribution DESTDIR=/zusb
Сейчас используется флешка на 4GB. Пока запас еще есть:
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
zusb 3.59G 2.17G 1.43G 60% ONLINE -
# zfs list -oname,mountpoint,used,compressratio
NAME MOUNTPOINT USED RATIO
zusb legacy 2.17G 1.34x
zusb/jail /jail 422M 1.03x
zusb/jail/int /jail/int 422M 1.03x
zusb/jail/int/tmp /jail/int/tmp 30K 1.00x
zusb/jail/int/usr /jail/int/usr 349M 1.00x
zusb/jail/int/var /jail/int/var 52.7M 1.31x
zusb/jail/int/var/db /jail/int/var/db 52.0M 1.29x
zusb/jail/int/var/db/pkg /jail/int/var/db/pkg 26.6M 1.57x
zusb/jail/int/var/empty /jail/int/var/empty 21K 1.00x
zusb/jail/int/var/log /jail/int/var/log 446K 3.74x
zusb/jail/int/var/mail /jail/int/var/mail 21K 1.00x
zusb/jail/int/var/run /jail/int/var/run 31K 1.00x
zusb/jail/int/var/tmp /jail/int/var/tmp 23K 1.00x
zusb/tmp /tmp 243K 1.00x
zusb/usr /usr 1.46G 1.49x
zusb/usr/home /usr/home 353K 1.87x
zusb/usr/local /usr/local 576M 1.04x
zusb/usr/ports /usr/ports 415M 1.45x
zusb/usr/ports/distfiles /usr/ports/distfiles 121M 1.00x
zusb/usr/ports/packages /usr/ports/packages 61.8M 1.00x
zusb/usr/src /usr/src 234M 3.24x
zusb/var /var 39.3M 1.73x
zusb/var/db /var/db 35.0M 1.36x
zusb/var/db/pkg /var/db/pkg 6.95M 2.94x
zusb/var/empty /var/empty 21K 1.00x
zusb/var/log /var/log 2.96M 6.57x
zusb/var/mail /var/mail 59K 1.00x
zusb/var/run /var/run 587K 1.00x
zusb/var/tmp /var/tmp 138K 1.00x
Как видно compression тоже дает какой-то эфект.
Светящийся тут jail это неудачная попытка запустить иксы в jail: изначально была идея что так как компьютер планируется использовать одновременно и для внутренних нужд (htpc), и для внешних (router и torrent клиент), то завести два отдельных jail-а: внутренний и внешний, и тем самым обеспечить невозможность засветить внутренние сервиса на внешний ip и ограничить что именно светить наружу. Но в таком виде идея провалилась, поэтому будет реализована в немного видоизмененной.
Это установленная базовая система фактически без оптимизации (только удалены /boot/kernel/*.symbols), Xorg, mplayer, nvidia-driver, openbox и всё, чего оно захотело:
# pkg_info|wc -l
216
Оборудование в среднем распознается без проблем:
# pciconf -lv
...
ohci0@pci0:0:4:0: class=0x0c0310 card=0x83e21043 chip=0x0aa510de rev=0xb1 hdr=0x00
vendor = 'NVIDIA Corporation'
class = serial bus
subclass = USB
ehci0@pci0:0:4:1: class=0x0c0320 card=0x83e21043 chip=0x0aa610de rev=0xb1 hdr=0x00
vendor = 'NVIDIA Corporation'
class = serial bus
subclass = USB
ohci1@pci0:0:6:0: class=0x0c0310 card=0x83e21043 chip=0x0aa710de rev=0xb1 hdr=0x00
vendor = 'NVIDIA Corporation'
class = serial bus
subclass = USB
ehci1@pci0:0:6:1: class=0x0c0320 card=0x83e21043 chip=0x0aa910de rev=0xb1 hdr=0x00
vendor = 'NVIDIA Corporation'
class = serial bus
subclass = USB
hdac0@pci0:0:8:0: class=0x040300 card=0x84271043 chip=0x0ac010de rev=0xb1 hdr=0x00
vendor = 'NVIDIA Corporation'
class = multimedia
subclass = HDA
ahci0@pci0:0:11:0: class=0x010601 card=0x83e21043 chip=0x0ab810de rev=0xb1 hdr=0x00
vendor = 'NVIDIA Corporation'
device = 'MCP79 AHCI1 (MCP79)'
class = mass storage
subclass = SATA
vgapci0@pci0:3:0:0: class=0x030000 card=0x83e21043 chip=0x087d10de rev=0xb1 hdr=0x00
vendor = 'NVIDIA Corporation'
class = display
subclass = VGA
re0@pci0:4:0:0: class=0x020000 card=0x83a31043 chip=0x816810ec rev=0x03 hdr=0x00
vendor = 'Realtek Semiconductor'
device = 'Gigabit Ethernet NIC(NDIS 6.0) (RTL8168/8111/8111c)'
class = network
subclass = ethernet
...
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm: 64bit 2009061500/amd64)
Installed devices:
pcm0: <hda Realtek ALC887 PCM #0 Analog> (play/rec)
pcm1: <hda Realtek ALC887 PCM #1 Analog> (play/rec)
pcm2: <hda Realtek ALC887 PCM #2 Digital> (play) default
pcm3: <hda NVidia MCP7A HDMI PCM #0 Digital> (play)
Процессор тоже вполне настоящий:
CPU: Intel(R) Atom(TM) CPU 330 @ 1.60GHz (1600.03-MHz K8-class CPU)
Origin = "GenuineIntel" Id = 0x106c2 Family = 6 Model = 1c Stepping = 2
Features=0xbfe9fbff
Features2=0x40e31d
AMD Features=0x20100800
AMD Features2=0x1
TSC: P-state invariant
real memory = 4294967296 (4096 MB)
Physical memory chunk(s):
0x0000000000001000 - 0x0000000000047fff, 290816 bytes (71 pages)
0x0000000000058000 - 0x000000000009afff, 274432 bytes (67 pages)
0x0000000001bbb000 - 0x00000000c9d91fff, 3357372416 bytes (819671 pages)
avail memory = 3338301440 (3183 MB)
Event timer "LAPIC" frequency 0 Hz quality 500
ACPI APIC Table: <020110 APIC1033>
INTR: Adding local APIC 2 as a target
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s) x 2 HTT threads
cpu0 (BSP): APIC ID: 0
cpu1 (AP/HT): APIC ID: 1
cpu2 (AP): APIC ID: 2
cpu3 (AP/HT): APIC ID: 3
APIC: CPU 0 has ACPI ID 1
APIC: CPU 1 has ACPI ID 3
APIC: CPU 2 has ACPI ID 2
APIC: CPU 3 has ACPI ID 4
Есть кое-какая поддержка power management фичей:
# sysctl dev.cpu.0
dev.cpu.0.%desc: ACPI CPU
dev.cpu.0.%driver: cpu
dev.cpu.0.%location: handle=\_PR_.P001
dev.cpu.0.%pnpinfo: _HID=none _UID=0
dev.cpu.0.%parent: acpi0
dev.cpu.0.temperature: 56.0C
dev.cpu.0.freq: 1600
dev.cpu.0.freq_levels: 1600/-1 1400/-1 1200/-1 1000/-1 800/-1 600/-1 400/-1 200/-1
dev.cpu.0.cx_supported: C1/0 C2/1 C3/85
dev.cpu.0.cx_lowest: C1
dev.cpu.0.cx_usage: 100.00% 0.00% 0.00% last 279us
Процессор поддерживает C3, но включение его вызывает очень сильное падение производительности (дождаться даже установки пекеджа становится проблематично). Всё уменьшение частоты исключительно через acpi throttle. Поэтому, а так же потому, что за всё время наблюдений я не видел чтобы температура процессора доходила хотя бы до 65C, я не включал никаких power management функций.
Видеокарта нормально распозналась X -configure:
Section "Device"
Identifier "Card0"
Driver "nvidia"
VendorName "nVidia Corporation"
BoardName "G98 [GeForce 9300M GS]"
EndSection
На подключенный по hdmi телевизор тоже картинка сходу пошла, только не захотел сам выставить максимальное разрешение. Но кручение через nvidia-settings с последующим переносом настроек в xorg.conf всё полечило.
Да, на current драйвер nvidia надо ставить последний с сайта nvidia (у меня это 256.44), а не то, что сейчас в портах. Для быстрой и удобной установки можно просто немного поправить порт: поменять в нём DISTVERSION , после чего make makesum && make install clean .
Звук по hdmi передаваться не захотел. Кто виноват: видеокарта или драйер, я не знаю и пока не разбирался, а просто подключил акустику по оптическому кабелю в spdif. Но вообще звук по hdmi с nvidia под freebsd передается: я сам это проверял на своём ноуте как только вышли драйвера nvidia под freebsd amd64.
Как обычно все аудиовыходы (задние штекеры, фронтальные, spdif, звук на hdma) представлены в виде разных pcm устройств (я выше показывал). Несколько раз видел что людей такое смущает: они удивляются откуда на их компьютере (а особенно если это ноутбук) две звуковых карта, да еще и разных производителей. А вообще благодаря этому можно выбирать куда выводить звук или явно указывая программые нужный /dev/pcm , или выставив для всех hw.snd.default_unit .
Ну и, собственно, самое главное на данный момент: проигрывание hd видео. Для этого нужно собрать mplayer с поддержкой vdpau , прописать ему вот такой конфиг:
# cat .mplayer/config
vo=vdpau
vc=ffh264vdpau,ffmpeg12vdpau,
ac=hwac3,a52,
и спокойно смотреть видео на прохлаждающемся процессоре:
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
73587 levsha 1 49 0 215M 40660K nanslp 2 0:15 8.98% mplayer
Теперь о планах. Планируется прикрутить IR, перенести аудиоплеер на медиабокс, сделав на ноутбуке управление им хоткеями, поднять torrent client (посматриваю на transmission), спортироать xbmc, возможно поиграться с DLNA.