Home FreeBSD FreeBSD полезные мелочи
FreeBSD полезные мелочи

Настройка вебкамеры FreeBSD

E-mail Печать PDF

Настройка вебкамеры для работы с freebsd

Автор: vp.
Оригинал : http://www.lissyara.su/articles/freebsd/tuning/webcam/

Задача - подключить камеру к freebsd. Для начала нам необходимо просто подключить камеру к freebsd и заставить ее работать.

Итак, на сервере используется freebsd 7.0.
После подключения камеры:# usbdevs -v
Controller /dev/usb4:
addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x0000), rev 1.00
port 1 addr 2: full speed, power 100 mA, config 1, product 0x08d7(0x08d7), vendor 0x046d(0x046d), rev 1.00

# dmesg | grep 0x046d
ugen0: <vendor 0x046d product 0x08d7, class 0/0, rev 1.10/1.00, addr 2> on uhub4


vendor 0x046d - говорит о производителе камеры(Logitech)
product 0x08d7 - это модель камеры

Поиск в сети решения для работы с камерой дало следующие результаты,
* существует порт graphics/spcaview, который позволяет без лишних наворотов и зависимостей снимать с камеры jpeg изображения, а так же работать с mjpeg форматом(потоковый jpgeg)
* graphics/qcamview - не подошел по причине отсутствия драйвера для конкретной модели и привязки к X11
* multimedia/pwcbsd - требует video4linux и совместимости с linux'ом

Из-за того, что qcamview и pwcbsd требую слишком много стороннего софта(в частности X11 и/или поддержки linux на бинарном уровне) для всего-лишь снятия изображения с камеры, решено было использовать graphics/spcaview

Т.к. мы поставили целью избавиться от зависимости от X11, перед установкой порта необходимо убедиться, что в /etc/make.conf содержиться строка вида "WITHOUT_X11=yes", что позволит собирать программы без библиотек X11(например, полезно для GD)# cat /etc/make.conf | grep 'WITHOUT_X11=yes' || echo "WITHOUT_X11=yes" >> /etc/make.conf


Устанавливаем порт, но не через # pkg_add -r graphics/spcaview


т.к. как выяснилось в последствии, поддержки текущей камеры нет в программе, а компилируем порт из исходников:# cd /usr/ports/graphics/spcaview
# make && make install && rehash


При работе freebsd с камерами создается специальное устройство ugenX(например, /dev/ugen0)
Проверяем поддержку камеры# spca5shot -d /dev/ugen0 -i
Not found SPCA50x based usb camera, or Permission denied


Поддержки камеры нет, увы. Но мы ее добавим! Находим файл с данными о камерах и просматриваем его на предмет наличия поддержки камеры производителя 0x046d:# less /usr/ports/graphics/spcaview/work/spca5xx-20060402/drivers/usb/spca5xx.c | grep 0x046d
{USB_DEVICE(0x046d, 0x0960)}, /* Logitech Inc. ClickSmart 420 */
{USB_DEVICE(0x046d, 0x0901)}, /* Logitech Inc. ClickSmart 510 */
{USB_DEVICE(0x046d, 0x0890)}, /* Logitech QuickCam traveler */
{USB_DEVICE(0x046d, 0x0900)}, /* Logitech Inc. ClickSmart 310 */
{USB_DEVICE(0x046d, 0x0905)}, /* Logitech ClickSmart820 */
{USB_DEVICE(0x046d, 0x08a2)}, /* Labtec Webcam Pro */
{USB_DEVICE(0x046d, 0x0921)}, /* Labtec Webcam */
{USB_DEVICE(0x046d, 0x0920)}, /* QC Express */
{USB_DEVICE(0x046d, 0x0928)}, /* Logitech QC Express Etch2 */
{USB_DEVICE(0x046d, 0x092a)}, /* Logitech QC for Notebook */
{USB_DEVICE(0x046d, 0x08a0)}, /* Logitech QC IM */
{USB_DEVICE(0x046d, 0x08a1)}, /* Logitech QC IM 0x08A1 +sound */
{USB_DEVICE(0x046d, 0x08a3)}, /* Logitech QC Chat */
{USB_DEVICE(0x046d, 0x08b9)}, /* Logitech QC IM ??? */
{USB_DEVICE(0x046d, 0x0929)}, /* Labtec Webcam Elch2 */
{USB_DEVICE(0x046d, 0x092c)}, /* Logitech QC chat Elch2 */
{USB_DEVICE(0x046d, 0x08ae)}, /* Logitech QuickCam for Notebooks */
{USB_DEVICE(0x046d, 0x092b)}, /* Labtec Webcam Plus */
{USB_DEVICE(0x046d, 0x08ad)}, /* Logitech QCCommunicate STX */
{USB_DEVICE(0x046d, 0x08a9)}, /* Logitech Notebook Deluxe */
{USB_DEVICE(0x046d, 0x08aa)}, /* Labtec Webcam Notebook */
{USB_DEVICE(0x046d, 0x08a6)}, /* Logitech QCim */
case 0x046d: /* Logitech Labtec */


