книги хакеры / журнал хакер / 125_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
AT91SAM9260
32MBSDRAM
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
unixoidw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
PHY->
ALTERA
32MBSDRAM
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DBGU |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
USB |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
Ethernet |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NAMD256M |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
USB-A |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ФОТОДЕВАЙСА
компенсироватьнапайкойвнешнейпамяти. Ивсеже, какзапускатьтакогокапризного монстра? Тем, ктонечиталмоюпрошлуюстатью, напомню. ВсамомначалеработыпроцессорапервымделомстартуетвстроенныйвROM загрузчик. Утогохватаетинтеллектатолько нато, чтобывысосать4 Кб(однустраницу) кода измикросхемыData- илиNAND-flash памяти, скопироватьихвовнутреннююоперативку (которойкакраз4 Кб) ипередатьнанееуправление. Вэти4 Кбмыдолжнывпихнутькодинициализациибольшойивзрослойоперативки SDRAM, определитьнапаянныемикросхемы Flash-памяти, скопироватьоттудаостальной кодвужеработающуюоперативкуипередать нанегоуправление. Сэтогомоментаужеможноговоритьотом, чтоустройствозапущено.
Вобщем, этонетакстрашно(мыневрубрике Coding), инашазадачасведетсяккомпиляции ужеготовыхисходников(даитоневсегда).
ОбщатьсясЛинуксомпервоевремябудем черезтакназываемыйотладочныйинтерфейс DBGU. Сточкизренияиспользования, это обыкновенныйUART-портсобрезаннымивоз- можностями. Намоейплатеонвыведенчерез
RS-232-интерфейснуюмикросхемуна9-пино- выйCOM-разъем, которыйужеподключается ккомпу.
Чтозагрузчики, чтоЛинукспоумолчанию используюттакиепараметрыпорта:
Скорость: 115200 Данные: 8 bits Четность: Íåò Ñòîï-áèòû: 1 Контроль: íåò
Вбейэтипараметрывсвоютерминальную программунасторонеPC.
Нелезьнарожон. Заставьустройство запуститьсяхотябысдефолтовымиядром ифайловойсистемой, идущимивкомплекте
сотладочнойплатой, апотомуженазаведомо рабочемЛинуксезатачивайдевайсподсвои нужды. Поехали.
ЗАЛИВКА
Какуженеоднократноговорилось, AT91SAM9, когданенаходитподходящихпрошивокпонулевымадресамData- иNAND-флешпамяти,
запускаетживущуювROM программуSAM Boot Agent (SAM-BA). НаустройствеСАМ-Буможно вызватьзакороткойособогопина(смотри документацию) илипростобросаниемSPI Slave Output ножкиназемлю. Подключаемдевайс кUSB-портуипроверяем, каконопределился:
$ lsusb
Bus 002 Device 060: ID 03eb: 6124 Atmel Corp. at91sam SAMBA bootloader
Далее, поссылкеwww.linux4sam.org/twiki/ bin/view/Linux4SAM/SoftwareTools, качаем софтдляпрошивки. Оттудажеузнаемнаши следующиешаги:
# modprobe usbserial vendor=0x03eb product=0x6124
Чтож, унасестьвиртуальныйCOM-порт, кко- торомуподключаемсясофт-программатором. Бинарникпослераспаковкиназываетсяsamba_cdc_2.8.linux_01, егоивызываем. Приза-
просеуказываемпорт/dev/ttyUSB0 иплату
XÀÊÅÐ 05 /125/ 09 |
079 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
|
X |
|
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
|||
|
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
|
|
|
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
BUY |
>>m |
|
||||
|
w |
Click |
to |
|
|
|
|
unixoid |
||||
|
|
|
|
|
|
|||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
|
.c |
|
||
|
|
|
p |
|
|
|
|
g |
|
|
||
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
|
-xcha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
КОНСОЛЬКАСПРОЦЕССОМЗАГРУЗКИЯДРА КОНСОЛЬСU-BOOT
AT91SAM9260-EK. Теперь, выбираявкладками нужнуюпериферию, можнозаливатькод. НезабывайвызыватьскриптытипаEnable Flash
инажиматьExecute, иначеприпопыткеобратитьсякнеинициализированноймикросхеме устройствоповиснетвместеспрограмматором. Первичный4-килобайтныйзагрузчиклучше заливатьчерезскриптSend Boot File, авсе остальное— черездиалогпосерединеокна
иуказаниеадресавручную. Еслизагрузчикругаетсяинехочеткопироватьданные, убедись, чтоадрескратенразмерублока(0x10000 байт дляNAND). Возможно, тебеещепонадобится компиляторarm-elf-gcc подархитектуруARM.
Беретсяонссайтаgnuarm.com. Послеэтоговсе должнобытьготовокпрошивкеиотладке.
ЗАГРУЗЧИКПЕРВОГО УРОВНЯ, AT91 BOOTSTRAP
Качаемегопоадресуwww.linux4sam.org/tw iki/bin/view/Linux4SAM/AT91Bootstrap. Если твоямикросхемаDataflash живетнаChip Select 1, тосразуможешьвзятьскомпилированный бинарник, иначепридетсямучитьисходники. Распаковываем. Следуямануалупотомуже адресу, выбираемнужнуюнамконфигурациюпутемиспользованиясоответствующего
Makefile. Имея8-мегабитныйDataflash напла-
те, загрузчикиязапихивалименнотуда, аядро сФС— ужена256-мегабайтныйNAND-Flash. Значит, вмоемслучаепроекткомпилируется воттак:
$ cd board/at91sam9260ek/dataflash $ make CROSS_COMPILE=arm-elf -
Загрузчикпростенький, вегокодахнесоставит трударазобраться, носледи, чтобыразмеритоговогобинарниканепревышал4096 байт.
Мнеещепришлосьраскомментировать«драй-
вер» моейDataflash-микросхемыAT45DB041B вфайлеdriver/dataflash.c. Функцияdf_init
несовпадаласустановленнойнареференсном отладочномнаборе. Онабылаподложенавпроект, простозакомментированадляуменьшения размера.
Чтобыбытьуверенным,чтозагрузчикчестно отрабатываетсвоючастьипередаетуправление дальше,раскомментируйстрочку«#undefCFG_ DEBUG»взаголовочномфайлеat91sam9260ek.h.
Тогдазагрузчиксможетплеватьсясообщениями наотладочныйпорт,и,есличто-тонезаработает, тынайдешьпроблемубыстрее.
Послекомпиляциизаливайполучившийся.bin ввыбранныйтобойFlash черезSAM-BA Boot, используяскрипт«Send Boot File». Перезагружайустройствоисмотринаотладочныесообщения, чтобыбытьувереннымвэтомэтапе.
ЗАГРУЗЧИКВТОРОГО УРОВНЯ, U-BOOT
Таковымегоможноназватьлишьснатяжкой. Этотмонстрразвечтовтетриснеиграет. УмеетзагружатьОСьоткудаугодно, втом числеипосети(TFTP иBOOTP), тестировать икопироватьRAM иFlash память. Крометого, поддерживаетпростыескрипты. Вобщем, забираемсприлагаемогокжурналудискаархив сисходникамиu-boot–1.3.4.tar. bz2, распако-
вываем, добавляемэкспериментальныйпатч u-boot–1.3.4-exp.diff исобираем:
$ make at91sam9260ek_dataflash_cs0_ config
$ make CROSS_COMPILE=arm-elf -
Теперьопределимся, кудазаливатьu-boot.bin. Еслитысмотрелисходникизагрузчикапервого уровня(4-килобайтныйBootstrap), томогзаметитьнескольколюбопытныхдефайнов:
$ less at91sam9260ek. h
#define IMG_ADDRESS 0x8400/* Image Address in DataFlash */
#define IMG_SIZE 0x33900/* Image Size in DataFlash */
#define JUMP_ADDR 0x23F00000/* Final Jump Address */
Этоименнотеадреса, откудаBootstrap берет прошивку(внашемслучае, U-Boot) икудаее копирует. Еслитынеменялэтидефайны, толей
образвDataflash поадресу0x8400. ТакназываемыйEnvironment, а, посути, конфигурационныйблокзагрузчика, тожедолженгде-тожить. Егоместо— междусамимU-Boot’омипервич- нымзагрузчикомпоадресу0x4200 (смотри/ include/configs/at91sam9g20ek.h), поэтому
вбудущемнетрогайэтотблок, еслинехочешь настраиватьвсезаново.
Перегружаемсяисмотримрезультаты. U-boot долженопределитьимеющуюсяпамять, обломатьсясзагрузкойядраивывалитьсявкоманднуюстроку. Пишиhelp иизучайвозможности.
ЯДРОLINUX
ПоигравшисьскоманднойстрокойU-Boot, переходиксобственнозагрузкеядра.
Откудаегобрать? Поадресуwww.linux4sam.org /twiki/bin/view/Linux4SAM/LinuxKernel можно скачатьпрекомпилированноеядро, заточенное подотладочнуюплату. Предлагаюначатьименноснего, таконогарантированоработает. ЯдроуменяживетвNAND-Flash памятипоадесу0x42000. Этотадреспосоветовалмануал, хотя яимелполноеправогрузитьегокудаугодно; надотолькоследить, чтобыононепересекалось сдругимиданными.
Итак, беремядропосвежее(2.6.27), набудущее скачиваемстойжестраничкиисходникиспатчеми, вызвавSAM-BA Boot, заливаемввыбранныйфлешповыбранномуадресу. После перезагрузкисноваоказываемсявкомандной строкеU-Boot. Пишемтакиекоманды:
U-Boot> setenv bootcmd nboot 0x22000000 0x0 0x42000\; bootm U-Boot> saveenv
Опцияsetenv задаетпеременныеокружения. Bootcmd — особаяпеременная, черезнее описываюткоманды(вданномслучае— «nboot 0x22000000 0x0 0x42000; bootm»), которые требуетсявыполнитьпосле3-секундноготай- маутавначалезагрузкиU-Boot. Командаnboot копируетданныеизNAND-Flash поуказанному адресу, аbootm — запускаетпрограмму, упакованнуюутилитойmkimage (смотридальше).
080 |
XÀÊÅÐ 05 /125/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
unixoidw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
СОБИРАЕМEMDEBIAN
Еслижеклавишабыланажата, итыоказалсявкомандной строке, тодефолтоваязагрузкавыполняетсякомандойboot. Вобщем, есливсесделаноправильно, тосначалапоявитсянебольшаястатистикаоядре, апотомначнетсяего распаковка(строчка«Uncompressing Linux»). Затемдолжно завестисьсамоядро, радостновозвещаяобэтоммножествомсообщенийнаотладочныйпорт. Читайихвнимательно, тамсообщаетсяобудачныхинеоченьфактахподключения периферии. Вдальнейшемэтоможетпомочьприперекомпиляцииизаточке.
Кактолькоядровыскажетвсе, чтодумаетобокружающем егомире, произойдетсамоелогичное, чтоможетслучиться
— онозапаникует! Файловойсистемыведьнет. Этонормально,— прикручиваниемФСмызаймемсячутьпозже. Скомпилироватьядро, есливэтомбудетнеобходимость, такженесложно. Качаемванильноеядро, асlinux4sam.org утягиваемпатчдляплатыидефолтныйконфиг.
Возможно, патчпридетсяправить, еслитвойдевайс отличаетсяототладочногонабора(иначечастьпериферии незапустится).
Накладываниепатча
$ cd linux–2.6.27/
$ wget maxim.org.za/AT91RM9200/2.6/2.6.27-at 91.patch. gz
$ zcat 2.6.xx-at91.patch. gz | patch -p1
Конфигурированиеикомпиляция
$ wget www.linux4sam.org/twiki/pub/Linux4SAM /LinuxKernel/at91sam926yek_defconfig
$ cd linux–2.6.27/
$ cp at91sam926yek_defconfig.config $ make ARCH=arm oldconfig
$ make ARCH=arm menuconfig
$ make ARCH=arm CROSS_COMPILE=arm-elf —
Дожидаемсяокончаниякомпиляциии«обертываем» ядро впонятныйU-Boot’уформат:
$ mkimage -A arm -O linux -C none -T kernel\ -a 20008000 -e 20008000 -n linux–2.6\
-d arch/arm/boot/zImage uImage
Параметр'-a' сообщаетвоперативнойпамяти, кудазагружатьядро, а'-e' — откудаегостартовать. Естественно, этот адреснедолженпересекатьсястем, кудаU-Boot изначальнокопировалобраз(0x2200_0000).
ФАЙЛОВАЯСИСТЕМА
Теперь, когдаунасестьполноценноерабочееядроLinux, сумевшееподцепитьперифериюиFlash-карту, неплохобы
ДОЛГОИНУДНОЗАЛИВАЮФСЧЕРЕЗ
SAM-BA BOOT
наэтуфлешкускинутьФС. Ноначальнаячастьносителяуже |
|
|
|
|
занята, аникакойтаблицыразделов, которуюмыпривыкли |
|
|
|
|
видетьвначалекаждогоIBM-совместимогодиска, унас |
|
|
|
|
нетинебудет. РазработчикиEvaluation Kit, немудрствуя |
|
|
|
|
лукаво, простозаписалисписокразделоввнутрьядраLinux |
|
|
|
|
(смотриlinux–2.6.27/arch/arm/mach-at91/board-sam9260ek. |
|
HTTP://WWW |
|
|
c)! Особовнимательныеувиделиэтотсписокещенаэтапе |
|
links |
||
загрузкиядра. Вобщем, файловуюсистемугрузимпоадресу |
|
|||
0x400000 (/dev/mtdblock1). Дляначаламожновзятьпред- |
|
• Полезныйсайт |
||
лагаемуюнаlinux4sam.org. Ихтамдве— этодистрибутивы |
|
поАТ91SAM: |
||
OpenEmbedded/Angstrom иболеелегковесныйBuildRoot |
|
linux4sam.org. |
||
набазеuClibc. Готовыебазовыеобразытожеможноскачать, |
|
• Хомякунивер- |
||
ониужеупакованывjffs2-образдляфлеш. |
|
сальногозагруз- |
||
КакзальешьФС, незабудьобновитьпеременнуюbootargs |
|
чикаU-boot: |
||
вменюu-boot, еезначениеподставляетсявкачествепара- |
|
www.denx.de/wiki/U- |
||
метровкоманднойстрокиядра: |
|
Boot. |
||
|
|
• Хорошийфорумраз- |
||
U-Boot> setenv bootargs root=/dev/mtdblock1 |
|
работчиковжелеза: |
||
rootfstype=jffs2 rw |
|
electronix.ru. |
||
U-Boot> saveenv |
|
|
|
|
|
|
|
|
|
Надеюсь, всепрошлоуспешно, иутебязатребовали авторизацию. Пишилогинroot, апарольоставляйпустым. Поздравляю, мывсистеме! Осматривайся, проверяй, всели наместе:). Аесливозможностейпредустановленногодистрибутиватебепоказалосьмало, точитайдальше.
EMDEBIAN (EMDEBIAN.ORG)
Этотдистрибутив, какнетруднодогадаться, базируется наDebian изатачиваетсяподлегковесныевстраиваемые устройствапутемвыкидыванияизпакетоввсеголишнего, типадокументацииилокализации. СДебианнадвухмоих
машинах, Emdebian былдляменялогичнымвыбором. Внастоящиймоментврамкахпроектапредставленодварелиза
— Grip иCrush, обабинарносовместимысDebian GNU/Linux 5.0 «Lenny». ЯставилGrip, какболееполновесныйнабазе coreutils иglibc. Подробнееоразличияхчитайнасайте. УстанавливаетсяEmdebian спомощьюстандартногопакета debootstrap илинабораскриптовemdebian-tools. Обавари-
антапримерноодинаковыпофункционалу, выбирайлюбой. Далееставимвсе, чтонайдетсяпокоманде«apt-cache
DVD |
dvd
• Наприлагаемом кжурналудискеможнонайтиисходники
ядраиU-Boot сналоженнымипатчами, образыфайловыхсистем
OpenEmbedded/ Angstrom иBuildRoot,
атакженемногодокументациипожелезу.
XÀÊÅÐ 05 /125/ 09 |
081 |
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
|
|
X |
|
|
|
|
|
|
|||
|
|
- |
|
|
|
|
|
d |
|
||||
|
|
F |
|
|
|
|
|
|
|
t |
|
||
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
|
r |
|
||
|
P |
|
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
BUY |
>>m |
|
||||
|
w |
Click |
to |
|
|
|
|
unixoid |
|||||
|
|
|
|
|
|
||||||||
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
|
|
. |
|
|
|
|
|
|
.c |
|
|||
|
|
|
|
p |
|
|
|
|
g |
|
|
||
|
|
|
|
|
df |
|
|
n |
e |
|
|||
|
|
|
|
|
|
-xcha |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ОТЛАЖИВАЕМДЕВАЙСЧЕРЕЗDBGU
search emdebian»,— вхозяйствепригодится. Следующийшаг: создаемфайлpackages.conf
стакимсодержимым:
SCRIPT=/usr/share/debootstrap/script s/lenny MIRROR=http://www.emdebian.org/grip/ PROXY=http://www.emdebian.org/grip/ SUITE=stable
Изапускаемemsandbox:
emsandbox -a arm -v./ -m./ --machine-path .
Навыходе— запакованныйархивсфайловой системой. Толькоонапокачтонерабочая. Сутьвтом, чтоскриптнесмогдовыполнить настройкудистрибутива, таккакархитектура, накоторойонвыполнялся(x86), отличается
отцелевой. Влюбомслучае, вкорнеполучившегосяобразабудетлежатьскрипт emsecondstage, которыйнадовсемиправдами инеправдамизапуститьуженасамомдевайсе. Какэтосделать— делотвое. Можешьскинуть образнаusb-флешкуивоткнутьеевдевайс, либопримонтироватьобразпосети. После chroot’анакатипакеты, живущиев/var/cach e/apt/archives, начинаясlibc6 иsysvinit, иты получишьнастоящийDebian.
КУДАДАЛЬШЕ?
Тутвсезависитотналичияутебяэнтузиазма, свободноговремениидевушки. Делай сещеоднимпоявившимсявтвоемдоме компьютеромвсе, чтопожелаешь, используймощьустановленногонанегоЛинукса
помаксимуму! Дляначала, оптимизируйядро иФСпоразмеруиэффективности, например,
выбросьизнегоподдержкуHID-устройств
ивсегопрочего, чтоникогданебудетподключенокдевайсу.
Потомможешьпопробоватьизбавиться отмонстрообразногоU-Boot. Операци- онка-загрузчик— это, конечно, хорошо, нои4-килобайтныйAT91 Bootstrap после
некоторойдопилкивполнеможетподготовить контроллеркзагрузкеядра. Далее— подари своемуодноплатникувнешнийUSB-винчес- теринаучиегокачатьторрентыираздавать файлыпоСети. Вырубив400-ваттныйфайл- сервер, можнонеплохосэкономитьнаэлектроэнергии. Потомвоткнивеб-камеру, поставь легкийhttp-сервериследизатерриторией черезстраничку, выведеннуюсквозьфайрвол винтернет. Короче, непаханоеполедляэкспериментов, лишьбыскоростихватало, давремени. z
082 |
XÀÊÅÐ 05 /125/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
Реклама
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|||
w Click |
to |
|
|
|
unixoid |
|||||
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
NETBSD 5.0
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
|
|
|
o |
|
OPENBSD 4.5 |
|
|
|
|
|
NOW! |
|
|
||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ЕВГЕНИЙ «J1M» ЗОБНИН
/ ZOBNIN@GMAIL.COM/
OPENBSD 4.5
OPENBSD 4.5
НОВЫЕГРАНИ
BSD
OPENBSD 4.5
NETBSD
OPENBSD 4.5
ДетальныйобзорOpenBSD 4.5 иNetBSD 5.0
В сегодняшнем UNIX-мире развитие Linux и FreeBSD напоминает бесконечную гонку за модой, превращающую операционные системы в клубок запутанного кода, а сообщества — в рассадник троллей и надменных гуру. На этом фоне стоящие в сторонке Open/NetBSD могут стать настоящей отдушиной и примерами того, как мудрые люди создают красивые, лишенные попсовости операционки.
>> unixoid
|
OPENBSD. |
системы, распространяетсясмногочислен- |
ибезлишнихсловбралисьзанаписание |
|
|
||||
ЛИШЬДВЕУДАЛЕННЫЕ |
нымидоработкамиизаплатками, улучшаю- |
открытыханалоговдрайверов, огромное |
||
УЯЗВИМОСТИЗАВСЕВРЕМЯ |
щимистойкость. Врамкахпроектанаписаны |
количествокоторыхперекочеваловNetBSD |
||
СУЩЕСТВОВАНИЯ |
такиевещи, какнезаменимыйинструмент |
иFreeBSD. |
||
OpenBSD — проектTheo de Raadt игруппыеди- |
любогоадминистратора— OpenSSH иедвали |
ЛучшееприменениеOpenBSD — сетевые |
||
номышленников, отпочковавшийсяотNetBSD |
несамыйпродвинутыйиудобныйвнастройке |
маршрутизаторыимосты, гдеОСвполной |
||
в1995 годуиначатыйсцельюсоздать |
брэндмауэрpf, которыйсегодняможнонайти |
красепокажетсвоивозможности. |
||
полностьюсвободнуюоперационнуюсистему |
влюбойОСсемействаBSD. |
|
ВНАЧАЛЕНОЯБРЯ |
|
соглядкойнавысокуюстабильностьибезо- |
Борьбазакачествоилегальностькода— |
|
||
|
||||
пасность. OpenBSD всегдаславиласьсвоей |
ещеоднаотличительнаячертаразработчиков |
|
2008 ГОДАУВИДЕЛАСВЕТ |
|
непотопляемостью, и, еслиописыватьсистему |
OpenBSD. БудучипоборникамилицензииBSD |
OpenBSD 4.4. ВсоставеевошлиOpenSSH 5.1, |
||
однимпредложением, тополучитсячто-товро- |
итолковонаписанного, лаконичногокода, |
пригодныйкиспользованиюOpenCVS, утилиты |
||
де: «Системадляпараноидальныхадминов». |
участникипроектаготовыдоработатьипе- |
sysmerge иtcpbench, атакженескольконовых |
||
Иэтоправда— кодOpenBSD простокишит |
реписатьлюбойкомпонентсистемы, создан- |
драйверовиулучшенийвподсистемахядра |
||
многочисленнымипроверкаминавалидность |
ныйстороннимиразработчиками. Всоставе |
(самымглавнымизкоторыхсталаподдержка |
||
данных, правадоступаиполномочия. Дляза- |
OpenBSD ужераспространяетсясобственная |
WPA/WPA2 длябеспроводныхустройств) |
||
труднениявозможныхатакрандомизируется |
реализациясистемыконтроляверсийCVS, |
истандартныхутилитах. Чтоженасждетвно- |
||
абсолютновсе, начинаяотID процессовино- |
сервериклиентдляпротоколовNTP, SNMP, |
вомрелизе? Первое, чтообращаетнасебявни- |
||
меровпортовизаканчиваястраницамивирту- |
OSPF, BGP, ав4.5 войдетещеидемонSMTP. |
мание— smtpd, безопасный, легкий, удобный |
||
альнойпамяти. Любойкодпередвключением |
Обсуждаетсявозможностьсозданияпростого |
внастройкеSMTP-демон, которыйнацелен |
||
вофициальнуюветкудоскональнопроверяет- |
ибыстрогокомпилятораязыкаСиизамены |
нестолькозаменитьвсемогущийsendmail, |
||
сяианализируетсянапредметошибок. Идаже |
GNU binutils. Разработчикивсегдаратова- |
сколькообеспечитьпростотуразвертывания |
||
стороннееПО, включенноевбазовуюпоставку |
лизаоткрытиеспецификацийна«железо» |
иудобствоиспользования. Вконфигурацион- |
084 |
XÀÊÅÐ 05 /125/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
unixoidw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
5
РОДСТВЕННЫЕСВЯЗИПРЕДСТАВИТЕЛЕЙ
СЕМЕЙСТВАBSD ДОБАВЛЯЕМВКОНФИГPF.CONF ПРАВИЛОСМЕТКОЙPFLOW
номфайлеиспользуетсяpf-подобныйсинтаксис:
Примерконфигурационного файлаsmtpd
listen on localhost port 25 hostname localhost
accept for domain "localhost" deliver to mbox "/var/mail/%u" accept from $local for all relay
Серверужевключенвдеревоисходныхкодовиумеетвсе, чтоможетпотребоватьсяв95% случаев.
Всоставверсии4.5 вошелOpenSSH 5.2, которыйможет похвастатьтакиминововведениями:
•Клиентскаяопция'-y' дляотправкилоговвsyslog вместоstderr, чтоможетпотребоватьсяпризапускеврежиме демона.
•ДирективаконфигурационногофайлаForceCommand теперьпринимаетаргументыдлявнутреннегоsftp-сервера.
•sshd сталпониматьопцииPermitEmptyPasswords
иAllowAgentForwarding, прописанныевблокахMatch.
•Удаленноеперенаправлениепортовспрослушиваемым портом0 (вэтомслучаесервердолжендинамическивыделитьпортисообщитьегоклиенту).
•ПоддержкапротоколаSOCKS4A длядинамическогоперенаправленияпортов, которое, кстати, теперьможнонастроитьичерезкоманднуюстрокуклиента, доступнуюпо~C.
Кроменовыхвозможностей, вOpenSSH 5.2 устраненыдве теоретическиеуязвимостииисправлендесятокбагов. Кодстекаbluetooth синхронизировансNetBSD ипоумолчаниювключенвкодядрадляплатформalpha, amd64, armish, hppa, i386, landisk, macppc, sparc64 иzaurus. До-
бавленыдемонbtd (8), утилитаbtctl (8) иконфигурационный файлbt.conf (5) дляуправленияbluetooth-устройствами. Вкодбеспроводногостекадобавленаначальнаяреализация802.11x PMKSA кэшированияипреаутентификации,
поддержкапротоколаBIP (Broadcast/Multicast Integrity Protocol) для802.11w. Включенкоддефрагментации
дляприемаMSDU иMMPDU фрагментов. Драйвераipw (4) иiwi (4) теперьподдерживаютWPA. Опцияchan, переданнаяifconfig (8), приводиткпечативсехподдерживаемых
каналов, аscan выводитсписокдосягаемыхточекдоступа. Изядраудаленкодреализации/dev/drum и/dev/prandom. ДобавленаподдержкасемействапроцессоровARM9e
дляплатформыARM. DRM-модулиinteldrm иradeondrm,
необходимыедляподдержкиаппаратногоускорениянасоответствующихвидеокартах, теперьпоумолчаниювключенывядро. Генераторслучайныхчиселотныневозвращает собственноезначениедлякаждогопроцессора. Список поддерживаемыхплатформпополнилсяещедвумяпозициями: gumstix иOpenMoko, хотяреализацияпоследней настолькопримитивна, чтоможетиспользоватьсятолько длятестирования. Добавленоновоепсевдоустройствоpflow (4), котороеэкспортируетданныеIP-аккаунтингачерезUDP всовместимомсNetFlow 5 формате. Чтобынастроитьинтерфейсpflow, нужновыполнитьследующиекоманды:
#ifconfig pflow0 create
#ifconfig pflow0 flowsrc 192.168.1.2 flowdst 192.168.1.1:1234
ДляпримерапроизведемучетICMP-запросов, приходящих навнешнийсетевойинтерфейс:
host1# vi/etc/pf. conf
pass in on $ext_if inet proto icmp to ($ext_if) keep state (pflow)
host1# pfctl -f/etc/pf. conf host2# ping host1
host1# pfctl -vss | grep -B1 pflow | head all icmp 77.41. XX. YY: 1 <- 212.34. XX. YY: 45333 0:0
age 00:00:02, expires in 00:00:09, 2:0 pkts, 168:0 bytes, rule 14, pflow
Псевдоустройствоpfsync (4) переведенонаиспользованиепротоколапятойверсии, которыйнесовместим спредыдущими. Вgcc иgdb добавленаподдержкаPIE
(Position Independent Executables), которыерандомизируют размещениекода, данных, стекаиблокабиблиотеквнутри исполняемогофайла. Утилитыfstat (1), pstat (8) инекоторые переменныеsysctl большенепоказываютсмещениявфай-
INFO |
info
•Новыеверсии
OpenBSD выходят каждыеполгода: 1 маяи1 ноября.
•ВOpenBSD неис-
пользуютсядрайвера соскомпилированнымиобъектными модулямиснераскрываемымисходнымкодом.
•Удобныйсервис
поработесдеревом портовOpenBSD: http://openports.se.
DVD |
dvd
• Наприлагаемом кжурналудискеты
найдешьOpenBSD 4.5 иNetBSD 5.0.
XÀÊÅÐ 05 /125/ 09 |
085 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|||
w Click |
to |
|
|
|
unixoid |
|||||
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
OPENBSD 4.5 |
OPENBSD 4.5 |
NETBSD 5.0 |
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
ПРОСМАТРИВАЕМСПИСОК ДОСТУПНЫХ СЕТЕВЫХ ИНТЕРФЕЙСОВ
лахидругуюинформациюдляпользователей, невладеющихэтимифайлами(root по-пре- жнемувидитвсе). ЯдроOpenBSD обзавелось поддержкойалгоритмовHMAC-MD5, HMACSHA1, HMAC-SHA256, AES-128-CMAC иAES «Key Wrap», которыеиспользуютсядляассиметричногошифрованиядругихключей
(смотри/usr/src/sys/crypto).
Вresolv.conf теперьможноуказыватьномер портадлязаписейnameserver, тоестьстрока вида«nameserver 17.16.67.143:5353» будет корректнообработана, ивсезапросыпойдут напорт5353 вместостандартного53-го. Множествоизмененийбылопроизведено
вaucat. Теперьутилитапотребляетменьше процессорныхмощностей, умеетслушать несколькосокетовсотдельнымуровнем громкостидлякаждогопотокаиможетработать
врежимеобратнойпетли. Всеэтопревра- щаетпрограммувнастоящийаудио-сервер, способныйвыступатьвкачествезаменыjack илиPulseAudio. Дляпримераприведукоманду запускаaucat врежимесерверасдвумяслушающимисокетами, громкостьодногоизкоторых установленав65 (default), авторого— выкру-
ченанаполную(max): $ aucat -l -v 65-s default -v 127-s max. Стандартныйкли-
ентftp теперьумеетигнорироватьпсевдокаталоги(чтобырекурсивныезакачкинесоздавали бесконечныйцикл), корректнодокачивать файлы, поддерживаетпрокси, защищенные паролем, ифлаг'-n'дляполучениятолько обновленныхфайлов.
Вомногихутилитахисправленыошибки ивыловленыутечкипамяти. Решенапроблема
DH0_DHCP_OPTIONS_OVERLOAD вdhcpd (8)
ипроблеманеправильногообновлениявкоде BGP, котораямоглапривестикнезапланированномузакрытиюсессии. Закрытыбреши безопасностивкодеOpenSSL иnamed (8).
ВкодеACPI устраненапаникананетбукахAsus eeePC 1000H идобавленворкараунддлясбой-
ныхACPI BIOS’ов.
NETBSD.
РАБОТАЕТДАЖЕ НАТОСТЕРАХ
NetBSD — перваяОСсемействаBSD, родившаясяв1993 годунакодовойбазе4.3BSD Net/2, 4.4BSD-Lite и4.4BSD-Lite2, распространяемых калифорнийскимуниверситетомБеркли. ЛозунгNetBSD — «Конечно, NetBSD может работатьинаэтом» (Of course it runs NetBSD).
Системапортированана60 аппаратныхплатформ, длякаждойизкоторыхдоступнытысячи прекомпилированныхпакетов. Причемсама системасборкипакетов, именуемаяpkgsrc, способнаработатьпрактическиналюбой POSIX-совместимойсистемебезкаких-либо затруднений.
Чтотутскажешь? ЦелостностьОСипроработанностьдизайнавсехкомпонентовсистемы, ставшиеследствиемвысокойпортабельности,— одноизважнейшихдостоинствNetBSD.
NETBSD 5.0
Если OpenBSD 4.5 — релиз минорный, больших изменений в себе не несущий, то анонс NetBSD 5.0 — событие громкое и значимое. С момента выхода 4.0 прошло уже более двух лет. За это время разработчики переносимой BSD добавили в свое творение
множество самых разнообразных, интересных (порой — неожиданных) новшеств. НаиболеезначительныеизмененияпроизошливядреОС. ТеперьFFS имеетподдержку журналирования; добавленкодреализации 1:1 потоков; переработаныпланировщик процессовисистемаблокировок; реализацияmalloc замененанаjemalloc; портнаXen обновлендоверсии3.3; интегрированановая, независимаяотархитектурысистемауправленияпитаниемиобменасообщениямимежду драйверамиPMF; появиласьподдержкаACPI suspend/resume, новыйфреймворкrump
длязапускачастейядравпространствепользователяисистемыpuffs дляреализациифайловыхсистемвнеядра. Добавленомножество новыхдрайверовиобновленысуществующие. Обовсемподробнее. Коджурналирования метаданныхWAPBL (Write Ahead Physical Block Logging) подаренпроектукомпаниейWasabi Systems, использующейегоажс2003-гогода (ничегоудивительного— нескольковедущих разработчиковNetBSD работаютвэтойкомпании). Этореализацияклассическоймодели журналированиявсехоперацийзаписиблоков передихнепосредственнымприменением. Изюминкасистемывтом, чтоонанетребует какого-либопреобразованияФС(достаточ- нопростодобавитьопциюlog в/etc/fstab)
ивбольшинствезадачпоказываетпроизводи-
тельностьвыше, чемsoft-dependencies (softupdates, говорянаязыкеFreeBSD).
Появиласьподдержкачтениясфайловых системEFS (разработкаSilicon Graphics) иHFS+ (файловаясистемаApple). Наконецдобавлена утилитаnewfs_ext2fs (8) длясозданияфайло-
086 |
XÀÊÅÐ 05 /125/ 09 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
NETBSD
>>
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
unixoidw |
|
|
to |
|
|
|
|
|
||
w Click |
|
|
|
|
|
|
||||
|
|
|
|
|
o |
m |
||||
|
w |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
NETBSD ПРЕКРАСНОЧУВСТВУЕТСЕБЯНАТОСТЕРЕ...
выхсистемext2, реализациякоторой, кроме того, обзавеласьподдержкой32-битныхполей uid/gid. Существенноувеличенапроизводительностьmsdosfs, скоростьзаписинакоторую теперьможетпроисходитьдо16 разбыстрее. Интегрированакомандаmount_sysctlfs (8), позволяющаяпредставитьдеревопеременных sysctl ввидефайловойсистемы. ОСнаучиласьписатьвUDF, длячегобылидобавлены соответствующиеизменениявядроидве новыеутилиты: mmcformat (8) иnewfs_udf (8).
Кодфайловойсистемыunionfs синхронизировансFreeBSD, аподдержкаNQNFS удалена изсоставаядра. Особоговниманиязаслужи-
ваетфреймворкrump (Runnable Userspace Meta Programs), позволяющийзапускатьчасти ядракакпользовательскиепроцессы. Rump
придаетNetBSD чертынастоящеймикроядернойОС, ноидея, лежащаявегооснове, очень проста. Самфреймворкпредставляетсобой нечтоиное, каквынесенныйвпространство пользователянаборвнутриядерныхфункций. Ониспользуетсявысокоуровневыми, независимымиотаппаратнойплатформычастями ядрадлядоступакнизкоуровневым. Вместе сrump вNetBSD вошлаипрограммаrump_nfs (8), реализующаяклиентNFS впространстве пользователя. Болеетого, любуюфайловую системутеперьможноперекомпилировать дляработывнеядра.
Другаяинтереснаяновинкаядра— puffs (Pass-to-Userspace Framework File System) —
фреймворк, использующийвозможностиrump ипозволяющийреализоватьфайловуюсисте-
СТОРОННЕЕПОВБАЗОВОЙ ПОСТАВКЕNETBSD 5.0
ipf 4.1.29 BIND 9.5.0-P2 NTP 4.2.4p6
OpenLDAP 2.4.11 OpenPAM 20071221 OpenSSH 5.0
OpenSSL снапшот от 20080509 Postfix 2.5.4
GNU GCC 4.1 снапшот от 20080831
...ИРАЗЛИЧНЫХВСТРАИВАЕМЫХ УСТРОЙСТВАХ
мулюбойсложностиполностьювпространстве пользователя. Вместесфреймворкомтакже добавленыфайловыесистемы, использующие еговозможности:
• mount_psshfs (8) — виртуальнаяфайловая системадлямонтированияsftp-сессий;
•mount_puffsportal (8) — экспериментальная реализацияportalfs впространствепользователя;
•mount_9p (8) — файловаясистемадлямонтированияфайловыхсервисов9P (протокол, применяемыйвраспределенныхоперацион-
ныхсистемахPlan9 иInferno).
Поверхpuffs созданаоберткасовмести-
мостисFUSE (File system in USErspace, fuse.sf.net). Примерподключения sftp-сессииспомощьюmount_psshfs:
mount_psshfs -O Compression=yes
vasya@host.com:/usr/mnt
Вядроимпортированыпереработанные системыблокировок, реализованныевветках newlock2 иvmlocking2, атакжепатчдлябло-
XÀÊÅÐ 05 /125/ 09 |
087 |
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
|
|
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
>>m |
|
|||
w Click |
to |
|
|
|
unixoid |
|||||
|
|
|
|
|||||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-xcha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x cha |
|
|
|
|
кировкисокетов. Изменениюподвергся
икодбиблиотекиlibpthread, вкоторуюбыло добавленонесколькоулучшенийвобласти синхронизациипотоков. МодельпотоковSA замененана1:1. Кодреализацииmalloc заменен наjemalloc изFreeBSD, оптимизированный длямногонитевыхприложений. Интегрирован модульныйпланировщикSCHED_M2, который показываетвысокуюпроизводительность намногопроцессорныхсистемах, поддержива-
етисполнениепроцессоввреальномвремени
ипозволяетвыбиратьалгоритмпланирования, неостанавливаясистему. ТеперьNetBSD болеемасштабируемаипоказываетзаметныйприростпроизводительностинаMPсистемах. Большимизменениямподвергся кодсовместимостисLinux (compat_linux (8)
иcompat_linux32). ИзFreeBSD импортирован кодподдержкиTLS, добавленысистемные вызовыgetdgid, old_uname, readdir, pread, pwrite, mlock, munlock, msync, sys_clock {getres, gettime, settime} инесколькосистем-
ныхвызововсемействаchown. Обновлена поддержкаIPC, добавленаподдержкаossaudio
(3). Виртуальнаяфайловаясистемаprocfs
теперьэкспортирует/proc/stat, /proc/loadavg
и/proc/<pid>/statm. Обновленаподдержка эмуляции32-битнойNetBSD (compat_netbsd32 (8)), удаленаподдержкаэмуляцииHP-UX (compat_hpux). Кодреализации«магическихсимволическихссылок», позволяющий симлинкамуказыватьнаразныефайлы взависимостиотзначенияоднойилине-
сколькихспециальныхпеременных, обновлен
иподдерживаетпеременную@ruid, которая раскрываетсяв«настоящий» UID процесса. Этавозможностьиспользуетсядлясоздания изолированного/tmp длякаждогопользовате-
ля(опция«per_user_tmp=yes» в/etc/rc.conf).
Магическиесимлинки— довольнопростой, нополезныймеханизм, которыйпозволяет сделать, например, так(намашинеx86 ~/bin будетуказыватьна~/bin-i386):
# sysctl vfs.generic.magiclinks=1
$ ln -s/home/vasya/bin-@ machine/home/vasya/bin
Обновленстекbluetooth исопутствующиеутилиты. ВядродобавлендрайвердляBluetooth HCI UART, написанныйсоглядкойнаLinuxдрайвераBlueZ ипозволяющийпересылать пакетычерезпоследовательныйпорт. Добавленыдемонbtuartd (8), которыйуправляет работойдрайвера, bpand (8), управляющий профилямиPAN (Bluetooth Personal Area Networking) иbtkey (1) — программадлярабо-
тысключамисоединений. Утилитаifconfig (8) покоманде«list scan» теперьвыдаетсписок досягаемыхточекдоступа.
Издругихизмененийвнутриядраможно отметитьработунаконсолиMicrosoft Xbox,
поддержкуDRM (Direct Rendering Manager),
необходимуюдляработы2D- и3D-ускорения ввидеодрайверах, поддержкуPIE. ПортнаXen
обновлендоверсии3.3, добавленаподдержка архитектурыamd64 (dom0 иdomU) ирасширенияi386 PAE дляdomU. Изсоображений безопасностиудаленмеханизмsystrace. ЯдротеперьещебольшесовместимосPOSIX иподдерживаеттакиерасширениястандарта как: POSIX Real-time, Asynchronous I/O иPOSIX message queues. Псевдодрайверfast_ipsec (4)
обучилиработестехнологиейIPSec NAT-T, код брэндмауэраpf (4) синхронизировансOpenBSD 4.2. Появиласьподдержка«ipv6 fast forward».
Второйстадиейзагрузкитеперьможноуправлятьчерезконфигурационныйфайлboot.cfg (8), примеркоторогоприведенниже:
menu=Boot normally: boot netbsd menu=Boot single user: boot netbsd -s menu=Disable ACPI: boot netbsd –2 menu=Disable ACPI and SMP: boot netbsd –12
menu=Drop to boot prompt: prompt default=1
timeout=5
ВбазовоеокружениеNetBSD былидобавлены:
• Утилиты audit-packages
и download-vulnerability-list для поиска известных уязвимостей в установленных пакетах.
•Утилита acpitools, импортированная из FreeBSD.
•c99 — враппер, запускающий cc в режиме совместимости со стандартом C99.
•tprof — простой профайлер, основанный на идее мониторинга производительности.
•schedctl — программа, предназна- ченная для управления планированием процессов и потоков.
•psrset — утилита для управления группами процессоров.
•cpuctl — позволяет легко вклю- чить/отключить нужный процессор.
• dkscan_bsdlabel — инструмент
для поиска «BSD disklabel» на диске.
Переработкеимодернизациитакжеподверглисьсуществующиеутилиты:
•amd теперь умеет запрашивать карты (amd maps) у сервера LDAP.
•config научился генерировать конфигурационный файл LINT для ядра (флаг '-L').
•newsyslog сожмет файлы ло-
гов с помощью bzip2, если указать флаг 'J' в конфигурационном файле/etc/newsyslog. conf.
•bioctl существенно переработана и теперь умеет создавать/удалять «hot-spare», диски «pass-through» и RAID-тома, запускать/останавливать проверки на согласованность данных в томах.
•patch импортирован из DragonFly.
•sdiff импортирован из OpenBSD.
•xargs импортирован из FreeBSD.
Вбазовуюпоставкубыливключеныhttpd — простойHTTP-сервер, написанныйнаСи,
иdhcpcd 4.0.11.
ТИШЕЕДЕШЬ— ДАЛЬШЕБУДЕШЬ
Размеренное, неторопливоедвижениекнамеченнойцели— ещеоднапривлекательнаячерта«альтернативных» BSD. Никакой погонизанововведениямиижеланияурвать кускисразувсехвозможныхрынков. ПроектыOpenBSD иNetBSD ужедавно перешличертузрелых, полностьюготовых киспользованиюпродуктов, исейчасидет процесспланомерногоразвитияиприспособлениякменяющемусярынкуIT. СлежениезаразработкойэтихОСсродничтению мантры, котораяуспокаиваетинаводит
направильныемысли. z
ВOpenBSD 4.5 ИЗНАБОРА
ПРЕКОМПИЛИРОВАННЫХ ПАКЕТОВДЛЯПЛАТФОРМ i386/amd64 СТОИТВЫДЕЛИТЬ:
Gnome 2.24.3
KDE 3.5.10
Xfce 4.4.3
OpenOffice.org 2.4.2 è 3.0.1
OpenArena 0.8.1
Mozilla Firefox 3.0.6
Mozilla Thunderbird 2.0.0.19
MySQL 5.0.77
PostgreSQL 8.3.6
088 |
XÀÊÅÐ 05 /125/ 09 |