Дяволчето е вече вкъщи

FreeBSD logo
От няколко дни съм вкъщи с native-installed FreeBSD 7.0. Как стана това – взех си нов хард (WD3200AAKS), хвана ме летния саклет… и айде 🙂
Инсталацията мина горе-долу като инсталация на Slackware. Малко се видях в чудо с местния еквивалент на fdisk – FreeBSD-то се инсталира на част от цял partition, който се нарича slice. Т.е. partitions се състоят от по-малки дялове – slices. Инструмента за разделянето на диска си има автоматични настройки, но само като видях как ми разхвърля мястото в 3-4 mount points ми стана лошо и взех операцията на ръчно. Всъщност много хора подкрепят гъвкавото разпределение на файловата система – един partition за /home, един за /var, един за /usr и т.н… но до сега съм имал повече проблеми с такова разпределение, от колкото ползи.
Повече четете надолу:

Следващия готин момент беше избора на софтуер, който ще се качи. FreeBSD си е *истинска* операционна система и си идва с базов пакет софтуер, който ми е познат от линукс като gnu utils. След това се надграждат – Х, среди за разработка, документация и т.н. Пуснах го на lame install и качих всичко. Общо излезе към 4-5 GB.
Първия проблем с който се сблъсках беше как да си инсталирам някакво приложение. До сега бях свикнал на ./configure && make && make install и ми беше писнало от това. Преродих се със системата на портовете. Какво са портовете? Колекция от 18000+ приложения, заемаща към 400MB дисково пространство. Всичко това е категоризирано по директории и приложения. Ако ти се прииска да инсталираш приложението Y, намираш в коя категория е и:
cd /usr/ports/категория/Y
make install clean
Приложението се сваля от FreeBSD repositority, компилира се на твоята машина и се инсталира.
Оказа се че има и по-бърз начин –
pkg_add -r приложението
Така се сваля готов прекомпилиран пакет и цялата инсталация отнема минимално време. Естествено и в двата случая се следят зависимостите на пакетите и ако трябва се свалят, инсталират или ъпгрейдват.
Един голям плюс е че цялата система може да се ъпгрейдне през нета до нещо като CURRENT. Не питайте обаче колко време отнема. На прясно сложено FreeBSD 7.0 отне към два дни. Неприятно е – през 10 минути трябва да съм на компютъра за да му избирам опции за конфигурирането на някое приложение. Явно има начин тази стъпка да се автоматизира, но още не съм го намерил. За утешение ще кажа че всеки следващ ъпгрейд на пакетите става все по-безболезнено. Ако се прави 1-2 пъти седмично отнема не повече от час-два.
А нали и Вуте е хакер – трябва да може сам да си прекомпилира ядрото. Ами не видях различни версии на това ядро, осен тази която идва с операционната система. Няма 2.4.26, няма 17.05.1543… има FreeBSD 6 и FreeBSD 7 🙂 Конфигурационния файл е абсолютно елементарен – на стотина реда са описани какви устройства трябва да поддържа и какви специални опции трябва да са активирани. Ядрото се компилира с точно две команди, след което може да се направи рестарт. Няма такова понятие като kernel panic (или поне още не съм се сблъсквал 🙂 ). Няма стотици хиляди настройки от типа да укажете какъв е чипа на лан картата ви, с колко пина е и на каква тактова честота работи 😀 Единствения минус е, че ако сте объркали нещо в конфигурационния файл, ще го разберете доста късно. При мен първия път се случи – навици – да разкарам всички Wireless устройства, и след това някъде около 30 минути след като е започнало make, да изреве. Даде ми грешка, която се дължеше на това че съм махнал Wireless support като цяло, а съм забравил да махна едно от тези устройства, което е по-надолу в USB секцията. Та, един configcheck tool ще е много полезен.
А после се оказа че въобще няма нужда да се съкращава конфигурационния файл, защото което го няма вътре бива компилирано… на модул. Дори е препоръчително ядрото да не се бара – освен ако искате да си начешете крастата, друга файда няма. Някои неща е добре да не се вкарват директно в ядрото – примерно направих грешката да си сложа firewall:
options IPFIREWALL
options IPFIREWALL_VERBOSE
optins IPDIVERT
След инсталация се оказа че съм firewall-нат отвсякъде – default drop policy 🙂
Ама аз съм тъп и упорит, сложих си правило за allow на всички пакети и продължих с омазването на ядрото. Тук има няколко приложения, които се занимават с kernel level packet mangling – ipfw (горното), ipf и pf. Реших да пробвам ipf и съответно набухах:
options IPFILTER
След рестарт имаше същата ситуация на тотално откъсване отвсякъде, а това се оправяше само с въвеждането на:
ipf -D
И така след всеки рестарт.
Идеята е ясна – каквото не ви трябва в ядрото, не го тъпчете там. Всичко си го има на модули.
Хайде да направя едно обобщение за това какво ми харесва и какво не ми харесва.
Не ми харесаха:
1) Няма файлова система /proc. Свикнал съм си на нея. Всичките опции са достъпни и през sysctl (както е и в Slackware), ама просто ме дразни липсата.
2) Reiserfs се монтира само с права за четене.
3) Някои много важни програми, които са разработени специално за линукс липсват тук. Няма iptraf, skype, flash player. Някои от тези вървят през линукс емулация (skype върви даже по-добре тук отколкото в линукс), но дори само за липсата на Flash Player си заслужава да се сложи точка в ‘не ми хареса’. Даже две точки.
4) Пак – няма флаш. Из нета са изписани стотици форуми и документи как да се подкара емулация – че било през линукс порта на firefox, че било то през странични плъгини, през съвсем трети компилации… При мен не стана.
5) Няма free – онова спретнато приложение, което дава информация колко памет имате свободна (плюс-минус буфери и кешове). Тук пак може да се види свободната памет, ама не е сметната така… просто е насипана – всичко, заето, заето-буфери, заето-кешове, та върви да си го смяташ.
6) Липсата на ALSA. Всичко минава през OSS, а така и още не мога да пусна arts.