Как можно заметить, поддержки нашей камеры нет в файле
Поиск в сети по 0x08d7 модели камеры показал, что такая поддержка имеется в драйвере Logitech видеокамер gspcav1(http://mxhaard.free.fr/spca5xx.html). gspcav1 - это общий файл поддержки видеокамер для *nix систем, однако в скомпилированном виде он требует бинарной совместимости с linux, что нам не подходит.

Т.к. порт graphics/spcaview основан именно на этом драйвере, скачиваем исходники драйвера для анализа http://mxhaard.free.fr/spca50x/Download/gspcav1-20071224.tar.gz. Нас интересует файлы gspca_core.c и gspca.h

Анализ исходника gspca_core.c дает следующий код по модели 0x08d7: {USB_DEVICE(0x046d, 0x08d7)}, /* Logitech QCam STX */


и далее case 0x08d7:
spca50x->desc = LogitechQCCommunicateSTX;
spca50x->bridge = BRIDGE_ZC3XX;
spca50x->sensor = SENSOR_HV7131C;
break;


Осталось добавить эти данные в драйвер spca5xx.c из нашего порта graphics/spcaview и, возможно, появиться поддержка камеры. Но прежде, нужно не забыть стереть уже скомпилированные данные:# cd /usr/ports/graphics/spcaview
# make clean


Теперь наша задача внести изменения в исходник драйвера и откомпилировать его.
Применяем патчи но не компилируем исходник# make patch


Далее редактируем /usr/ports/graphics/spcaview/work/spca5xx-20060402/drivers/usb/spca5xx.c любимым редактором и вносим следующие изменения:
Добавляем в секцию устройства 0x046d {USB_DEVICE(0x046d, 0x08d7)}, /* Logitech QCam STX */


После чего исходный текст будет выглядеть примерно так: {USB_DEVICE(0x046d, 0x08ad)}, /* Logitech QCCommunicate STX */
{USB_DEVICE(0x046d, 0x08a9)}, /* Logitech Notebook Deluxe */
{USB_DEVICE(0x046d, 0x08d7)}, /* Logitech QCam STX */
{USB_DEVICE(0x046d, 0x08aa)}, /* Labtec Webcam Notebook */


Теперь нам необходимо добавить конфигурацию камеры, находим в исходном файле секцию камер Logitech: case 0x046d: /* Logitech Labtec */
case 0x041E: /* Creative cameras */
switch (product) {


Далее идет перечисление всех известных камер Logitech, нам необходимо создать новую секцию и добавить в spca5xx.c данные из драйвера gspca_core.c: case 0x08d7:
spca50x->desc = LogitechQCCommunicateSTX;
spca50x->bridge = BRIDGE_ZC3XX;
spca50x->sensor = SENSOR_HV7131C;
break;


Но это еще не все. Исходный текст spca5xx.c показывает, что для freebsd используются более расширенные настройки! Для добавления необходимой информации ищем какую-нибудь запись с сенсором SENSOR_HV7131C, например: case 0x08a6:
spca50x->desc = LogitechQCim;
spca50x->bridge = BRIDGE_ZC3XX;
spca50x->sensor = SENSOR_HV7131C;
spca50x->header_len = SPCA50X_OFFSET_DATA;
spca50x->i2c_ctrl_reg = SPCA50X_REG_I2C_CTRL;
spca50x->i2c_base = 0;
spca50x->i2c_trigger_on_write = 0;
spca50x->cameratype = JPGH;
info("USB SPCA5XX camera found. Logitech QC IM ");
break;


И копируем недостающие данные в нашу секцию, внеся небольшие изменения в название: case 0x08d7:
spca50x->desc = LogitechQCCommunicateSTX;
spca50x->bridge = BRIDGE_ZC3XX;
spca50x->sensor = SENSOR_HV7131C;
spca50x->header_len = SPCA50X_OFFSET_DATA;
spca50x->i2c_ctrl_reg = SPCA50X_REG_I2C_CTRL;
spca50x->i2c_base = 0;
spca50x->i2c_trigger_on_write = 0;
spca50x->cameratype = JPGH;
info("USB SPCA5XX camera found. Logitech QCam STX ");
break;


Все! Осталось скомпилировать и установить драйвер:# cd /usr/ports/graphics/spcaview
# make && make install && rehash


Теперь проверим работу нашего драйвера# spca5shot -i -d /dev/ugen0
USB SPCA5XX camera found. Logitech QCam STX


[spca5xx_probe:8279] Camera type JPEG
[zc3xx_config:530] Find Sensor HV7131R(c)
[spca5xx_getcapability:2242] maxw 640 maxh 480 minw 176 minh 144
--- video capability ---
name: Logitech QuickCam Communicate Stype: 1
channels: 1
maxwidth: 640
maxheight: 480
minwidth: 176
minheight: 144
--- size and format ---
size: 640x480 352x288 320x240 176x144 160x120
native input format: JPEG
output format: 24bit RGB
--- video picture (initial value) ---
brightness: 32768
hue: 0
colour: 0
contrast: 32768
whiteness: 0
depth: 24
palette: 4

Done.


Ура! Работает! Теперь можно делать снимки с камеры используя команду spca5shot, так же можно настроить доступ к устройству /dev/ugen0 не из-под рута и модифицировать программу онлайн-просмотра камеры, но об этом в другой раз.
PS Так же можно подключить отдельные камеры, которых нет в исходниках, однако, возможно, потребуется эксперементировать с настройками.



Обновлено 28.05.2010 18:34
 

Синхронизируем часы на FreeBSD

E-mail Печать PDF

Синхронизация часов.

Автор: 100kg.

Оригинал - http://www.lissyara.su/articles/freebsd/tuning/ntpdate+ntpd/

 

FreeBSD поставляется с утилитой ntpdate, которая одноразово синхронизирует наши часы, и с сервером NTP ntpd, который используется для опроса других серверов NTP для установки часов на машине или предоставления услуг точного времени.
Мы воспользуемся и тем и другим: ntpdate мы будем использовать при загрузке, а в процессе работы - синхронизировать и раздавать точное время нам поможет демон ntpd.
Для включения ntpdate во время загрузки добавим в файл /etc/rc.conf следующие строки:# cat >> /etc/rc.conf
ntpdate_enable="YES"
ntpdate_flags="-b europe.pool.ntp.org europe.pool.ntp.org europe.pool.ntp.org"
^D


Троекратное упоминание сервера europe.pool.ntp.org говорит об использовании трех разных серверов, включенных в пул серверов времени.
Теперь займемся настройками демона ntpd.
Для начала создадим файл /etc/ntp.conf#
cat > /etc/ntp.conf
server europe.pool.ntp.org
server europe.pool.ntp.org
server europe.pool.ntp.org
server europe.pool.ntp.org
server europe.pool.ntp.org

driftfile /var/db/ntp.drift

restrict 192.168.x.x mask 255.255.255.0 nomodify notrap
^D


Параметрами server мы зададим, какие сервера использовать для синхронизации. Естественно, что мы будем использовать пул серверов времени.
Параметр driftfile задает файл, который используется для хранения смещения частоты системных часов. Программа ntpd использует его для автоматической компенсации естественного смещения часов, позволяя ему поддерживать достаточно правильную настройку, даже если он на некоторый период отключается от внешнего источника информации о времени. Создадим этот файл:# touch /var/db/ntp.drift


Параметр restrict разрешает синхронизировать свои часы с сервером только машинам из нашей внутренней сети.
Для того чтобы сервер NTP запускался при загрузке, добавляем в файл /etc/rc.conf следующие строки:
cat >> /etc/rc.conf
ntpd_enable="YES"
ntpd_flags="-c /etc/ntp.conf -l /var/log/ntpd.log -p /var/run/ntpd.pid"


С синхронизацией часов покончено.

Обновлено 28.05.2010 18:39
 

sysupdate - графический интерфейс к cvsup

E-mail Печать PDF

sysupdate - легкое обновление

Автор: Morty.
Оригинал: http://www.lissyara.su/articles/freebsd/tuning/sysupdate/

sysupdate



sysupdate предназначен для обновления исходников и портов вашей системы. А также даёт возможность полного либо частичного обновления дерева портов. С помощью sysupdate можно просто скачать исходники системы, а также скомпилировать и обновить систему. Порт представляеть из себя скрипт который написан на sh и в работе использует штатный инструмент FreeBSD - csup, а также dialog, поэтому имеет графический интерфейс.

установка портаcd /usr/ports/sysutils/sysupdate/
make install clean


либо пакетомpkg_add -r sysupdate


запуск скрипта#sysupdate.sh






Далее выбираем необходимые нам действия... Это делаеться один раз, в дальнейшем все настройки сохраняються в каталоге/root/.sysupdate/


при необходимости, повторного запуска скрипта с графическим интерфейсом достаточно удалить указанный каталог.

Обновлено 28.05.2010 13:43
 

Локализация FreeBSD на CP1251

E-mail Печать PDF

Локализация FreeBSD на CP1251.

Автор: northern.
Оригинал: http://www.lissyara.su/articles/freebsd/tuning/locale_charset_cp1251/


Содержание.
1. Использование locale KOI8-R.
2. Использование locale CP1251 вместо KOI8-R.
3. Монтирование разделов ntfs и fat.


Вскоре, после курса молодого бойца и успешного выживания на совершенно новом для меня плацдарме под названием FReeBSD, у меня возникла одна из задач по монтированию разделов windows во freebsd. Тоесть на одной машине стоит виндовс и фря, есть раздел fat 32 специально для обмена файлами между этими ОС. Хотелось, чтобы текстовые документы, набранные в виндовсе, можно было смотреть и по возможности редактировать на фре и наоборот.
Все опыты проводил на фре 6.1.

1. Использование locale KOI8-R
Русификация, основанная на KOI8-R, описана в статье у lissyar`ы, отмечу лишь, что для моей задачи этот способ не подошел, и я начал рыть в сторону кодировки cp1251.

2. Использование locale CP1251 на консоли и виртуальных терминалах, вместо KOI8-R
Локаль cp1251 поставляется в дистрибутиве фре. Находится она в папке /usr/share/locale/ru_RU.CP1251. Для локализации в handbook`е достаточно хорошо описывается два метода.
Первый (рекомендуемый) заключается в задании переменных в классе логина, другой метод заключается в задании переменных окружения в инициализационном файле системной оболочки.
Первый метод. Идём в /etc/login.conf, находим в нём:russian|Russian Users Accounts:\
:charset=KOI8-R:\
:lang=ru_RU.KOI8-R:\
:tc=default:


и добавляем новый класс:winrus|Russian Win Accounts:\
:charset=CP1251:\
:lang=ru_RU.CP1251:\
:tc=default:


Для сохранения внесённых изменений в бд делаем: northern# cap_mkdb /etc/login.conf


Далее, утилитой vipw или pw (pw usermod user_name -L winrus) меняем имя класса пользователя, в моём случае russian меняем на winrus.
Если глянуть утилитой vipw должно получиться следующее:
было root:XXXXXXXXXX:0:0:russian:0:0:Charlie &:/root:/bin/csh


стало root:XXXXXXXXXX:0:0:winrus:0:0:Charlie &:/root:/bin/csh


В общем-то, новый класс можно и не добавлять, можно подправить старый (у меня russian).
Ворой метод. Добавляем:
для Bourne-Shell / Bash в файл /etc/profile: LANG=ru_RU.CP1251; export LANG
LC_ALL=ru_RU.CP1251; export LC_ALL
MM_CHARSET=CP1251; export MM_CHARSET


для Csh / Tcsh в файл /etc/csh.login: setenv LANG ru_RU.CP1251
setenv MM_CHARSET CP1251


или делаем тоже самое у пользователя в /home, в .profile/.bash_profile (shell/bash), либо в .login (csh/tcsh).
Для настройки консоли и виртуальных терминалов, необходимо иметь два файла:
1. файл клавиатурной раскладки для кодировки cp1251 - ru.cp1251.kbd. Качаем и кладем в /usr/share/syscons/keymaps
2. для отображения будем использовать cp866, для этого нужен файл таблицы перекодировки из cp1251 в cp866 - win2cpp866.scm. Качаем и кладем в /usr/share/syscons/scrnmaps.
Редактируем файл /etc/rc.conf: ...
keymap=ru.cp1251
# можно не использовать, by default клавиша "CAPS LOCK"
#keychange="61 ESC[K"
scrnmap="win2cpp866"
font8x16=cp866b-8x16
font8x14=cp866-8x14
font8x8=cp866-8x8
...



Проверим и при необходимости поправим содержимое файла /etc/ttys. Он должен содержать похожие строки: ttyv0 "/usr/libexec/getty Pc" cons25r on secure
...
ttyv5 "/usr/libexec/getty Pc" cons25r on secure
...


все cons25 на до исправить на cons25r.
Перерегружаемся, смотрим результат.

3. Теперь, для удобства, осталось подмонтировать разделы fat и ntfs. Приведу в пример мой файл fstab:
# Device Mountpoint FStype Option Dump Pass#
/dev/ad1s1b none swap sw 0 0
/dev/ad1s1a / ufs rw 1 1
/dev/ad1s1e /tmp ufs rw 2 2
/dev/ad1s1f /usr ufs rw 2 2
/dev/ad1s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

#fat
/dev/ad1s5 /mnt/ad1_dos5 msdos rw,-Lru_RU.CP1251 0 0
#ntfs
/dev/ad1s6 /mnt/ad1_ntfs3 ntfs ro,-Ccp1251 0 0
#ntfs
/dev/ad0s8 /mnt/ad0_ntfs ntfs ro,-Ccp1251 0 0
#fat (флэшка)
/dev/da0s1 /mnt/usb msdos rw,noauto,-Lru_RU.CP1251 0 0


Хочу обратить внимание на синтаксис в fstab. Разделители полей в файле fstab пробелы и табуляции. Все опции, типа ro, noauto и специфических ключей должны быть перечислены в одном поле Options, конечно, без пробелов.
Вот и всё. Цель достигнута.

Обновлено 28.05.2010 13:45
 

Обновление ядра FreeBSD

E-mail Печать PDF

Обновление ядра и мира

Автор: lissyara.
Оригинал: http://www.lissyara.su/articles/freebsd/tuning/update_world_and_kernel/


Про обновление много написано на сайте FreeBSD - однако, по просьбам трудящихся, решил сам вкратце пробежаться по этой теме. Несмотря на наличие этой инструкции и работоспособность предложенных тут телодвижений - советую делать так, как предложено в хандбуке, а не следовать моим советам :)
Немного про то, почему я делаю не так. Я никогда не обновлялся радикально - с переходом из ветки в другую (4.x->5.x или 5.x->6.x) - ибо не вижу чего-то радикально нового в новых фрях, чтобы к этому стремиться. Для однопроцессорных машин лучше 4.11 ничё не придумали :) А при смене оборудования - да, приходится ставить новые версии - ради 64-х разрядности и дров. Ну, а при обновлении в пределах одной ветки (не считая 5-ки - там были вроде коренные изменения какие-то между 5.0 и 5.2), не стоит заморачиваться насчёт точного следования инструкции - отличия обычно именно в дровах и в исправлениях ошибок. Конечно, что-то по мелочи меняется (типичный пример - при обновлении с 6.0 до 6.1 нехочет инсталлится мир - ибо в 6.1 добавили новую группу пользователей. Правда я и тут не стал следовать выводиммым при этом инструкциям, а добавил её руками :)), но в общем и целом эта одна и таже система.
Итак. Имеем, для примеру (абсолютно реальный пример - обновлял пару дней назад фряху - ошибся в синтаксисе конфига cvsup и вместо того, чтобы обновиться - откатился.) FreeBSD 4.11 такой версии:/usr/home/lissyara/>uname -r
4.11-STABLE
/usr/home/lissyara/>


