Шаблоны для сайта
И ведь каждый третий сайт так выглядел…
Никогда не копируйте всякую хрень из интернета.
Do or don’t do
Linux во всей красе
Как же меня всё-таки умиляют подобные развлечения в линуксе :) При перезагрузке сетёвки меняются местами, гыгы. Я ещё могу понять, когда при обновлении RHEL с 5 на 6 он в обратном порядке просканировал шину PCI и, следовательно, в обратном порядке пронумеровал интерфейсы… Но при перезагрузке :)))
apcupsd и несколько UPS
Иногда возникает необходимость управлять несколькими UPS на одном сервере даже когда есть несколько серверов и все они запитаны от тех же бесперебойников. Когда-то давно на сервере под RHEL5 я уже настраивал мониторнг нескольких UPS через apcupsd. Так как времена RHEL5 давно минули, то аналогичную конфигурацию я настроил на более современном RHEL6 в виде Scientific Linux 6.4 и apcupsd-3.14.10, последней достуной версии из сторонних пакетов на текущий момент.
Имеем три бесперебойника: Smart-UPS 3000 RM XL, Smart-UPS SC1500 и Smart-UPS SMC1500I-2U.
3000 и SMC подключены через “стандартный” USB кабель, а к SC1500 в комплекте шли кабели RS232-RS232 и RS232-USB, который при проверке оказался обычным Prolific 2303 usb2serial. SC1500 была подключена через usb2serial кабель.
Основной фокус при использовании нескольких бесперебойников заключается в указании apcupsd конфига под конкретную железку. Чтобы было нагляднее, я стандартный apcupsd.conf
скопировал в три конфига соответственно: apcupsd-rm3000.conf
, apcupsd-cs1500.conf
и apcupsd-smc1500.conf
.
Из очевидных вещей в каждом каждом конфиге указываем соответствующие UPSNAME
исходя из имени бесперебойника. А вот с UPSCABLE
, UPSTYPE
и DEVICE
предстоит заняться более внимательно. С SC1500 всё просто – надо прописать обычные для подключения по последовательному порту параметры UPSCABLE smart
и UPSTYPE apcsmart
и DEVICE /dev/ttyUSB0
. С USB подключением одного ИБП тоже всё просто – параметр DEVICE
нужно закоментировать или значение оставить пустым и apcupsd сама найдёт бесперебойник. В случае с двумя ИБП параметр DEVICE
надо будет использовать, чтобы “объяснить” apcupsd где какой ИБП.
dmesg
в Linux всегда для меня выглядел хаосом (в сравнении с *BSD), так что “поиск” нужного устройства делался распространённым “научным” методом.
Вот что пишет ядро:
# dmesg|grep generic-usb
generic-usb 0003:0557:2221.0001: input,hidraw0: USB HID v1.00 Mouse [Winbond Electronics Corp Hermon USB hidmouse Device] on usb-0000:00:1a.0-1.2/input0
generic-usb 0003:0557:2221.0002: input,hidraw1: USB HID v1.00 Keyboard [Winbond Electronics Corp Hermon USB hidmouse Device] on usb-0000:00:1a.0-1.2/input1
generic-usb 0003:051D:0002.0003: hiddev96,hidraw2: USB HID v1.10 Device [American Power Conversion Smart-UPS 3000 RM XL FW:691.19.I USB FW:7.4] on usb-0000:00:1d.0-1.5/input0
generic-usb 0003:051D:0003.0004: hiddev97,hidraw3: USB HID v1.00 Device [American Power Conversion Smart-UPS C 1500 FW:UPS 09.7 / ID=1005] on usb-0000:00:1d.0-1.4/input0
Итого на сервере 4 generic-usb устройства – мышь, клавиатура и два бесперебойника. Про оба бесперебойника ядро пишет hiddev9?,hidraw?
.
Устройство /dev/hiddevXX
можно не искать – его нет. Зато есть /dev/usb/hiddev?
. Найти взаимосвязь между /dev/usb/hiddev?
и hiddev??,hidraw?
я так и не смог. Продолжая использовать “научный” метод тыка, в конфигурационные файлы для ИБП, подключенных по USB добавил DEVICE /dev/usb/hiddev?
.
Помимо этого все три конфигурационных файла отличаются портом, NISPORT
на котором висит демон, чтобы можно было получать статус с определённой UPS. Дефолтовый NISIP 0.0.0.0
(привет безопасности по умолчанию) поменял на 127.0.0.1, так как мониторинг apcupsd будет вестись локально. Подправил пути на файлы сообщений и статуса (EVENTSFILE
и STATFILE
), чтобы у каждого запущенного демона был свой собственный набор файлов.
Окинем взором различие в конфигурационных файлах:
diff3 apcupsd-smc1500.conf apcupsd-cs1500.conf apcupsd-rm3000.conf
====
1:15c
UPSNAME CS1500
2:15c
UPSNAME SMC1500I-2U
3:15c
UPSNAME RM3000
====
1:29c
UPSCABLE smart
2:29c
UPSCABLE usb
3:29c
UPSCABLE usb
====
1:79,80c
UPSTYPE apcsmart
DEVICE /dev/ttyUSB0
2:79,80c
UPSTYPE usb
DEVICE /dev/usb/hiddev1
3:79,80c
UPSTYPE usb
DEVICE /dev/usb/hiddev0
====
1:202c
NISPORT 3552
2:202c
NISPORT 3553
3:202c
NISPORT 3551
====
1:206c
EVENTSFILE /var/log/apcupsd-cs1500.events
2:206c
EVENTSFILE /var/log/apcupsd-smc1500.events
3:206c
EVENTSFILE /var/log/apcupsd-rm3000.events
====
1:241c
STATFILE /var/log/apcupsd-cs1500.status
2:241c
STATFILE /var/log/apcupsd-smc1500.status
3:241c
STATFILE /var/log/apcupsd-rm3000.status
Для мониторинга вручную всё готово. Достаточно запустить /sbin/apcupsd -f /etc/apcupsd/config_name.conf
. Для проверки работоспособности запустил apcaccess:
[root@mail apcupsd]# apcaccess
APC : 001,043,1074
DATE : 2014-02-04 14:20:12 +0400
HOSTNAME : **********
VERSION : 3.14.10 (13 September 2011) redhat
UPSNAME : RM3000
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2014-02-03 17:25:12 +0400
MODEL : Smart-UPS 3000 RM XL
STATUS : ONLINE
LINEV : 233.2 Volts
LOADPCT : 0.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 137.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
OUTPUTV : 233.2 Volts
SENSE : High
DWAKE : -01 Seconds
DSHUTD : 090 Seconds
LOTRANS : 208.0 Volts
HITRANS : 253.0 Volts
RETPCT : 000.0 Percent
ITEMP : 24.7 C Internal
ALARMDEL : 30 seconds
BATTV : 55.1 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Automatic or explicit self test
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI : 14 days
STATFLAG : 0x07000008 Status Flag
MANDATE : 2010-12-17
SERIALNO : XXXXXXXXXXX
BATTDATE : 2010-12-17
NOMOUTV : 230 Volts
NOMBATTV : 48.0 Volts
FIRMWARE : 691.19.I USB FW:7.4
END APC : 2014-02-04 14:20:56 +0400
В данном случае apcaccess выводит информацию, которую по умолчанию берёт на 127.0.0.1 и стандартном порту 3551. Для получения информации о двух других бесперебойниках надо указать соответствующие порты (3552 и 3553):
[root@mail apcupsd]# apcaccess status 127.0.0.1:3552
APC : 001,048,1181
DATE : 2014-02-04 14:23:51 +0400
HOSTNAME : **********
VERSION : 3.14.10 (13 September 2011) redhat
UPSNAME : CS1500
CABLE : Custom Cable Smart
DRIVER : APC Smart UPS (any)
UPSMODE : Stand Alone
STARTTIME: 2014-02-03 12:36:35 +0400
MODEL : Smart-UPS SC1500
STATUS : ONLINE
LINEV : 230.0 Volts
LOADPCT : 9.1 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 121.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
MAXLINEV : 230.0 Volts
MINLINEV : 230.0 Volts
OUTPUTV : 230.0 Volts
SENSE : High
DWAKE : 000 Seconds
DSHUTD : 060 Seconds
DLOWBATT : 02 Minutes
LOTRANS : 208.0 Volts
HITRANS : 253.0 Volts
RETPCT : 000.0 Percent
ALARMDEL : 5 seconds
BATTV : 26.9 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Line voltage notch or spike
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI : 336
STATFLAG : 0x07000008 Status Flag
REG1 : 0x00 Register 1
REG2 : 0x00 Register 2
REG3 : 0x00 Register 3
MANDATE : 05/31/12
SERIALNO : XXXXXXXXXXX
BATTDATE : 05/31/12
NOMOUTV : 230 Volts
NOMBATTV : 24.0 Volts
FIRMWARE : 738.3.I
END APC : 2014-02-04 14:24:07 +0400
Осталось самое весёлое – подправить rc.d скрипты чтобы все три демона стартовали автоматически при запуске системы. Идём в /etc/rc.d/init.d/
, где объектом изменений будет скрипт apcupsd
. Его так же копирую, в соответствии с вышеописанными именами файлов конфигурации: apcupsd-rm3000
, apcupsd-smc1500
и apcupsd-cs1500
, а затем редактирую новые стартовые скрипты с учётом имён файлов конфигурации и параметров в них указанных. В скриптах интересуют значения APCPID
, указание корректных флагов запуска apcupsd
, изменение поведения killproc
, чтобы он не убивал одним махом все запущенные процессы apcupsd и имена lock-файлов. Это что касается запуска демона. Для проверки статуса необходимо указать соответствующий демону NISPORT
в параметрах запуска apcaccess.
После всех необходимых изменений в стартовых скриптах, эти стартовые скрипты надо “зарегистрировать”, а стандартный скрипт apcupsd наоборот – отключить. Для этого имена новых скриптов передаём в качестве параметра chkconfig:
chkconfig --add apcupsd-rm3000
и отключаем стандартный скрипт:
chkconfig --del apcupsd
Теперь в ntsysv доступны новые скрипты и нет стандартного. Ставим на них * и радуемся результатам содеянного:
[root@mail apcupsd]# service apcupsd-rm3000 start
Starting UPS monitoring: [ OK ]
[root@mail apcupsd]# ps ax|grep apc
5750 ? Ssl 0:00 /sbin/apcupsd -f /etc/apcupsd/apcupsd-rm3000.conf -P /var/run/apcupsd-rm3000.pid
5781 ? Ssl 0:00 /sbin/apcupsd -f /etc/apcupsd/apcupsd-smc1500.conf -P /var/run/apcupsd-cs1500a.pid
5810 ? Ssl 0:00 /sbin/apcupsd -f /etc/apcupsd/apcupsd-cs1500.conf -P /var/run/apcupsd-cs1500b.pid
5851 pts/5 S+ 0:00 grep apc
Целиком файлы конфигов я выкладывать не буду ни в этот раз, ни в последующие, дабы предотвратить бездумный copy-paste. Для всех файлов максимум будут diff относительно оригинального файла.
Разработка
Поддержка USB модемов
В общем мой ответ в misc@ о том как завести ZTE MF626, вылился в активную закулисную переписку о поддержке модемов вообще.
Вся сложность с этими модемаи в том, что они имеют на борту несколько устройств: cdrom, serial порт, card reader. Обычно всех интересует последовательный порт, который позволяет, посредстваом АТ команд, использовать сей девайс по назначению. А так как эти модемы предназначены в первую очередь для использования под_самой_распространённой_ос, то и все “удобства” заточены под ту самую ОС. А в этой ОС удобно следующее – воткнул модем, появился виртуальный КДПЗУ с софтом. Всё это дело автозапускается, софт ставится. Сам софт скрытно подтягивает драйвера и инициализирует устройство. Винда и так вечно ставит драйвера на одно и то же устройство, если его к разным портам подключать, а тут ещё и дополнительная иницализация. В общем суть этой софтины в том, чтобы:
И эта большая кнопка прекрасно работает, потому что софтина инициализировала модем и он стал не дефолтным устройством CDROM, а уже двумя – CDROM+modem.
По умолчанию почти все модемы “прикидываются” накопителями. Задача userland или драйвера инициализировать режим модема.
В винде понятно. В линуксе народ решает проблему при помощи софтины usb_modeswitch, которая, руководствуясь некоторыми правилами, отправляет ту или иную команду инициализации. Правило из себя представляет следующее:
DefaultVendor= 0x05c6
DefaultProduct= 0x1000
TargetVendor= 0x0af0
TargetProduct= 0x6901
MessageContent="55534243123456780000000000000601000000000000000000000000000000"
Default VendorID и ProductID – то, как устройство определяется изначально, т.е. ID накопителя. Target – то, чем устройство станет после отправки на него команды с содержанием MessageContent. На самом деле подобная свистопляска нужна не только для модемов. Есть подобные милые принтеры, Wi-Max адаптеры, мобильные телефоны.
В OpenBSD все эти манипуляции выполняются драйверами, а не userland. В случае с модемами речь идёт о umsm(4). Драйвер отсылает команды инициализации устройству руководствуясь теми же принципами, что и usb_modeswitch в Linux. Да вот одна незадача. Ковыряясь с MF626 выяснилось, что производители пошли дальше для упрощения себе жизни. Они выпускают разные модели модемов, но с одинаковыми PID. Это пол беды. Для разных модемов с одинаковым PID нужны разные команды инициализации. А вот тут и наступает опа.
В общем sthen@ и jsg@ задумались, как это разруливать.
PTR
ZTE MF626 под OpenBSD
В misc@ был задан вопрос о поддержке модема ZTE MF626 в OpenBSD. Так как у меня давно на столе лежит подобный агрегат от пчелайна, решил проверить, работает ли. Вставил туда давно заблокированную пчелайновску симку, купленную несколько лет назад в Киргизии и подключил к компу. Естественно ничего полезного не увидел:
umsm0 at uhub0 port 3 configuration 1 interface 0 "ZTE, Incorporated ZTE CDMA Technologies MSM" rev 2.00/0.00 addr 2
С “голым” umsm каши не сваришь. Попробовал по стандартному пути: подключил к винде, поставил драйвера с псевдо-КДПЗУ. Определились два последовательных порта: ZTE DIagnostic Interface и ZTE NMEA Device. Второй, через PuTTY ответил на AT комманду “OK”. Я нашёл список АТ комманд для этого модема и послал ему AT+ZCDRUN=8
, получив в ответ “Close autorun state result (0:FAIL 1^:SUCCESS):1” и ОК. После этого модем пропал как накопитель из “моего компьютера”, а в OpenBSD благополучно определился как последовательный порт:
umsm0 at uhub0 port 3 configuration 1 interface 0 "ZTE, Incorporated ZTE CDMA Technologies MSM" rev 2.00/0.00 addr 2
umsm0: missing endpoint
umsm1 at uhub0 port 3 configuration 1 interface 1 "ZTE, Incorporated ZTE CDMA Technologies MSM" rev 2.00/0.00 addr 2
umsm1: missing endpoint
umass0 at uhub0 port 3 configuration 1 interface 2 "ZTE, Incorporated ZTE CDMA Technologies MSM" rev 2.00/0.00 addr 2
umass0: using SCSI over Bulk-Only
scsibus5 at umass0: 2 targets, initiator 0
sd3 at scsibus5 targ 1 lun 0: SCSI2 0/direct removable serial.19d20031567890ABCDEF
umsm2 at uhub0 port 3 configuration 1 interface 3 "ZTE, Incorporated ZTE CDMA Technologies MSM" rev 2.00/0.00 addr 2
ucom0 at umsm2
Который отвечает на АТ команды:
kirby@barton:ttyp2 % cu -l /dev/cuaU0 -s 9600
Connected
AT
OK
+ZUSIMR:2
+ZUSIMR:2
~
[EOT]
Дальше проверить не могу, т.к. симка давно мертва, а других пчелайновских симок не имею, ибо не пользуюсь услугами данной компании :)
P.S. для отката изменений и возвращения модема к “товарному виду” надо заслать в порт AT+ZCDRUN=9
.
P.P.S. Под OpenBSD модем прекрасно заработал с симкой от мелафона. Настройки элементарны – скопировать /etc/ppp/ppp.conf.sample
в /etc/ppp/ppp.conf
, отредактировать значение set device
и allow user
исходя из реалий. На моём ноутбуке я прописал /dev/cuaU0
и kirby
соответственно.
Подключение к интеренету командой ppp -ddial mobile
.
PowerMac G5
Не так давно Martin Pieuchot добавил в OpenBSD поддержку процессора, который водится в моём PowerMac7,2. Весь патч в десяток строк.
В результате на эту машину смог поставить OpenBSD для тестирования портов на платформе отличной от х86.
Счастье было недолгим. Выяснилось, что на некотороых маках водится аж по два phy на встроенную сетёвку. Один phy, к примеру, отвечает за 10/100 MB/s, а второй – за 1000 MB/s. У меня машинка современная (2005 год розлива), так что сетёвка стоит гигабитная. OpenBSD умеет “подцеплять” только один phy. Вот она и “подцепила” гигабит. То есть без возможности использования меньших скоростей. Дома, естественно, гигабитных свитчей у меня не водится. А на 100 не заводится…
Не беда. Есть заветная коробка с сетевыми картами. Выбор сетевки сильно ограничился тем, что в маке PCI разъёмы на 3.3 вольта, а подавляющее большинство сетёвок в коробке – на 5 вольт. Нашёл всего одну безымянную карточку на базе VIA VT6105 и кучку 3Com 905, которые имеют универсальные разъёмы 3.3+5 вольт.
Поставил карточки в мак, загрузился в OpenBSD. А в dmesg такие чудеса:
xl0 at pci2 dev 3 function 0 "3Com 3c905C 100Base-TX" rev 0x74: irq 53,
address 00:00:00:00:00:00
xl0: WARNING: no media options bits set in the media options register!! xl0:
this could be a manufacturing defect in your adapter or system xl0: attempting
to guess media type; you should probably consult your vendor xl0: unknown
device ID: 0 -- defaulting to 10baseT
vr0 at pci3 dev 4 function 0 "VIA VT6105 RhineIII" rev 0x86: irq 54, address
00:00:00:00:00:00
И в ifconfig вместо MAC-адреса сплошные нули. Внимательное изучение вывода dmesg показало, что ни на одном из этих интерфейсов не нашлось phy.
По совету Мартина проверил в OSX – 3Com работает, на VIA у макоси нет драйверов. Решил попробовать другие BSD и скачал FreeBSD 9.1 и NetBSD 6.0.1. Начать решил с Net. Зарезал болванку, покурил мануал по использованию Open Firmware применительно к загрузочному диску NetBSD. Не грузится – ошибку выдаёт. Ещё раз – ошибка, но другая. Зацепился за её содержание, нашёл в доках по NetBSD, что в случае этой ошибки делать то и то. Сделал, блядь, не подумав. В результате имею G5, который включается, но ничего не выводит на экран и не “звенит колокольчиками”. Finita la comedia.
Впоследствии проанализировав содеянное понял, что не глядя урезал доступную памать для загрузчика. Причём, похоже, настолько, что подурнело даже OpenFirmware.
Завтра узнаю, реально ли его оживить.
[ using 500864 bytes of bsd ELF symbol table ]
console out [NVDA,Display-B]console in [keyboard] , using USB
using parent NVDA,Parent:: memaddr b8000000 size 8000000, : consaddr b8004000, : ioaddr b1000000, size 1000000: memtag 8000, iotag 8000: width 832 linebytes 1024 height 624 depth 8
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
Copyright (c) 1995-2013 OpenBSD. All rights reserved. http://www.OpenBSD.org
OpenBSD 5.3-beta (GENERIC) #16: Thu Feb 7 23:38:42 MST 2013
todd@macppc.openbsd.org:/usr/src/sys/arch/macppc/compile/GENERIC
real mem = 536870912 (512MB)
avail mem = 1029836800 (982MB)
mainbus0 at root: model PowerMac7,2
cpu0 at mainbus0: 970 (Revision 0x202): 1600 MHz
mem0 at mainbus0
spdmem0 at mem0: 512MB DDR SDRAM non-parity PC2700CL2.5
spdmem1 at mem0: 512MB DDR SDRAM non-parity PC2700CL2.5
memc0 at mainbus0: u3 rev 0x32
kiic0 at memc0 offset 0xf8001000
iic0 at kiic0
"cy2213" at iic0 addr 0x65 not configured
lmtemp0 at iic0 addr 0x4a: ds1775, fails to respond
maxtmp0 at iic0 addr 0x4c: max6690
maxtmp1 at iic0 addr 0x4e: max6690
"cy28508" at iic0 addr 0x69 not configured
fcu0 at iic0 addr 0xaf
"pca9556" at iic0 addr 0x18 not configured
adc0 at iic0 addr 0x2c: ad7417, config reset failed
"24256" at iic0 addr 0x50 not configured
"dart" at memc0 offset 0xf8033000 not configured
"mpic" at memc0 offset 0xf8040000 not configured
mpcpcibr0 at mainbus0 pci: u3-agp
pci0 at mpcpcibr0 bus 0
pchb0 at pci0 dev 11 function 0 "Apple U3 AGP" rev 0x00
appleagp0 at pchb0
agp0 at appleagp0: aperture at 0x0, size 0x10000000
vgafb0 at pci0 dev 16 function 0 "NVIDIA GeForce FX 5200 Ultra" rev 0xa1, mmio
wsdisplay0 at vgafb0 mux 1: console (std, vt100 emulation)
ht0 at mainbus0: u3-ht, 8 devices
pci1 at ht0 bus 0
"Apple U3 HyperTransport" rev 0x00 at pci1 dev 0 function 0 not configured
ppb0 at pci1 dev 1 function 0 "AMD 8131 PCIX" rev 0x12
pci2 at ppb0 bus 6
xl0 at pci2 dev 3 function 0 "3Com 3c905C 100Base-TX" rev 0x74: irq 53, address 00:00:00:00:00:00
xl0: WARNING: no media options bits set in the media options register!!
xl0: this could be a manufacturing defect in your adapter or system
xl0: attempting to guess media type; you should probably consult your vendor
xl0: unknown device ID: 0 -- defaulting to 10baseT
ppb1 at pci1 dev 2 function 0 "AMD 8131 PCIX" rev 0x12
pci3 at ppb1 bus 7
vr0 at pci3 dev 4 function 0 "VIA VT6105 RhineIII" rev 0x86: irq 54, address 00:00:00:00:00:00
ppb2 at pci1 dev 3 function 0 "Apple U3 PCI-PCI" rev 0x00
pci4 at ppb2 bus 1
macobio0 at pci4 dev 7 function 0 "Apple K2 Macio" rev 0x20
openpic0 at macobio0 offset 0x40000: version 0x4614 feature 770302 LE
macgpio0 at macobio0 offset 0x50
"pmu-interrupt" at macgpio0 offset 0x9 not configured
"programmer-switch" at macgpio0 offset 0x11 not configured
"modem-reset" at macgpio0 offset 0x1d not configured
"modem-power" at macgpio0 offset 0x1e not configured
"fcu-interrupt" at macgpio0 offset 0x15 not configured
"fcu-hw-reset" at macgpio0 offset 0x3a not configured
"slewing-done" at macgpio0 offset 0x23 not configured
"codec-input-data-mux" at macgpio0 offset 0xb not configured
"line-input-detect" at macgpio0 offset 0xc not configured
"codec-error-irq" at macgpio0 offset 0xd not configured
"dig-hw-reset" at macgpio0 offset 0x14 not configured
"line-output-detect" at macgpio0 offset 0x16 not configured
"headphone-detect" at macgpio0 offset 0x17 not configured
"codec-irq" at macgpio0 offset 0x18 not configured
"headphone-mute" at macgpio0 offset 0x1f not configured
"amp-mute" at macgpio0 offset 0x20 not configured
"hw-reset" at macgpio0 offset 0x24 not configured
"line-output-mute" at macgpio0 offset 0x25 not configured
"codec-clock-mux" at macgpio0 offset 0x26 not configured
"escc-legacy" at macobio0 offset 0x12000 not configured
zsc0 at macobio0 offset 0x13000: irq 22,23
zstty0 at zsc0 channel 0
zstty1 at zsc0 channel 1
kiic1 at macobio0 offset 0x18000
iic1 at kiic1
aoa0 at macobio0 offset 0x10000: irq 30,1,2
i2s_set_rate: timeout
audio0 at aoa0
"timer" at macobio0 offset 0x15000 not configured
adb0 at macobio0 offset 0x16000 irq 25: via-pmu, 0 targets
apm0 at adb0: battery flags 0x9, 0% charged
piic0 at adb0
iic2 at piic0
"fans" at macobio0 offset 0x4c not configured
ohci0 at pci4 dev 8 function 0 "Apple K2 USB" rev 0x00: irq 27, version 1.0, legacy support
ohci1 at pci4 dev 9 function 0 "Apple K2 USB" rev 0x00: irq 28, version 1.0, legacy support
usb0 at ohci0: USB revision 1.0
uhub0 at usb0 "Apple OHCI root hub" rev 1.00/1.00 addr 1
usb1 at ohci1: USB revision 1.0
uhub1 at usb1 "Apple OHCI root hub" rev 1.00/1.00 addr 1
ppb3 at pci1 dev 4 function 0 "Apple U3 PCI-PCI" rev 0x00
pci5 at ppb3 bus 2
ohci2 at pci5 dev 11 function 0 "NEC USB" rev 0x43: irq 63, version 1.0
ohci3 at pci5 dev 11 function 1 "NEC USB" rev 0x43: irq 63, version 1.0
ehci0 at pci5 dev 11 function 2 "NEC USB" rev 0x04: irq 63
usb2 at ehci0: USB revision 2.0
uhub2 at usb2 "NEC EHCI root hub" rev 2.00/1.00 addr 1
usb3 at ohci2: USB revision 1.0
uhub3 at usb3 "NEC OHCI root hub" rev 1.00/1.00 addr 1
usb4 at ohci3: USB revision 1.0
uhub4 at usb4 "NEC OHCI root hub" rev 1.00/1.00 addr 1
ppb4 at pci1 dev 5 function 0 "Apple U3 PCI-PCI" rev 0x00
pci6 at ppb4 bus 3
kauaiata0 at pci6 dev 13 function 0 "Apple K2 ATA" rev 0x00
wdc0 at kauaiata0 irq 39: DMA
atapiscsi0 at wdc0 channel 0 drive 0
scsibus0 at atapiscsi0: 2 targets
cd0 at scsibus0 targ 0 lun 0: ATAPI 5/cdrom removable
cd0(wdc0:0:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 2
"Apple K2 Firewire" rev 0x00 at pci6 dev 14 function 0 not configured
ppb5 at pci1 dev 6 function 0 "Apple U3 PCI-PCI" rev 0x00
pci7 at ppb5 bus 4
gem0 at pci7 dev 15 function 0 "Apple K2 GMAC" rev 0x00: irq 41, address 00:0a:95:8f:3d:84
ukphy0 at gem0 phy 0: Generic IEEE 802.3u media interface, rev. 0: OUI 0x000000, model 0x0000
ppb6 at pci1 dev 7 function 0 "Apple U3 PCI-PCI" rev 0x00
pci8 at ppb6 bus 5
pciide0 at pci8 dev 12 function 0 "ServerWorks K2 SATA" rev 0x00: DMA
pciide0: using irq 0 for native-PCI interrupt
pciide0: port 0: device present, speed: 1.5Gb/s
wd0 at pciide0 channel 0 drive 0:
wd0: 16-sector PIO, LBA48, 76319MB, 156301488 sectors
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 6
pciide0: port 1: device present, speed: 1.5Gb/s
wd1 at pciide0 channel 1 drive 0:
wd1: 16-sector PIO, LBA48, 238475MB, 488397168 sectors
wd1(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 6
pciide0: port 2: PHY offline
pciide0: port 3: PHY offline
pciide1 at pci8 dev 12 function 1 "ServerWorks K2 SATA" rev 0x00
rsu0 at uhub2 port 3 "Manufacturer Realtek ASUS EZ N Network Adapter" rev 2.00/2.00 addr 2
rsu0: MAC/BB RTL8712 cut 3, address c8:60:00:5e:11:bb
uhidev0 at uhub3 port 1 configuration 1 interface 0 "D-Link KVM-221" rev 1.00/0.01 addr 2
uhidev0: iclass 3/1
ukbd0 at uhidev0: 8 variable keys, 6 key codes
wskbd0 at ukbd0: console keyboard, using wsdisplay0
uhidev1 at uhub3 port 1 configuration 1 interface 1 "D-Link KVM-221" rev 1.00/0.01 addr 2
uhidev1: iclass 3/1
ums0 at uhidev1: 5 buttons, Z dir
wsmouse0 at ums0 mux 0
uhub5 at uhub4 port 2 "Mitsumi Electric Hub in Apple Extended USB Keyboard" rev 1.10/4.00 addr 2
uhidev2 at uhub5 port 3 configuration 1 interface 0 "Mitsumi Electric Apple Extended USB Keyboard" rev 1.10/4.00 addr 3
uhidev2: iclass 3/1
ukbd1 at uhidev2: 8 variable keys, 6 key codes, country code 13
wskbd1 at ukbd1 mux 1
wskbd1: connecting to wsdisplay0
uhidev3 at uhub5 port 3 configuration 1 interface 1 "Mitsumi Electric Apple Extended USB Keyboard" rev 1.10/4.00 addr 3
uhidev3: iclass 3/0, 3 report ids
uhid0 at uhidev3 reportid 2: input=1, output=0, feature=0
uhid1 at uhidev3 reportid 3: input=3, output=0, feature=0
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
bootpath: /ht/pci@7/k2-sata-root/k2-sata@1/disk@0:/bsd
root device (default wd0a): wd1a
swap device (default wd1b):
root on wd1a swap on wd1b dump on wd1b