Харесаха ми:
1) 18 000 приложения в port системата. Това число се увеличава.
2) Светкавичната инсталация на прекомпилирани пакети.
3) Елементарния механизъм на прекомпилация на ядро.
4) Дори и да се забрави нещо при конфигурацията на ядрото – то ще бъде компилирано на модул.
5) В ps -Af мернах процес с PID – число по-голямо от 65535. Което ме изненада, защото в Slackware номерата на процесите след 65535 се връщат обратно и започват от 0 – където има свободно число. Не знам защо го споменавам като плюс, просто ме изненада приятно.
6) Има съвместимост с конфигурационните файлове на всяка *nix система. Примерно, взех си всичките скрити папки от /home/ivanatora на линукса, и си ги копирах тук. Резултат – всичките програми работят със същите настройки, с каквито са били преди – на другата система.
7) Монтира без проблеми FAT/NTFS/EXT2/3 с права за четене и запис.
8 ) Документация – на всичко. Тук man pages са издигнати на едно доста по-високо ниво – това не са само справочници за опциите на приложенията. Това вече си е пълна документация на почти всеки процес, който протича в системата. Примери:
man rc – информация за организацията на стартиращите rc скриптове
man ports – информация за портовете – какво представляват, как се работи
man rl – информация за Realtek лан карти 🙂 🙂 🙂 Доста хардуер е описан по този начин, което си е HOWTO за пускане и работа.

Заключение: FreeBSD е идеално за домашна система. Лесен ъпгрейд и поддръжка – това ми беше липсвало до сега 🙂

Tags: , , ,

6 Responses to “Дяволчето е вече вкъщи”

  1. gotha says:

    Аз отдавна се каня на FreeBSD, но имам известен страх от всички BSD-та, пък и не е оставало достатъчно време за да го разцъкам добре.
    Единствения ми опит да инсталирам BSD (преди около година) завърши с някакви странни символи прехвърчащи по екрана в стил Матрицата. 🙂
    Май обърках нещо със слайсовете.
    Като цяло – браво! 🙂

  2. ivanatora says:

    Няма нищо страшно – веднъж само да го подкараш и само се търкаля 🙂

  3. malinka says:

    Привет,

    След 7-цата пробвал ли си по-нови версии? В момента 9 е актуална… Това с флаша и другите проблеми… казват, че е решено.

    Поздрави,
    Малинка

  4. ivanatora says:

    Не съм пробвал. Почнах да ползвам Убунту след това за home os и до ден днешен съм пре-доволен 🙂

  5. За домашна машина не съм използвал никога нищо различно от Windows, но за сървърни системи съм работил само с FreeBSD. След 8.0 нататък вече елементарно се ъпгрейдва до по-нова версия с помощта на freebsd-update.

    С компилирането на портовете чат-пат се явяват разни проблемчета, но рядко са неразрешими (а когато са – “грубата сила” pkg_add ги разрешава). Изобщо за мен FreeBSD е една много елегантна система. Единственото, което ме дразни е ipfw. Не, че е лошо или не работи, но можеха да му измислят някакъв елегантен “tool” за конфигуриране “for dummies”.

    Документацията на FreeBSD пък е направо вълшебна. То е споменато и в статията.

    Иначе брах зор с инсталирането на FreeBSD в компютърна зала, в която… няма интернет. Хората искаха да е не-Microsoft и аз реших BSD да сложа. То хубаво – каквото си има на DVD диска си се инсталира, качва и проблеми няма. Но ако искате да добавите допълнителен софтуер (както при мен се налагаше да кача компилатор за java) влизате в една безкрайна трагикомедия. Сигурно 30 пъти съм вкарвал и изкарвал USB флашката от лаптопа (на който имам интернет и свалям разните нужни binaries) към компютъра и обратно.

    Пояснявам – харесваш си даден порт, сваляш го като binary. Да, ама то си има други портове, от които зависи (dependencies). Сваляш и тях. Ама те зависели от други… ами и тях. Ама някой от тях пък неще и неще да се инсталира ако няма интернет. Бориш го, лъжеш го, успяваш. Накрая излизат още 5-6 dependencies, които въобще не са описани в документацията на няколко от портовете – както се вика “е, че иска ли питане – то без това не може, няма нужда дори да се обсъжда”. Аааа… И накрая все пак нещото тръгва. После се сетих, че процедурата трябва да се повтори 14 пъти. За 7 компютъра стана с image, ама останалите нямаше един с един еднакъв… и така, вече ми съчувствате, нали? 🙂

    Какво стана накрая ли? Ами точно след два месеца Microsoft дари пари за ремонт на въпросната зала, дари нови компютри… и трябваше да върнем Windows-ите. Труда ми отиде на вятъра 🙂

  6. ivanatora says:

    Ужас 🙂 То е така с всеки софтуер, та дори и от сорс да го инсталираш. configure в най-честия случай гърми на първата неразрешена зависимост без да продължава нататък.
    Най-доброто решение е да видиш има ли файл INSTALL или пък някакви инструкции за dependancies на сайта на производителя и от там да тръгнеш като ръчно рекурсивно обходиш всички зависимости и си приготвиш и тяхните зависимости 🙂 И се почва един компилационен ден…

Leave a Reply