Для начала ставим cvsup из портов - это описано тут. после чего имеем такой набор файлов:/usr/home/lissyara/>cd /usr/share/examples/cvsup/
/usr/share/examples/cvsup/>ll
total 36
-r--r--r-- 1 root wheel 1180 9 май 19:43 README
-r--r--r-- 1 root wheel 5274 9 май 19:43 cvs-supfile
-r--r--r-- 1 root wheel 2773 9 май 19:43 doc-supfile
-r--r--r-- 1 root wheel 2427 9 май 19:43 gnats-supfile
-r--r--r-- 1 root wheel 3903 9 май 19:43 ports-supfile
-r--r--r-- 1 root wheel 349 9 май 19:43 refuse
-r--r--r-- 1 root wheel 1918 9 май 19:43 refuse.README
-r--r--r-- 1 root wheel 4013 9 май 19:43 stable-supfile
-r--r--r-- 1 root wheel 3172 9 май 19:43 standard-supfile
-r--r--r-- 1 root wheel 2498 9 май 19:43 www-supfile
/usr/share/examples/cvsup/>


После чего берём какой-нить stable-supfile и приводим к такому виду (для 4.11):# конфиг для обновления исходных кодов:
*default host=cvsup4.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_4_11
*default delete use-rel-suffix
*default compress
src-all


или к такому - для 6.1# конфиг для обновления исходных кодов:
*default host=cvsup4.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_6_1
*default delete use-rel-suffix
*default compress
src-all


Проверяем, а есть ли у нас исходные коды? :)/usr/home/lissyara/>cd /usr/src/
/usr/src/>ll
total 142
-rw-r--r-- 1 root wheel 6117 2 янв 2005 COPYRIGHT
-rw-r--r-- 1 root wheel 8480 16 апр 2003 Makefile
-rw-r--r-- 1 root wheel 24306 11 май 10:48 Makefile.inc1
-rw-r--r-- 1 root wheel 9761 28 авг 1999 Makefile.upgrade
-rw-r--r-- 1 root wheel 2699 26 апр 2002 README
-rw-r--r-- 1 root wheel 46655 19 апр 11:03 UPDATING
drwxr-xr-x 32 root wheel 512 20 окт 2005 bin
drwxr-xr-x 45 root wheel 1024 20 окт 2005 contrib
drwxr-xr-x 7 root wheel 512 20 окт 2005 crypto
drwxr-xr-x 14 root wheel 2048 11 май 10:49 etc
drwxr-xr-x 41 root wheel 1024 20 окт 2005 games
drwxr-xr-x 6 root wheel 512 20 окт 2005 gnu
drwxr-xr-x 6 root wheel 1536 20 окт 2005 include
drwxr-xr-x 7 root wheel 512 20 окт 2005 kerberos5
drwxr-xr-x 8 root wheel 512 20 окт 2005 kerberosIV
drwxr-xr-x 57 root wheel 1536 20 окт 2005 lib
drwxr-xr-x 35 root wheel 1024 20 окт 2005 libexec
drwxr-xr-x 10 root wheel 512 11 май 10:49 release
drwxr-xr-x 82 root wheel 1536 20 окт 2005 sbin
drwxr-xr-x 6 root wheel 512 20 окт 2005 secure
drwxr-xr-x 23 root wheel 512 20 окт 2005 share
drwxr-xr-x 49 root wheel 1024 20 окт 2005 sys
drwxr-xr-x 8 root wheel 512 20 окт 2005 tools
drwxr-xr-x 221 root wheel 3584 20 окт 2005 usr.bin
drwxr-xr-x 158 root wheel 3072 20 окт 2005 usr.sbin
/usr/src/>


Если нету - надо поставить. (Если быстрый и халявный инет - то cvsup это сам сделает при попытке обновиться - но учтите - это будет стоит прилично траффику - для 6.1 попробовал - 104 мега входящего, и час времени - но тут в канал упёрлось. Как оказалось он неплохо жмёт - всего получилось 418 мегабайт исходников. На 4.11 их поменьше - 338Mb, соответственно и траффику будет меньше). После чего запускаем обновление:/usr/share/examples/cvsup/>cvsup -g -L 2 stable-supfile
Parsing supfile "stable-supfile"
Connecting to cvsup4.ru.FreeBSD.org
Connected to cvsup4.ru.FreeBSD.org
Server software version: SNAP_16_1h
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection src-all/cvs
Checkout src/COPYRIGHT
Edit src/Makefile.inc1
Add delta 1.141.2.70.2.1 2004.12.17.13.41.58 kensmith
Checkout src/UPDATING
.............
.............
Checkout src/usr.sbin/syslogd/syslogd.c
Shutting down connection to server
Finished successfully
/usr/share/examples/cvsup/>


Ну и всё. Имеем обновлённые исходные коды системы. Можно собирать `мир` (вкратце - мир - это то, что не ядро :) - пользовательские программы - типа grep, awk, sh, chmod и прочего. Короче всё, что не входит в ядро и модули ядра.). Перед сборкой рекомендуется вернуть взад все нестандартные опции из /etc/make.conf - у меня там, например налеплена оптимизация O3, тип CPU да ещё кое какие мелочи. Я ничё не убираю. Хотя в случае проблем - если что-то не собирается или не инсталлится - стоит посмотреть, что там и убрать лишнее (на 4.x по-дефолту этого файла вообще нет, в 6.x в нем тока пара строк про версию перла. На это и ориентируйтесь)./usr/home/lissyara/>cd /usr/src/
/usr/src/>rm -R /usr/obj/* && make cleandir && make cleandir && \
? make buildworld && make installworld && shutdown -r now


make cleandir делать дважды рекомендует хандбук (я ещё make clean делаю... На всякий случай...). Сборка достаточно длительный процесс - на AMD64 3200+ на сборку мира от FreeBSD 6.1 у меня уходило чуть больше часа. Для 4.11 соответственно намного быстрей - раза в два-три (на PII-266 уходит порядка 5-ти часов - для мира 4.11). На этой машине, на которой щас мучаем (AMD K7, Duron 1100MHz, FreeBSD 4.11) ушло час и десять минут, и минут 10 на инсталляцию.
После чего перезагрузка, и собираем ядро. Собсно частенько бывает проблемой вспомнить - а какое ядро у меня стоит щас? :) это можно легко проверить:/usr/home/lissyara/>uname -v
FreeBSD 4.11-STABLE #0: Wed May 10 23:59:44 MSD 2006
Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript :/usr/obj/usr/src/sys/router.acpi
/usr/home/lissyara/>


Сборку ядра я уже описывал, но тут пробегусь ещё разок./usr/home/lissyara/>cd /usr/src/
/usr/src/>rm -R /usr/obj/* && make clean && make clean \
? make buildkernel KERNCONF=router.acpi && \
? make installkernel KERNCONF=router.acpi && shutdown -r now


Ядро собралось бодренько - за 14 минут. После перезагрузки получилось:/usr/home/lissyara/>uname -r
4.11-RELEASE-p17
/usr/home/lissyara/>


Вот и всё.

Обновлено 28.05.2010 13:44
 


Страница 4 из 5.

  • Вопросы по поводу написанных статей можно обсудить в нашем сообществе в Вконтакте / Questions about written articles can be discussed in our community in Vkontakte Вопросы по поводу написанных статей можно обсудить в нашем сообществе в  Вконтакте / Questions about written articles can be discussed in our community in Vkontakte
Яндекс.Метрика