メイン

Linux アーカイブ

2006年09月26日

USBストレージ

Linux 2.6.9からはUBドライバ経由アクセスするようになったようなのだが、作成されるデバイスがどうもしっくり来ない。

CONFIG_BLK_DEV_UB=m
CONFIG_USB=y
CONFIG_USB_STORAGE=m

上記設定でコンパイルすると"/dev/sda"で認識されるが

CONFIG_BLK_DEV_UB=y
CONFIG_USB=y
CONFIG_USB_STORAGE=m

でコンパイルすると"/dev/uba"で認識される。
ubaで認識された場合は、認識後すぐには"cat /proc/partition"に反映されず(つまりmount出来ない……)、"fdisk /dev/uba"とかで一度アクセス後に初めて使えるようになる。

一度fdiskでアクセスしないと使えないのでは、使い物にならないので"CONFIG_BLK_DEV_UB=m"で使うことにした。

ちなみに、上記はLinux-2.6.18で実行した結果です。

ubaで使用する場合は、udevをインストールしていれば自動的に認識されるが、そうでない場合は
mknod uba b 180 0
mknod uba1 b 180 1
mknod uba2 b 180 2
と、しておく必要がある。

PCMCIAとUSB

え~と忘れる前に書いておこう!(^^ゞ

Linux-2.6(どのバージョンからは不明)ではPCMCIAとUSBを認識するプログラムが変わったようだ。

PCMCIA
pcmcia-cs → pcmciautils

USB
usbmgr → udev

ホットプラグ
murasaki → hotplug

なので

apt-get --purge remove usbmgr pcmcia-cs murasaki
(削除は自己責任でお願いします)
apt-get install pcmciautils udev hotplug

を実行しておく。

ちなみに、debianはetchで確認しました。

続きを読む "PCMCIAとUSB" »

2006年10月05日

IPv6でIPsec!!

IPv4の場合は問題なくつながるのだが、IPv6を使用してのIPsec接続がうまく動かない……
なぜ接続出来ないのかがまったくわからん!!(-_-;)

Linuxで駄目ならFreeBSDでもインストールしてみるか……あ~面倒~

2006年10月11日

Linux-2.6.18のRTC

x86系の場合はあまり意識しなくても良いはずです。

今回は組み込み機器でLinux-2.6.18を使用して(2.6系であれば同じだと思います)、I2Cバスに接続されたRTCを認識・動作させるための方法です。RTCチップは"M41T00"を使用しました。"M41T00"は"DS1307"と互換があるため、標準のカーネルドライバが使用できるようです。

".config"ファイルを下記のように修正。
#
# Watchdog Cards
#
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set

#
# Real Time Clock
#
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
CONFIG_RTC_HCTOSYS=y
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"

#
# RTC interfaces
#
CONFIG_RTC_INTF_SYSFS=y
CONFIG_RTC_INTF_PROC=y
CONFIG_RTC_INTF_DEV=y

#
# RTC drivers
#
CONFIG_RTC_DRV_DS1307=y

#
# I2C support
#
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y

#
# I2C Algorithms
#
CONFIG_I2C_ALGOBIT=y

#
# I2C Hardware Bus support
#
CONFIG_I2C_*******=y /* 本項目は組み込み機器ごとに用意(すでに用意されている場合もある) */

"CONFIG_I2C_ALGOBIT=y"になっているのはGPIOによる制御を行うため、アルゴリズムをBIT制御としています。ちなみに、"CONFIG_RTC is not set"となっているのは、本項目を設定していると"/dev/rtc"が"udev"によって作成されるため、"hwclock"などのプログラムが正常に動作しなくなるため必要ありません。(hwclockが"/dev/rtc0"を参照してくれれば問題ないのですが、そうは行かないようです。)

"/etc/udev/link.conf"に下記の行を追加することによって、起動時に"udev"が"/dev/rtc0"が存在する場合、"/dev/rtc"にシンボリックリンクを張ってくれます。
L rtc /dev/rtc0

2006年11月10日

IPv6でIPsec!!

未だにもがき続けているのわけですが……
どうもこれはカーネル(Linux-2.6.18.2を使用)のバグ?みたいですね~

通常のPING6のやり取りの場合、下記のような感じになるのですが。

17:03:41.630200 IP6 2001::c0a8:ca04 > ff02::1:ffa8:ca05: ICMP6, neighbor solicitation, who has 2001::c0a8:ca05, length 32
17:03:41.630508 IP6 2001::c0a8:ca05 > 2001::c0a8:ca04: ICMP6, neighbor advertisement, tgt is 2001::c0a8:ca05, length 32
17:03:41.630772 IP6 2001::c0a8:ca04 > 2001::c0a8:ca05: ICMP6, echo request, seq 1, length 64
17:03:41.630976 IP6 2001::c0a8:ca05 > 2001::c0a8:ca04: ICMP6, echo reply, seq 1, length 64

IPsecを設定すると、下記のようになります。

16:57:33.790862 IP6 2001::c0a8:ca04 > ff02::1:ffa8:ca05: ICMP6, neighbor solicitation, who has 2001::c0a8:ca05, length 32
16:57:33.841848 IP6 2001::c0a8:ca05.isakmp > 2001::c0a8:ca04.isakmp: isakmp: phase 1 I ident
16:57:34.790794 IP6 2001::c0a8:ca04 > ff02::1:ffa8:ca05: ICMP6, neighbor solicitation, who has 2001::c0a8:ca05, length 32
16:57:35.790793 IP6 2001::c0a8:ca04 > ff02::1:ffa8:ca05: ICMP6, neighbor solicitation, who has 2001::c0a8:ca05, length 32
16:57:38.838886 IP6 fe80::280:6dff:fe71:5f2 > 2001::c0a8:ca04: ICMP6, neighbor solicitation, who has 2001::c0a8:ca04, length 32
16:57:38.839122 IP6 2001::c0a8:ca04 > fe80::280:6dff:fe71:5f2: ICMP6, neighbor advertisement, tgt is 2001::c0a8:ca04, length 24
16:57:43.838795 IP6 fe80::280:6dff:fe71:528 > fe80::280:6dff:fe71:5f2: ICMP6, neighbor solicitation, who has fe80::280:6dff:fe71:5f2, length 32
16:57:43.839183 IP6 fe80::280:6dff:fe71:5f2 > fe80::280:6dff:fe71:528: ICMP6, neighbor advertisement, tgt is fe80::280:6dff:fe71:5f2, length 24
16:57:43.849833 IP6 2001::c0a8:ca05.isakmp > 2001::c0a8:ca04.isakmp: isakmp: phase 1 I ident
16:57:48.838714 IP6 fe80::280:6dff:fe71:5f2 > fe80::280:6dff:fe71:528: ICMP6, neighbor solicitation, who has fe80::280:6dff:fe71:528, length 32
16:57:48.838920 IP6 fe80::280:6dff:fe71:528 > fe80::280:6dff:fe71:5f2: ICMP6, neighbor advertisement, tgt is fe80::280:6dff:fe71:528, length 24
16:57:53.853684 IP6 2001::c0a8:ca05.isakmp > 2001::c0a8:ca04.isakmp: isakmp: phase 1 I ident
16:58:03.861527 IP6 2001::c0a8:ca05.isakmp > 2001::c0a8:ca04.isakmp: isakmp: phase 1 I ident
16:58:13.871794 IP6 2001::c0a8:ca05.isakmp > 2001::c0a8:ca04.isakmp: isakmp: phase 1 I ident
16:58:18.870044 IP6 fe80::280:6dff:fe71:5f2 > 2001::c0a8:ca04: ICMP6, neighbor solicitation, who has 2001::c0a8:ca04, length 32
16:58:18.870244 IP6 2001::c0a8:ca04 > fe80::280:6dff:fe71:5f2: ICMP6, neighbor advertisement, tgt is 2001::c0a8:ca04, length 24
16:58:23.866783 IP6 fe80::280:6dff:fe71:528 > fe80::280:6dff:fe71:5f2: ICMP6, neighbor solicitation, who has fe80::280:6dff:fe71:5f2, length 32
16:58:23.867116 IP6 fe80::280:6dff:fe71:5f2 > fe80::280:6dff:fe71:528: ICMP6, neighbor advertisement, tgt is fe80::280:6dff:fe71:5f2, length 24
16:58:23.884125 IP6 2001::c0a8:ca05.isakmp > 2001::c0a8:ca04.isakmp: isakmp: phase 1 I ident
16:58:28.865880 IP6 fe80::280:6dff:fe71:5f2 > fe80::280:6dff:fe71:528: ICMP6, neighbor solicitation, who has fe80::280:6dff:fe71:528, length 32
16:58:28.866074 IP6 fe80::280:6dff:fe71:528 > fe80::280:6dff:fe71:5f2: ICMP6, neighbor advertisement, tgt is fe80::280:6dff:fe71:528, length 24

内容を見る限り、アドレスの問い合わせを送信しているが、応答がユニキャスト宛になるからIPsecが接続されていないと送信できないよ~な感じ……まさに、鶏と卵のような関係!!(ーー;)

確かに、ポリシー的にはユニキャスト宛はIPsecを通るように設定しているので、まさにその通りなのだが……これでいいのか?それともなんか設定があるの?(T_T)

USAGIが2.6.18にアップされるまで待つか……ふぅ~(^。^)y-.。o○

2006年11月14日

IPv6でIPsec!!

やっとこさ、一部の動作確認が出来ました!!(^。^)y-.。o○

トランスポートモードで、試していたのですがどうしても動作しなくて……どうせ使うのはトンネルモードだけだろう!っと言う事で、トンネルモードで試してみたら動作しました。(^^ゞ

しかし、トランスポートモードでは動作していません……(T_T)

トンネルモード・事前共有鍵の設定をwikiに追記しました。
http://www.youchikurin.com/wiki/index.php?IpsecTools#m63885fa

LinuxでDLNAサーバ!!

LinuxでDLNAサーバってないのかな~って探していたら下記の物を発見!
DLNAクライアントを買ったら試してみよう~って持ってないのに探しとったんかい!!(--〆)

MediaTomb
http://mediatomb.org/

2006年11月20日

PLAYSTATION3でLinuxを!

PS3でLinuxの起動が確認されたみたいだ!
良いね~ワクワクしますね~(*^_^*)

PS3が欲しいけど予算がな~……(T_T)

Open Platform for PLAYSTATION3
http://www.playstation.com/ps3-openplatform/jp/index.html

PLAYSTATION3 Linux Information Site
http://cell.fixstars.com/ps3linux/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8

スラッシュドットの記事
http://slashdot.jp/linux/06/11/18/0113253.shtml

2006年11月29日

パケットダンプ

Etherealでパケットキャプチャしていたら「TCP segment of a reassembled PDU」なる表示があり??と思ってぐぐったら。下記のページを発見!!

http://sleepingcat.blog6.fc2.com/blog-entry-223.html

なるほど~

2006年12月11日

トラックバック

以前、パケットダンプの件で、toshizouさんのブログにトラックバックを張らせてもらい、ありがたいことにトラックバックを許可して頂いた上にさらに!私のブログにトラックバックしてくださっていたのに!私の馬鹿がメールを見ていなかったためにトラバを許可できていませんでした……(-_-;)。申し訳ない~m(__)m

ここで言い訳を!実はメールは数週間に1回しか見てません!(^^ゞ
もっと見ろよ>俺。(-_-)/~~~ピシー!ピシー!

なので、皆さんトラックバックは気長にお待ちを!って誰も張ってくれない……(T_T)

しかも!!EtherealはWiresharkに変わってるってtoshizouさんに教えてもらいました。
ありがとうございました!!m(__)m
ぜっんぜん知りませんでした!(^^ゞ

2007年01月04日

PS3でLinux!

PS3でLinuxやNetBSDが動作している模様です。

個人的には、搭載メモリが少ないのであまり使い道がないかな~と思ってたりして。(^^ゞ

Slashdot Japan
Debian-Installer for PlayStation3
PlayStation3でNetBSDが始動し始めた模様

initramfsの使い方?

組み込み向けにinitrdを使いたかったのだが、どうもinitramfsに移行しているみたいで、試行錯誤中!(initramfsを使ってのinitrd?)

とりあえず、Debianのx86用initramfsファイルを確認。

確認方法
① "/boot"からinitrdファイルを作業ディレクトリにコピー
  cd ~/work/
  cp /boot/initrd.img-2.6.18-3-686 ./
② 名前を修正(gzipが認識しないため)
  mv initrd.img-2.6.18-3-686 initrd.img-2.6.18-3-686.gz
③ ファイルの解凍
  gzip -d initrd.img-2.6.18-3-686.gz
④ cpioでファイルを展開
  cat initrd.img-2.6.18-3-686 | cpio -id

で、中身を見ると、どうやら"init"が肝みたいですね~ファイル内容はスクリプトで、内部でrootファイルを変更しています。ちなみに、本ファイルでDebianが使用しているシェルはBusyboxのashのようです。あと、CentOS(RedHat ELもどき)はnashというものを使用しているみたいです。

内容的には

① initrd内のinitスクリプトが実行される。
② 各種起動に必要なドライバがロードされる。
③ ルートパーティションがマウントされ、ルートが変更される(ついでにinitも再実行される)。

今日の解析はここまで!(^^ゞ

2007年01月10日

initramfsの使い方?

前回の続き……

イメージファイルの作り方
find . | cpio --quiet -c -o | gzip -9 -n > /boot/imagefile.img

コマンドラインオプション
root=/dev/ram0

で、色々やってみてわかったことは、カーネルの".config"オプションのCONFIG_INITRAMFS_SOURCEには、initramfsで使用するルートディレクトリを指定する。最初、圧縮ファイルを指定するもんだと思って、イメージファイルを作ってやってみたら、ウキ~ってな感じでうまく動かなくて、めちゃくちゃハマった!(ーー;)

ちなみに、initramfsで使用するルートディレクトリに"/dev/console"がないと、下記のエラーが表示される。

Freeing unused kernel memory: 468k freed
Warning: unable to open an initial console.  ←この警告が出て正常に処理できない
Algorithmics/MIPS FPU Emulator v1.5
Kernel panic - not syncing: Attempted to kill init!

2007年01月12日

Busyboxのmke2fsでのメッセージ

Busyboxの1.1.3(Debian Etch用)で下記のようにするとメッセージが出力される。

mke2fs -i 1024 /dev/ram1
mke2fs 1.38 (30-Jun-2005)
mke2fs: Could not determine if /dev/ram1 is mounted ← これ

原因は、"/etc/mtab"ファイルがないためで、"touch /etc/mtab"としてダミーファイルを作っていれば問題ない!どうやらBusyboxのバグみたいだ……たぶん最新では直っているはず?

2007年01月18日

initramfsの使い方?

ようやく使用方法が、分かったので記述しておく。
(そのうちwikiにまとめページを作るつもりです)

ROOTFSがinitramfsのルートディレクトリで、このROOTFSをCONFIG_INITRAMFS_SOURCEに指定しておく。

ROOTFSの内容は、下記の通り。

.:
total 88
drwxr-xr-x 2 root root 4096 Jan 15 13:33 bin
drwxr-xr-x 2 root root 4096 Jan 12 15:44 dev
drwxr-xr-x 2 root root 4096 Jan 15 11:39 etc
-rwxr-xr-x 1 root root 1155 Jan 15 13:34 init
drwxr-xr-x 3 root root 4096 Jan 11 17:57 lib
drwxr-xr-x 2 root root 4096 Jan 10 16:48 proc
drwxr-xr-x 2 root root 4096 Jan 12 10:33 root
drwxr-xr-x 2 root root 4096 Jan 15 13:33 sbin
drwxr-xr-x 2 root root 4096 Jan 10 16:48 sys
drwxr-xr-x 3 root root 4096 Jan 11 14:34 usr
drwxr-xr-x 3 root root 4096 Jan 10 16:48 var

./bin:
total 336
lrwxrwxrwx 1 root root 7 Jan 15 13:33 ash -> busybox
-rwxr-xr-x 1 root root 279964 Jan 15 13:33 busybox
lrwxrwxrwx 1 root root 7 Jan 15 13:33 dd -> busybox
lrwxrwxrwx 1 root root 7 Jan 15 13:33 echo -> busybox
lrwxrwxrwx 1 root root 7 Jan 15 13:33 mkdir -> busybox
lrwxrwxrwx 1 root root 7 Jan 15 13:33 mknod -> busybox
lrwxrwxrwx 1 root root 7 Jan 15 13:33 mount -> busybox
-rwxr-xr-x 1 root root 15006 Jan 12 14:14 run-init
lrwxrwxrwx 1 root root 7 Jan 15 13:33 sh -> busybox
lrwxrwxrwx 1 root root 7 Jan 15 13:33 tar -> busybox

./dev:
total 24
crw-r--r-- 1 root root 5, 1 Jan 10 16:48 console
brw-r--r-- 1 root root 31, 0 Jan 10 17:58 mtdblock0
crw-r--r-- 1 root root 1, 3 Jan 10 16:49 null
brw-rw---- 1 root root 1, 0 Jan 12 15:43 ram0
brw-rw---- 1 root root 1, 1 Jan 12 15:43 ram1
crw-rw-rw- 1 root root 1, 5 Jan 12 15:44 zero

./etc:
total 4
-rw-r--r-- 1 root root 0 Jan 12 16:46 mtab

./lib:
total 1564
-rwxr-xr-x 1 root root 102136 Nov 5 13:51 ld-2.3.6.so
lrwxrwxrwx 1 root root 11 Jan 11 12:51 ld.so.1 -> ld-2.3.6.so
-rwxr-xr-x 1 root root 1462840 Nov 5 13:51 libc-2.3.6.so
lrwxrwxrwx 1 root root 13 Jan 11 12:49 libc.so.6 -> libc-2.3.6.so
drwxr-xr-x 2 root root 4096 Jan 11 11:55 modules

./lib/modules:
total 0

./proc:
total 0

./root:
total 0

./sbin:
total 12
lrwxrwxrwx 1 root root 14 Jan 15 13:33 mke2fs -> ../bin/busybox
lrwxrwxrwx 1 root root 14 Jan 15 13:33 mkfs.ext2 -> ../bin/busybox
lrwxrwxrwx 1 root root 14 Jan 15 13:33 mkfs.ext3 -> ../bin/busybox

./sys:
total 0

./usr:
total 8
drwxr-xr-x 2 root root 4096 Jan 15 13:33 bin

./usr/bin:
total 16
lrwxrwxrwx 1 root root 17 Jan 15 13:33 [ -> ../../bin/busybox
lrwxrwxrwx 1 root root 17 Jan 15 13:33 [[ -> ../../bin/busybox
lrwxrwxrwx 1 root root 17 Jan 12 10:18 mesg -> ../../bin/busybox
lrwxrwxrwx 1 root root 17 Jan 15 13:33 test -> ../../bin/busybox

./var:
total 8
drwxr-xr-x 2 root root 4096 Jan 10 16:48 lock

./var/lock:
total 0


で、肝としては、busyboxのshとmount関連を使うことと、klibcのrun-initを使用することかな~

/dev/ram1とかがあるのは、/etcをramdiskで使用するためで(組み込み屋さんなので、起動時にetcの内容を設定に応じて変える事があるため、MTD(Flash)ではブ~だから)、initrd起動中にramdiskを作ってそこにetc,var,tmpなどを作成しています。

現状の問題点は、2.4系の時に比べてinitrdのサイズがでかい事かな~だって、2.4系の場合は、initrdを開放しなければ簡単にetcのramdisk環境が作れたのに、2.6系はshellが必要なのでライブラリを入れる必要があり、サイズが肥大化する……uClibcを使用すれば小さくなるのかね~(現在はglibcを使用しているから)

klibc
ftp://ftp.kernel.org/pub/linux/libs/klibc/

busybox
http://www.busybox.net/

2007年01月30日

Win32版 Debian Installer

Windowsから、Debian Installerを起動するランチャーが開発されたそうです(下記スラッシュドット参照)。

なかなか面白そうなので、早速実行してみたのですが……用意した古いPCじゃ駄目みたいです。まぁ、用意したPCがクソ過ぎるのでしょう!なんせ、古いノートPCでNICはPCMCIA接続で、Net関連がうまく動作しないようです(そりゃ仕方がないかな~(^^ゞ)。まぁ、NICが特殊な状態(PCMCIA・USB接続)でなければ問題はないでしょう!(試してないけど)

Slashdot
Debian GNU/Linux に Win32 インストーラ登場

Win32版インストーラ
http://goodbye-microsoft.com/

2007年04月25日

Linuxのエラーメッセージ

ユニアデックス株式会社が、Linux障害発生時のエラーメッセージをデータベース化し、ネットで公開したと発表したが、今のところまともに使えそうにないな……

まぁ、自分の場合は組み込み系だからかもしれないけど、登録されているメッセージが少なすぎ(現時点で356メッセージだって~)!!

今後に期待ということで……

ニュースリリース

OSSメッセージペディア

2007年05月11日

MPC8349E-mITXについて

MPC8349E-mITXで、最新カーネル(2.6.20/2.6.21)がまともに動作しません!!

何でかな~(?_?)

u-bootも最新にしたしな~
カーネルもDENXのDENX-v2.6.21にしたのにな~

MPC8349E-mITX> setenv bootargs root=/dev/nfs rw ip=dhcp console=ttyS0,115200
MPC8349E-mITX> bootp 02001000 mpc8349emitx.dtb.2.6.21
Speed: 100, full duplex
BOOTP broadcast 1
Using TSEC0 device
TFTP from server 172.17.0.1; our IP address is 172.17.202.9
Filename 'uImage.mpc8349itx'.
Load address: 0x2001000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
##################
done
Bytes transferred = 1422644 (15b534 hex)
MPC8349E-mITX> tftp 02000000 mpc8349emitx.dtb.2.6.21
Speed: 100, full duplex
Using TSEC0 device
TFTP from server 172.17.0.1; our IP address is 172.17.202.9
Filename 'mpc8349emitx.dtb.2.6.21'.
Load address: 0x2000000
Loading: #
done
Bytes transferred = 4062 (fde hex)
MPC8349E-mITX> bootm 2001000 - 2000000
## Booting image at 02001000 ...
Image Name: Linux-2.6.21
Created: 2007-05-11 7:57:50 UTC
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1422580 Bytes = 1.4 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Booting using flat device tree at 0x2000000
Using MPC834x ITX machine description
Linux version 2.6.21 (root@plextor) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #3 Fri May 11 16:57:47 JST 2007
setup_arch: bootmem
mpc834x_itx_setup_arch()
Found MPC83xx PCI host bridge at 0x00000000e0008500. Firmware bus number: 0->0
Found MPC83xx PCI host bridge at 0x00000000e0008600. Firmware bus number: 1->1
arch: exit
Zone PFN ranges:
DMA 0 -> 65536
Normal 65536 -> 65536
early_node_map[1] active PFN ranges
0: 0 -> 65536
Built 1 zonelists. Total pages: 65024
Kernel command line: root=/dev/nfs rw ip=dhcp console=ttyS0,115200
IPIC (128 IRQ sources) at fbffb700
PID hash table entries: 1024 (order: 10, 4096 bytes)

Using MPC834x ITX machine description
Linux version 2.6.21 (root@plextor) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #3 Fri May 11 16:57:47 JST 2007
Found MPC83xx PCI host bridge at 0x00000000e0008500. Firmware bus number: 0->0
Found MPC83xx PCI host bridge at 0x00000000e0008600. Firmware bus number: 1->1
Zone PFN ranges:
DMA 0 -> 65536
Normal 65536 -> 65536
early_node_map[1] active PFN ranges
0: 0 -> 65536
Built 1 zonelists. Total pages: 65024
Kernel command line: root=/dev/nfs rw ip=dhcp console=ttyS0,115200
IPIC (128 IRQ sources) at fbffb700
PID hash table entries: 1024 (order: 10, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 256512k/262144k available (2788k kernel code, 5340k reserved, 92k data, 93k bss, 148k init)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
PCI: Probing PCI hardware
Generic PHY: Registered new driver
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
WDT driver for MPC83xx initialized. mode:reset timeout=65535 (16 seconds)
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xe0004500 (irq = 16) is a 16550A
serial8250.0: ttyS1 at MMIO 0xe0004600 (irq = 17) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 32768K size 1024 blocksize
loop: loaded (max 8 devices)
Gianfar MII Bus: probed
eth0: Gianfar Ethernet Controller Version 1.2, 00:e0:0c:00:8c:01
eth0: Running with NAPI enabled
eth0: 256/256 RX/TX BD ring size
eth1: Gianfar Ethernet Controller Version 1.2, 00:00:00:00:00:00
eth1: Running with NAPI enabled
eth1: 256/256 RX/TX BD ring size
Cicada Cis8204: Registered new driver
Cicada Cis8201: Registered new driver
sata_sil 0000:00:10.0: Applying R_ERR on DMA activate FIS errata fix
ata1: SATA max UDMA/100 cmd 0xd100e080 ctl 0xd100e08a bmdma 0xd100e000 irq 22
ata2: SATA max UDMA/100 cmd 0xd100e0c0 ctl 0xd100e0ca bmdma 0xd100e008 irq 22
ata3: SATA max UDMA/100 cmd 0xd100e280 ctl 0xd100e28a bmdma 0xd100e200 irq 22
ata4: SATA max UDMA/100 cmd 0xd100e2c0 ctl 0xd100e2ca bmdma 0xd100e208 irq 22
scsi0 : sata_sil
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: ATA-7: HDT722516DLA380, V43OA96A, max UDMA/133
ata1.00: 321672960 sectors, multi 0: LBA48 NCQ (depth 0/32)
ata1.00: configured for UDMA/100
scsi1 : sata_sil
ata2: SATA link down (SStatus 0 SControl 310)
scsi2 : sata_sil
ata3: SATA link down (SStatus 0 SControl 310)
scsi3 : sata_sil
ata4: SATA link down (SStatus 0 SControl 310)
scsi 0:0:0:0: Direct-Access ATA HDT722516DLA380 V43O PQ: 0 ANSI: 5
SCSI device sda: 321672960 512-byte hdwr sectors (164697 MB)
sda: Write Protect is off
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
SCSI device sda: 321672960 512-byte hdwr sectors (164697 MB)
sda: Write Protect is off
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPO or FUA
sda: sda1
sd 0:0:0:0: Attached scsi disk sda
sd 0:0:0:0: Attached scsi generic sg0 type 0
physmap platform flash device: 01000000 at fe000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
physmap-flash.0: Found 1 x16 devices at 0x800000 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
physmap-flash.0: CFI does not contain boot bank location. Assuming top.
number of CFI chips: 2
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
usbmon: debugfs is not available
fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci.0: irq 39, io base 0xe0022000
fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
fsl-ehci fsl-ehci.1: irq 38, io base 0xe0023000
fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
Initializing USB Mass Storage driver...
usb 1-1: new high speed USB device using fsl-ehci and address 2
usb 1-1: configuration #1 chosen from 1 choice
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
i2c /dev entries driver
async_tx: api initialized (async)
xor: measuring software checksumming speed
8regs : 405.000 MB/sec
8regs_prefetch: 385.000 MB/sec
32regs : 485.000 MB/sec
32regs_prefetch: 470.000 MB/sec
xor: using function: 32regs (485.000 MB/sec)
md: linear personality registered for level -1
md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
Unable to handle kernel paging request for data at address 0x0101000e
Faulting instruction address: 0xc019749c
Oops: Kernel access of bad area, sig: 11 [#1]

Modules linked in:
NIP: C019749C LR: C019949C CTR: 00000008
REGS: c02d1ca0 TRAP: 0300 Not tainted (2.6.21)
MSR: 00001032 CR: 24000084 XER: 00000000
DAR: 0101000E, DSISR: 20000000
TASK = c02bc190[0] 'swapper' THREAD: c02d0000
GPR00: 00000000 C02D1D50 C02BC190 FFFFFFB9 FFFFFFB5 00000000 00000000 00000058
GPR08: 00012102 00000000 CFF2A104 CFF2A100 3AA6A600 40000844 C02DE100 C02E0350
GPR16: C056936C 00000800 000003FC 01000000 CFF2C3FC 00000008 000001DC 000007FF
GPR24: 00000000 C05703FC C05692C8 C0569200 CFF2A100 00000000 00000000 01010000
Call Trace:
[C02D1D50] [C02D0000] (unreliable)
[C02D1DA0] [C019949C]
[C02D1DB0] [C0023BE8]
[C02D1DF0] [C001F990]
[C02D1E20] [C0005FE4]
[C02D1E30] [C001F728]
[C02D1E40] [C000C4F4]
[C02D1ED0] [C000F904]
--- Exception: 901[C02D1F90] [C0008BD4] (unreliable)
[C02D1FB0] [C0003978]
[C02D1FC0] [C02948DC]
[C02D1FF0] [00003438]
Instruction dump:
7d604850 7f965800 41befd08 815b00c4 4bfffcf4 54092036 7c180378 7d29ea14
38e90058 7d00542c 90ab0004 75067000 893f0038 7c090050 b01f000e
Kernel panic - not syncing: Fatal exception in interrupt
Rebooting in 180 seconds..

2007年05月24日

MPC8349E-mITXについて part 2 !

ようやく正常に起動しました!(*^_^*)

やったことは、最新の"u-boot-mpc83xx.git"と"linux-2.6-denx.git"を使用しました。
たったそれだけ……(ーー;) 今まで何してたんだろう……(T_T)

最新データの取得方法は、下記を参照してください。
U-Boot関連のメモ!
組み込み関連のメモ!

ちなみに、DTCは20070510版を使用しました。
取得方法は、下記を参照してください。
DTC関連のメモ!


MPC8349E-mITX> setenv bootargs root=/dev/nfs rw ip=dhcp console=ttyS0,115200
MPC8349E-mITX> bootp 02001000
Speed: 100, full duplex
BOOTP broadcast 1
Using TSEC0 device
TFTP from server 172.17.0.1; our IP address is 172.17.202.9
Filename 'uImage.mpc8349itx'.
Load address: 0x2001000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#######################
done
Bytes transferred = 1448641 (161ac1 hex)
MPC8349E-mITX> tftp 02000000 mpc8349eitx.dtb
Speed: 100, full duplex
Using TSEC0 device
TFTP from server 172.17.0.1; our IP address is 172.17.202.9
Filename 'mpc8349eitx.dtb'.
Load address: 0x2000000
Loading: #
done
Bytes transferred = 4062 (fde hex)
MPC8349E-mITX> bootm 2001000 - 2000000
## Booting image at 02001000 ...
Image Name: Linux-2.6.21.1-g39b9e471
Created: 2007-05-24 6:29:03 UTC
Image Type: PowerPC Linux Kernel Image (gzip compressed)
Data Size: 1448577 Bytes = 1.4 MB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Booting using flat device tree at 0x2000000
Using MPC834x ITX machine description
Linux version 2.6.21.1-g39b9e471 (root@plextor) (gcc version 4.1.2 20061115 (pr7
setup_arch: bootmem
mpc834x_itx_setup_arch()
Found MPC83xx PCI host bridge at 0x00000000e0008500. Firmware bus number: 0->0
Found MPC83xx PCI host bridge at 0x00000000e0008600. Firmware bus number: 1->1
arch: exit
Zone PFN ranges:
DMA 0 -> 65536
Normal 65536 -> 65536
early_node_map[1] active PFN ranges
0: 0 -> 65536
Built 1 zonelists. Total pages: 65024
Kernel command line: root=/dev/nfs rw ip=dhcp console=ttyS0,115200
IPIC (128 IRQ sources) at fbffb700
PID hash table entries: 1024 (order: 10, 4096 bytes)

Using MPC834x ITX machine description
Linux version 2.6.21.1-g39b9e471 (root@plextor) (gcc version 4.1.2 20061115 (pr7
Found MPC83xx PCI host bridge at 0x00000000e0008500. Firmware bus number: 0->0
Found MPC83xx PCI host bridge at 0x00000000e0008600. Firmware bus number: 1->1
Zone PFN ranges:
DMA 0 -> 65536
Normal 65536 -> 65536
early_node_map[1] active PFN ranges
0: 0 -> 65536
Built 1 zonelists. Total pages: 65024
Kernel command line: root=/dev/nfs rw ip=dhcp console=ttyS0,115200
IPIC (128 IRQ sources) at fbffb700
PID hash table entries: 1024 (order: 10, 4096 bytes)
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 256512k/262144k available (2840k kernel code, 5396k reserved, 92k data,)
Mount-cache hash table entries: 512
NET: Registered protocol family 16
PCI: Probing PCI hardware
Generic PHY: Registered new driver
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 4, 65536 bytes)
TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
TCP: Hash tables configured (established 8192 bind 8192)
TCP reno registered
fuse init (API version 7.8)
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
WDT driver for MPC83xx initialized. mode:reset timeout=65535 (16 seconds)
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xe0004500 (irq = 16) is a 16550A
serial8250.0: ttyS1 at MMIO 0xe0004600 (irq = 17) is a 16550A
RAMDISK driver initialized: 16 RAM disks of 32768K size 1024 blocksize
loop: loaded (max 8 devices)
Gianfar MII Bus: probed
eth0: Gianfar Ethernet Controller Version 1.2, 00:e0:0c:00:8c:01
eth0: Running with NAPI enabled
eth0: 256/256 RX/TX BD ring size
eth1: Gianfar Ethernet Controller Version 1.2, 00:00:00:00:00:00
eth1: Running with NAPI enabled
eth1: 256/256 RX/TX BD ring size
Cicada Cis8204: Registered new driver
Cicada Cis8201: Registered new driver
sata_sil 0000:00:10.0: Applying R_ERR on DMA activate FIS errata fix
ata1: SATA max UDMA/100 cmd 0xd100e080 ctl 0xd100e08a bmdma 0xd100e000 irq 22
ata2: SATA max UDMA/100 cmd 0xd100e0c0 ctl 0xd100e0ca bmdma 0xd100e008 irq 22
ata3: SATA max UDMA/100 cmd 0xd100e280 ctl 0xd100e28a bmdma 0xd100e200 irq 22
ata4: SATA max UDMA/100 cmd 0xd100e2c0 ctl 0xd100e2ca bmdma 0xd100e208 irq 22
scsi0 : sata_sil
ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
ata1.00: ATA-7: HDT722516DLA380, V43OA96A, max UDMA/133
ata1.00: 321672960 sectors, multi 0: LBA48 NCQ (depth 0/32)
ata1.00: configured for UDMA/100
scsi1 : sata_sil
ata2: SATA link down (SStatus 0 SControl 310)
scsi2 : sata_sil
ata3: SATA link down (SStatus 0 SControl 310)
scsi3 : sata_sil
ata4: SATA link down (SStatus 0 SControl 310)
scsi 0:0:0:0: Direct-Access ATA HDT722516DLA380 V43O PQ: 0 ANSI: 5
SCSI device sda: 321672960 512-byte hdwr sectors (164697 MB)
sda: Write Protect is off
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPOA
SCSI device sda: 321672960 512-byte hdwr sectors (164697 MB)
sda: Write Protect is off
SCSI device sda: write cache: enabled, read cache: enabled, doesn't support DPOA
sda: sda1
sd 0:0:0:0: Attached scsi disk sda
sd 0:0:0:0: Attached scsi generic sg0 type 0
physmap platform flash device: 01000000 at fe000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
physmap-flash.0: Found 1 x16 devices at 0x800000 in 16-bit bank
Amd/Fujitsu Extended Query Table at 0x0040
physmap-flash.0: CFI does not contain boot bank location. Assuming top.
number of CFI chips: 2
cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
usbmon: debugfs is not available
fsl-ehci fsl-ehci.0: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.0: new USB bus registered, assigned bus number 1
fsl-ehci fsl-ehci.0: irq 39, io base 0xe0022000
fsl-ehci fsl-ehci.0: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
fsl-ehci fsl-ehci.1: Freescale On-Chip EHCI Host Controller
fsl-ehci fsl-ehci.1: new USB bus registered, assigned bus number 2
fsl-ehci fsl-ehci.1: irq 38, io base 0xe0023000
fsl-ehci fsl-ehci.1: USB 2.0 started, EHCI 1.00, driver 10 Dec 2004
usb usb2: configuration #1 chosen from 1 choice
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
Initializing USB Mass Storage driver...
usb 1-1: new high speed USB device using fsl-ehci and address 2
fsl-ehci fsl-ehci.0: fatal error
fsl-ehci fsl-ehci.0: HC died; cleaning up
hub 1-0:1.0: cannot reset port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: cannot reset port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: cannot reset port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: cannot reset port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: cannot disable port 1 (err = -19)
hub 1-0:1.0: hub_port_status failed (err = -19)
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
i2c /dev entries driver
async_tx: api initialized (async)
xor: measuring software checksumming speed
8regs : 405.000 MB/sec
8regs_prefetch: 385.000 MB/sec
32regs : 485.000 MB/sec
32regs_prefetch: 471.000 MB/sec
xor: using function: 32regs (485.000 MB/sec)
md: linear personality registered for level -1
md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
TCP cubic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
Sending DHCP requests .<6>PHY: e0024520:1c - Link is Up - 100/Full
., OK
IP-Config: Got DHCP answer from 172.17.0.1, my address is 172.17.202.9
IP-Config: Complete:
device=eth0, addr=172.17.202.9, mask=255.255.0.0, gw=172.17.7.7,
host=mpc8349eitx-1, domain=centurysystems.co.jp, nis-domain=(none),
bootserver=172.17.0.1, rootserver=172.17.0.1, rootpath=/home/public/projecs
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
Looking up port of RPC 100003/2 on 172.17.0.1
Looking up port of RPC 100005/1 on 172.17.0.1
VFS: Mounted root (nfs filesystem).
Freeing unused kernel memory: 148k init
INIT: version 2.86 booting
Activating swap...done.
Setting the system clock..
Cannot access the Hardware Clock via any known method.
Use the --debug option to see the details of our search for an access method.
Cleaning up ifupdown....
Loading kernel modules...FATAL: Could not load /lib/modules/2.6.21.1-g39b9e471/y
Loading device-mapper support.
Checking file systems...fsck 1.40-WIP (14-Nov-2006)
done.
Setting kernel variables...done.
Mounting local filesystems...failed.
Activating swapfile swap...done.
Setting up networking....
Configuring network interfaces...done.
INIT: Entering runlevel: 2
Starting system log daemon: syslogd.
Starting kernel log daemon: klogd.
* Not starting internet superserver: no services enabled.
Starting OpenBSD Secure Shell server: sshd.
Starting periodic command scheduler: crond.

Debian GNU/Linux 4.0 mpc8349eitx-1 ttyS0

MPC8349E-mITXについて part 3 !

どうやら、私は幻を見ていたようです……

正常に動作しているのを狂喜乱舞し、もう大丈夫だろうとCONFIGを修正して再度カーネルイメージを作り、再起動したら……動きません!!(T_T)

CONFIGを元に戻しても駄目……

何じゃこりゃ~<`~´>


クロスコンパイラの問題?

G4MACでコンパイルしても駄目じゃ~!!<`~´>

幻でも、動いたからにはもう一歩なんだろうな~(-_-;)

MPC8349E-mITXについて part 4 !

とりあえず、USB関連をOFFにしたら動きました……

まぁ、原因はゆっくりと探しますかね~(-_-;)

2007年06月19日

Linuxで無線LAN

え~

BUFFALOのWHR-HP-G/Pを購入して、Linuxで無線LANなんかやって見るかな~

っと言う事で、やってみました。


まずは、WLI-CB-G54HPをおもむろにPCに挿します。

で、lspciを実行すると

02:00.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)

と表示されたが、正常に動作しません。
(まぁ、当然か……)

色々ググルとbcm43xx-fwcutterなるものを使えと出てきました。

debianのWebサイトで調べると、パッケージがあるようなので

apt-get install bcm43xx-fwcutter
E: Couldn't find package bcm43xx-fwcutter

(?_?)

HPをよーく見ると、[contrib]と書かれているので、"/etc/apt/sources.list"を下記のように修正。
-----
deb http://ftp.jp.debian.org/debian/ etch main contrib
deb-src http://ftp.jp.debian.org/debian/ etch main contrib

deb http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib
-----

再度

apt-get update
apt-get install bcm43xx-fwcutter

を実行すると、正常にインストールされました。

で、ふとカードを見るとLEDが点灯している!!

を!!

iwlist eth4 scan

を~APがずらずらと出てきました!

とりあえず、今日はここまで……

2007年06月20日

Linuxで無線LAN

え~昨日の続きです。

まずは、WEPで接続してみましょう!

# iwconfig eth4 essid "xxxxxxxx"
# iwconfig eth4 key s:1234567890123
# dhclient eth4

お~つながりました。

iwconfigのkey登録は、文字列で設定する場合は、s:文字列で16進で入力する場合は、0102-0304-xxxxの様に、2バイトずつハイフンを入れる必要があるようです。

次にWPAですが、WPAを設定するには、wpa_supplicantが必要なので、下記のようにしてインストールしましょう。(Debian Etchの場合です)

# apt-get install wpasupplicant

次に、PreSharedKeyを作成します。

wpa_passphrase ssid passphrase

なので

# wpa_passphrase myid mypass > /etc/wpa_supplicant/wpa_supplicant.conf

中身は

network={
ssid="myid"
#psk="mypass"
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}

となっています。

認証方式にWPA-PSKを使用し、暗号方式をTKIPとする場合は下記のように修正します。

network={
ssid="myid"
proto=WPA
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}

認証方式にWPA-PSKを使用し、暗号方式をAESとする場合は下記のように修正します。

network={
ssid="myid"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}

認証方式にWPA2-PSKを使用し、暗号方式をTKIPとする場合は下記のように修正します。

network={
ssid="myid"
proto=RSN
key_mgmt=WPA-PSK
pairwise=TKIP
group=TKIP
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}

認証方式にWPA2-PSKを使用し、暗号方式をAESとする場合は下記のように修正します。

network={
ssid="myid"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
group=CCMP
psk=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
}

ちなみに、supplicantを使用してWEP128を使用する場合は下記のように修正します。

network={
ssid="myid"
key_mgmt=NONE
wep_key0="1234567890123"
wep_tx_keyidx=0
}


設定が済んだら、下記コマンドを実行して動作確認をしましょう!

wpa_supplicant -i eth4 -c /etc/wpa_supplicant/wpa_supplicant.conf -w
・・・
CTRL-EVENT-CONNECTED - Connection to xx:xx:xx:xx:xx:xx completed ・・・

上記のようなメッセージが出力されたら、無事に設定は完了です。
なので、下記のコマンドを実行してバックグラウンドで実行しましょう!!

wpa_supplicant -i eth4 -c /etc/wpa_supplicant/wpa_supplicant.conf -B

次に、IPアドレスを設定して終了です。
DHCPの場合は

dhclient eth4
・・・
bound to xxx.xxx.xxx.xxx -- renewal in xxxxx seconds.

とIPアドレスが表示されれば正常に取得できたと言うことです。


ちなみに、私がはまったのは上記のwpa_supplicantを実行した際に正常にSSIDが設定されないので、接続できない問題でした。

これは、バグなんでしょうね~
回避方法は、下記のように手動でSSIDを設定すればOKです。

iwconfig eth4 essid "myid"

まぁ~ここまで来たら、起動時に認識させたいですよね~
その場合は"/etc/network/interface"に下記を追加します。

auto eth4
iface eth4 inet dhcp
wireless-essid myid ←上記のSSIDが設定されないバグの回避
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

以上でOK!

あとは、ifup eth4 and ifdown eth4でON/OFFが出来ます。

ちなみに、今回使用した無線LANカード(WLI-CB-G54HP)はBroadcomの4318チップを使用していました。このチップのカーネルドライバにまだ問題があるみたいで、設定を変更しての再接続が出来ないことが多く、そのたびにmodprobe -r bcm43xxとmodprobe bcm43xxを実行しなければいけませんでした。

まぁ、それ以外は正常に動作しているので、OKでしょう~(^。^)y-.。o○

2007年06月25日

Linuxで無線LAN

どーせここまで調べたら、APも作ってみたいな~って事で実験!

hostapdのHPを見ると、bcm43xxはサポートされていないみたいだ……(-_-;)

で!

何をサポートしているか見てみると

* Host AP driver for Prism2/2.5/3
* madwifi (Atheros ar521x)
* Prism54.org (Prism GT/Duette/Indigo)
* BSD net80211 layer (e.g., Atheros driver) (FreeBSD 6-CURRENT)

と言う事で、madwifiのAtheros ar521x系しか事実上入手しにくいことがわかりました。
これだけ?って感じだよね~(゜o゜)

で、どうするか色々調べてたのですが、どうやら手持ちのNEC AtermWL54AGが使えそう見たいです。
と言う事で、WL54AGを挿入して

# pccardctl ls
Socket 0 Bridge: [yenta_cardbus] (bus IO: 000:01:0a.0)
CardBus card -- see "lspci" for more information

と表示されました。
早速実行!!

# lspci
02:00.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01)

よっしゃOK!!
hostspdのHPに対応していると記述されていたチップセットです!!

それでは早速、Atherosのチップセットドライバをインストールしましょう!

"/etc/apt/sources.list"にcontribとnon-freeが登録されていることを確認して、

# apt-get update
# apt-get install madwifi-tools madwifi-doc madwifi-source

上記の作業で、module-assistantというものがインストールされるので

# m-a prepare
# m-a a-i madwifi

とすることで

madwifi-modules-2.6.18-4-686_0.9.2+r1842.20061207-2+2.6.18.dfsg.1-12etch2_i386.deb

と言う長ったらしいファイルが出来上がりました。
早速、インストールして確認しましょう!!

# rpm -i madwifi-modules-2.6.18-4-686_0.9.2+r1842.20061207-2+2.6.18.dfsg.1-12etch2_i386.deb
# modprobe ath-pci
# iwconfig
ath0 IEE802.11g ESSID:""
省略

これで、カードを認識しました。(^。^)y-.。o○

とりあえず、クライアントとして使えるか調べてみましょうかね~(^^♪
(設定方法等は、過去ログ1過去ログ2を参照してください)

2007年06月26日

LinuxでWEPを使用したAP(Access Point)を作ってみた

この前の続きと言う事で


# modprobe ath-pci autocreate=ap

として、モジュールをロード


上記の意味は

# modprobe ath-pci
# wlanconfig ath0 create wlandev wifi0 wlanmode ap

と同じと思って良いようだ

ちなみに、この情報はMADWiFiのHPで見つけました。


# iwconfig ath0 mode master
# iwconfig ath0 essid myessid
# iwconfig ath0 key s:1234567890123
# ifconfig ath0 192.168.11.1 netmask 255.255.255.0 up

とすることで、WEPのAPが動作した。(^。^)y-.。o○

このままだと、クライアントも固定IPを設定しないといけなくなるので

# apt-get install dhcp3-server
# vi /etc/dhcp3/dhcpd.conf
ddns-update-style none;
option domain-name "wlan.example.com";
option domain-name-servers 192.168.11.1;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.16 192.168.11.32;
option routers 192.168.11.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.11.255;
}
# vi /etc/default/dhcp3-server
INTERFACES="ath0"
# /etc/init.d/dhcp3-server start

とこれで、クライアントは動的IPが使えるようになった!


毎回、手動で設定するのは面倒なので下記のようにして完成!!

# vi /etc/network/interfaces
auto ath0
iface ath0 inet static
pre-up modprobe -r ath-pci
pre-up modprobe ath-pci autocreate=ap
post-up /etc/init.d/dhcp3-server restart
pre-down /etc/init.d/dhcp3-server stop
post-down wlanconfig ath0 destroy
post-down modprobe -r ath-pci
wireless-mode master
wireless-essid myssid
wireless-key s:mywepkey
address 192.168.11.1
netmask 255.255.255.0


ただ、これだとルーティングを設定しないといけない。
自分でルーター兼、無線LAN-APを作るのであればここからルーティングをさせれば良い。


ちなみに、完全なAPとして動作させるなら

# apt-get install bridge-utils

でブリッジユーティリティをインストールして

# vi /etc/network/interfaces
# WEP AP
auto ath0
iface ath0 inet manual
pre-up modprobe -r ath-pci
pre-up modprobe ath-pci autocreate=ap
post-down wlanconfig ath0 destroy
post-down modprobe -r ath-pci
wireless-mode master
wireless-essid myssid
wireless-key s:mywepkey

auto eth1
iface eth1 inet manual

aut0 br0
iface br0 inet static
pre-up ifup eth1
pre-up ifup ath0
post-up /etc/init.d/dhcp3-server restart
pre-down /etc/init.d/dhcp3-server stop
post-down ifdown eth1
post-down ifdown ath0
address 192.168.11.1
netmask 255.255.255.0
bridge_ports eth1 ath0
bridge_stp off
bridge_fd 0
bridge_maxwait 0

として

# ifup br0

で起動する!(^。^)y-.。o○
ブリッジ元のネットワークにDHCPサーバが有る場合は、DHCPの制御の部分を削除してね~

ちなみに、このままだと起動時にうまく動作しないよ~!
気が向いたら、書くつもり……(^^ゞ

WPAでAPを作ろ~!

さらに、前回に続き、今回はWPAでAPを作るつもりです。

WPAでAPを作る場合は、hostapdを使用します。

# apt-get install hostapd
# vi /etc/hostapd/hostapd.conf
interface=ath0
bridge=br0
driver=madwifi
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=0
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=YourESSID
max_num_sta=255
macaddr_acl=1
accept_mac_file=/etc/hostapd/accept
auth_algs=1
wme_enabled=1
wme_ac_bk_cwmin=4
wme_ac_bk_cwmax=10
wme_ac_bk_aifs=7
wme_ac_bk_txop_limit=0
wme_ac_bk_acm=0
wme_ac_be_aifs=3
wme_ac_be_cwmin=4
wme_ac_be_cwmax=10
wme_ac_be_txop_limit=0
wme_ac_be_acm=0
wme_ac_vi_aifs=2
wme_ac_vi_cwmin=3
wme_ac_vi_cwmax=4
wme_ac_vi_txop_limit=94
wme_ac_vi_acm=0
wme_ac_vo_aifs=2
wme_ac_vo_cwmin=2
wme_ac_vo_cwmax=3
wme_ac_vo_txop_limit=47
wme_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1
wpa=2
wpa_passphrase=YourPASSPHRASE ← セキュリティー的に問題があるので、wpa_psk=xxxxxを使った方が良い!
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP

# vi /etc/hostapd/accept
xx:xx:xx:xx:xx:xx ← 接続を許可したい無線LANクライアントのMACアドレスを記述

# vi /etc/network/interfaces
auto ath0
iface ath0 inet manual
pre-up modprobe -r ath-pci
pre-up modprobe ath-pci autocreate=ap
post-down wlanconfig ath0 destroy
post-down modprobe -r ath-pci
wireless-mode master

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet dhcp
pre-up ifup eth0
pre-up ifup ath0
post-down ifdown eth0
post-down ifdown ath0
bridge_ports eth0 ath0
bridge_stp off
bridge_fd 0
bridge_maxwait 0

# ifup br0

確認は

# hostapd -dd /etc/hostapd/hostapd.conf

で、正常に動作してたら

# /etc/init.d/hostapd start

で、起動させる。


あっという間に、WPA2-PSK AESのAPが出来上がり~(^。^)y-.。o○


WPA-PSKに変更する場合は、"/etc/hostapd/hostapd.conf"の"wpa=2"を"wpa=1"に変更する。
TKIPを使用したい場合は、"/etc/hostapd/hostapd.conf"の"wpa_pairwise=CCMP"を"wpa_pairwise=TKIP"に変更する。

まぁ、こんなもんですかね~(^^ゞ

2007年06月28日

無線LANで、IEEE802.1Xを使ってみよう!!

とりあえず、LinuxでAPが作れたので、次はIEEE802.1Xを使ってみようか!!

っと言うわけで、FreeRadiusをインストール!

# apt-get install freeradius

で、色々設定してみたのですが……

FreeRadiusが動きません!!orz

FreeRadiusを動かすのは今回が初めてじゃないんですが、なんせ前にやったのは2~3年前……
忘れています!!(^^ゞ

なんだか、ちょっとだけ設定方法が変わっているみたいです。

# freeradius -X
Starting - reading configuration files ...
reread_config: reading radiusd.conf
Config: including file: /etc/freeradius/eap.conf
main: prefix = "/usr"
main: localstatedir = "/var"
main: logdir = "/var/log/freeradius"
main: libdir = "/usr/lib/freeradius"
main: radacctdir = "/var/log/freeradius/radacct"
main: hostname_lookups = no
main: max_request_time = 30
main: cleanup_delay = 5
main: max_requests = 1024
main: delete_blocked_requests = 0
main: port = 0
main: allow_core_dumps = no
main: log_stripped_names = no
main: log_file = "/var/log/freeradius/radius.log"
main: log_auth = no
main: log_auth_badpass = no
main: log_auth_goodpass = no
main: pidfile = "/var/run/freeradius/freeradius.pid"
main: user = "freerad"
main: group = "freerad"
main: usercollide = no
main: lower_user = "no"
main: lower_pass = "no"
main: nospace_user = "no"
main: nospace_pass = "no"
main: checkrad = "/usr/sbin/checkrad"
main: proxy_requests = no
security: max_attributes = 200
security: reject_delay = 1
security: status_server = no
main: debug_level = 0
read_config_files: reading dictionary
read_config_files: reading naslist
Using deprecated naslist file. Support for this will go away soon.
read_config_files: reading clients

で、プログラムが止まってしまいます。(?_?)

色々調べていると、DebianのFreeRadiusはTLS関連がOFFになっているから、自分で構築する必要があるそうな……

たしかに

# ls /usr/lib/freeradius/
libeap-1.1.3.so rlm_eap-1.1.3.so rlm_ns_mta_md5-1.1.3.so
libeap.so rlm_eap.so rlm_ns_mta_md5.so
libradius-1.1.3.so rlm_eap_gtc-1.1.3.so rlm_pam-1.1.3.so
libradius.so rlm_eap_gtc.so rlm_pam.so
rlm_acct_unique-1.1.3.so rlm_eap_leap-1.1.3.so rlm_pap-1.1.3.so
rlm_acct_unique.so rlm_eap_leap.so rlm_pap.so
rlm_always-1.1.3.so rlm_eap_md5-1.1.3.so rlm_passwd-1.1.3.so
rlm_always.so rlm_eap_md5.so rlm_passwd.so
rlm_attr_filter-1.1.3.so rlm_eap_mschapv2-1.1.3.so rlm_perl-1.1.3.so
rlm_attr_filter.so rlm_eap_mschapv2.so rlm_perl.so
rlm_attr_rewrite-1.1.3.so rlm_eap_sim-1.1.3.so rlm_preprocess-1.1.3.so
rlm_attr_rewrite.so rlm_eap_sim.so rlm_preprocess.so
rlm_chap-1.1.3.so rlm_exec-1.1.3.so rlm_radutmp-1.1.3.so
rlm_chap.so rlm_exec.so rlm_radutmp.so
rlm_checkval-1.1.3.so rlm_expr-1.1.3.so rlm_realm-1.1.3.so
rlm_checkval.so rlm_expr.so rlm_realm.so
rlm_counter-1.1.3.so rlm_fastusers-1.1.3.so rlm_sql-1.1.3.so
rlm_counter.so rlm_fastusers.so rlm_sql.so
rlm_dbm-1.1.3.so rlm_files-1.1.3.so rlm_sql_log-1.1.3.so
rlm_dbm.so rlm_files.so rlm_sql_log.so
rlm_detail-1.1.3.so rlm_ippool-1.1.3.so rlm_sqlcounter-1.1.3.so
rlm_detail.so rlm_ippool.so rlm_sqlcounter.so
rlm_digest-1.1.3.so rlm_mschap-1.1.3.so rlm_unix-1.1.3.so
rlm_digest.so rlm_mschap.so rlm_unix.so

TLS/TTLSなどのライブラリが無いな~

それなら、自分で入れるか~
どうせなら、Debianパッケージでやって見るかな~

と、思いまずは検索!!

どうやら、下記のページがビンゴみたいだ!!

http://stielec.ac-aix-marseille.fr/cours/caleca/lansecure/radius/freeradius1.html

早速、参考にしながら

# apt-get build-dep source freeradius
# apt-get install build-essential
# apt-get install apt-src
# apt-src update

# mkdir freeradius
# cd freeradius
# apt-src install freeradius
# ls -la
drwxr-xr-x 15 root root 4096 Aug 23 2006 freeradius-1.1.3
-rw-r--r-- 1 root root 17124 Dec 17 2006 freeradius_1.1.3-3.diff.gz
-rw-r--r-- 1 root root 998 Dec 17 2006 freeradius_1.1.3-3.dsc
-rw-r--r-- 1 root root 2587376 Aug 28 2006 freeradius_1.1.3.orig.tar.gz
# cd freeradius-1.1.3/debian
"rule"ファイルを修正
===============================================
--- rules.org 2007-06-28 15:00:48.000000000 +0900
+++ rules 2007-06-28 15:07:12.000000000 +0900
@@ -23,10 +23,10 @@
# You will also need to add a Build-Depends on libssl-dev and libpq-dev
# and remove the Build-Conflicts on libssl-dev
# Finally you need to cat debian/control.postgresql >> debian/control
-buildssl=--without-rlm_eap_peap --without-rlm_eap_tls --without-rlm_eap_ttls --without-rlm_otp --without-rlm_sql_postgresql --without-snmp
-modulelist=krb5 ldap sql_mysql sql_iodbc
-#buildssl=--with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` --with-rlm_sql_postgresql_include_dir=`pg_config --includedir`
-#modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql
+#buildssl=--without-rlm_eap_peap --without-rlm_eap_tls --without-rlm_eap_ttls --without-rlm_otp --without-rlm_sql_postgresql --without-snmp
+#modulelist=krb5 ldap sql_mysql sql_iodbc
+buildssl=--with-rlm_sql_postgresql_lib_dir=`pg_config --libdir` --with-rlm_sql_postgresql_include_dir=`pg_config --includedir`
+modulelist=krb5 ldap sql_mysql sql_iodbc sql_postgresql
===============================================

# apt-get install libssl-dev libpq-dev
# cat control.postgresql >> control
"control"ファイルを修正
===============================================
--- control.org 2007-06-28 15:26:04.000000000 +0900
+++ control 2007-06-28 15:26:27.000000000 +0900
@@ -1,6 +1,6 @@
Source: freeradius
-Build-Depends: debhelper (>= 5), libltdl3-dev, libpam0g-dev, libmysqlclient15-dev | libmysqlclient-dev, libgdbm-dev, libldap2-dev, libsasl2-dev, libiodbc2-dev, libkrb5-dev, snmp, autotools-dev, dpatch (>= 2), libperl-dev, libtool, dpkg-dev (>= 1.13.19)
-Build-Conflicts: libssl-dev
+Build-Depends: debhelper (>= 5), libltdl3-dev, libpam0g-dev, libmysqlclient15-dev | libmysqlclient-dev, libgdbm-dev, libldap2-dev, libsasl2-dev, libiodbc2-dev, libkrb5-dev, snmp, autotools-dev, dpatch (>= 2), libperl-dev, libtool, dpkg-dev (>= 1.13.19), libssl-dev, libpq-dev
+Build-Conflicts:
Section: net
Priority: optional
Maintainer: Stephen Gran
===============================================

# vi changelog
===============================================
freeradius (1.1.3-3tls) unstable; urgency=low

* Add TLS support for compilation

-- youchikurin Thu, 28 Jun 2007 15:15:00 +0900
===============================================

/* cd freeradius */
# cd ../../
# apt-src build freeradius
・・・
・・・
・・・
I: Successfully built in /root/freeradius/freeradius-1.1.3
# ls -la *.deb
-rw-r--r-- 1 root root 117676 Jun 28 15:33 freeradius-dialupadmin_1.1.3-3tls_all.deb
-rw-r--r-- 1 root root 31858 Jun 28 15:34 freeradius-iodbc_1.1.3-3tls_i386.deb
-rw-r--r-- 1 root root 32556 Jun 28 15:34 freeradius-krb5_1.1.3-3tls_i386.deb
-rw-r--r-- 1 root root 47206 Jun 28 15:34 freeradius-ldap_1.1.3-3tls_i386.deb
-rw-r--r-- 1 root root 31798 Jun 28 15:34 freeradius-mysql_1.1.3-3tls_i386.deb
-rw-r--r-- 1 root root 32260 Jun 28 15:34 freeradius-postgresql_1.1.3-3tls_i386.deb
-rw-r--r-- 1 root root 765886 Jun 28 15:34 freeradius_1.1.3-3tls_i386.deb
# dpkg -i freeradius_1.1.3-3tls_i386.deb

# ls /usr/lib/freeradius/
libeap-1.1.3.so rlm_eap_gtc.so rlm_ns_mta_md5-1.1.3.so
libeap.so rlm_eap_leap-1.1.3.so rlm_ns_mta_md5.so
libradius-1.1.3.so rlm_eap_leap.so rlm_otp-1.1.3.so
libradius.so rlm_eap_md5-1.1.3.so rlm_otp.so
rlm_acct_unique-1.1.3.so rlm_eap_md5.so rlm_pam-1.1.3.so
rlm_acct_unique.so rlm_eap_mschapv2-1.1.3.so rlm_pam.so
rlm_always-1.1.3.so rlm_eap_mschapv2.so rlm_pap-1.1.3.so
rlm_always.so rlm_eap_peap-1.1.3.so rlm_pap.so
rlm_attr_filter-1.1.3.so rlm_eap_peap.so rlm_passwd-1.1.3.so
rlm_attr_filter.so rlm_eap_sim-1.1.3.so rlm_passwd.so
rlm_attr_rewrite-1.1.3.so rlm_eap_sim.so rlm_perl-1.1.3.so
rlm_attr_rewrite.so rlm_eap_tls-1.1.3.so rlm_perl.so
rlm_chap-1.1.3.so rlm_eap_tls.so rlm_preprocess-1.1.3.so
rlm_chap.so rlm_eap_ttls-1.1.3.so rlm_preprocess.so
rlm_checkval-1.1.3.so rlm_eap_ttls.so rlm_radutmp-1.1.3.so
rlm_checkval.so rlm_exec-1.1.3.so rlm_radutmp.so
rlm_counter-1.1.3.so rlm_exec.so rlm_realm-1.1.3.so
rlm_counter.so rlm_expr-1.1.3.so rlm_realm.so
rlm_dbm-1.1.3.so rlm_expr.so rlm_sql-1.1.3.so
rlm_dbm.so rlm_fastusers-1.1.3.so rlm_sql.so
rlm_detail-1.1.3.so rlm_fastusers.so rlm_sql_log-1.1.3.so
rlm_detail.so rlm_files-1.1.3.so rlm_sql_log.so
rlm_digest-1.1.3.so rlm_files.so rlm_sqlcounter-1.1.3.so
rlm_digest.so rlm_ippool-1.1.3.so rlm_sqlcounter.so
rlm_eap-1.1.3.so rlm_ippool.so rlm_unix-1.1.3.so
rlm_eap.so rlm_mschap-1.1.3.so rlm_unix.so
rlm_eap_gtc-1.1.3.so rlm_mschap.so


お~TLS/TTLS関連が入ってるよ~

早速

# freeradius -X
Starting - reading configuration files ...
reread_config: reading radiusd.conf
Config: including file: /etc/freeradius/eap.conf
main: prefix = "/usr"
main: localstatedir = "/var"
main: logdir = "/var/log/freeradius"
main: libdir = "/usr/lib/freeradius"
main: radacctdir = "/var/log/freeradius/radacct"
main: hostname_lookups = no
main: max_request_time = 30
main: cleanup_delay = 5
main: max_requests = 1024
main: delete_blocked_requests = 0
main: port = 0
main: allow_core_dumps = no
main: log_stripped_names = no
main: log_file = "/var/log/freeradius/radius.log"
main: log_auth = no
main: log_auth_badpass = no
main: log_auth_goodpass = no
main: pidfile = "/var/run/freeradius/freeradius.pid"
main: user = "freerad"
main: group = "freerad"
main: usercollide = no
main: lower_user = "no"
main: lower_pass = "no"
main: nospace_user = "no"
main: nospace_pass = "no"
main: checkrad = "/usr/sbin/checkrad"
main: proxy_requests = no
security: max_attributes = 200
security: reject_delay = 1
security: status_server = no
main: debug_level = 0
read_config_files: reading dictionary
read_config_files: reading naslist
Using deprecated naslist file. Support for this will go away soon.
read_config_files: reading clients


おんなじやんけ!!<`~´>

なぜだろう……(-_-;)

2007年06月29日

madwifiのコンパイル!

組込み機器のターゲットで、無線が使いたいのでターゲット上でMADWIFIをコンパイルしてみました。

まずは、ターゲットで使用しているカーネルソースを"/usr/src/"に展開し、"/usr/src/linux"にリンクします。

現在、ターゲット上にはRootNFSを使用してDebianが動いています。
なので、"過去ログ"で書いたとおりに実行!

Checking requirements... ok. Checking kernel configuration... ok. make -C /lib/modules/2.6.21.1/build SUBDIRS=/usr/src/modules/madwifi modules make[1]: Entering directory `/usr/src/linux-2.6.21.1' CC [M] /usr/src/modules/madwifi/ath/if_ath.o In file included from :1: /usr/src/modules/madwifi/ath/../include/compat.h:60:1: error: "__packed" redefid In file included from include/linux/compiler-gcc4.h:4, from include/linux/compiler.h:42, from include/linux/stddef.h:4, from include/linux/kernel.h:12, from /usr/src/modules/madwifi/ath/../include/compat.h:47, from :1: include/linux/compiler-gcc.h:30:1: error: this is the location of the previous n In file included from include/asm/dma-mapping.h:14, from include/linux/dma-mapping.h:34, from include/asm/pci.h:15, from include/linux/pci.h:744, from /usr/src/modules/madwifi/ath/if_ath_pci.h:43, from /usr/src/modules/madwifi/ath/if_ath.c:86: include/linux/mm.h:658:1: error: "offset_in_page" redefined In file included from /usr/src/modules/madwifi/ath/../net80211/if_media.h:44, from /usr/src/modules/madwifi/ath/if_ath.c:66: /usr/src/modules/madwifi/ath/../net80211/ieee80211_linux.h:431:1: error: this in /usr/src/modules/madwifi/ath/if_ath.c:417:60: error: macro "INIT_WORK" passed 32 /usr/src/modules/madwifi/ath/if_ath.c: In function 'ath_attach': /usr/src/modules/madwifi/ath/if_ath.c:417: error: 'INIT_WORK' undeclared (first) /usr/src/modules/madwifi/ath/if_ath.c:417: error: (Each undeclared identifier ie /usr/src/modules/madwifi/ath/if_ath.c:417: error: for each function it appears ) /usr/src/modules/madwifi/ath/if_ath.c: In function 'ath_vap_create': /usr/src/modules/madwifi/ath/if_ath.c:1149: error: 'struct net_device' has no m' /usr/src/modules/madwifi/ath/if_ath.c: In function 'ath_dynamic_sysctl_register: /usr/src/modules/madwifi/ath/if_ath.c:9573: error: too many arguments to functi' /usr/src/modules/madwifi/ath/if_ath.c: In function 'ath_sysctl_register': /usr/src/modules/madwifi/ath/if_ath.c:9727: error: too many arguments to functi' make[3]: *** [/usr/src/modules/madwifi/ath/if_ath.o] Error 1 make[2]: *** [/usr/src/modules/madwifi/ath] Error 2 make[1]: *** [_module_/usr/src/modules/madwifi] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.21.1' make: *** [modules] Error 2

コンパイルエラー!!(?_?)

内容を見ると、ヘッダファイルがどうのこうのと書かれていて、面倒だからmadwifi本家からソースを持ってきました。

で、MADWIFIをコンパイルしてみると、下記のエラーが……(?_?)

madwifi-0.9.3.1# make /bin/sh: line 0: cd: /lib/modules/2.6.21.1/build: No such file or directory Makefile.inc:66: *** /lib/modules/2.6.21.1/build is missing, please set KERNELPATH. Stop.

中を見てみると、"build"と"source"はカーネルをコンパイルしたPATHを指しています。
(クロスコンパイラで、作ったやつだから……仕方がないね~)

2.6.21.1# ls -la total 128 drwxr-xr-x 3 root root 4096 Jun 29 06:45 . drwxr-xr-x 3 root root 4096 Jun 29 04:55 .. lrwxrwxrwx 1 root root 70 Jun 29 06:45 build -> /home/…/linux-2.6.21.1 省略 lrwxrwxrwx 1 root root 70 Jun 29 06:45 source -> /home/…/linux-2.6.21.1

リンクを"/usr/src/linux"に張りなおし、再度コンパイル!

madwifi-0.9.3.1# make Checking requirements... ok. Checking kernel configuration... ok. make -C /lib/modules/2.6.21.1/build SUBDIRS=/root/madwifi/madwifi-0.9.3.1 moduls make[1]: Entering directory `/usr/src/linux-2.6.21.1' CC [M] /root/madwifi/madwifi-0.9.3.1/ath/if_ath.o /bin/sh: scripts/basic/fixdep: cannot execute binary file make[3]: *** [/root/madwifi/madwifi-0.9.3.1/ath/if_ath.o] Error 126 make[2]: *** [/root/madwifi/madwifi-0.9.3.1/ath] Error 2 make[1]: *** [_module_/root/madwifi/madwifi-0.9.3.1] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.21.1' make: *** [modules] Error 2

何だ!!(?_?)

ファイルが実行できない?

ふ~ん……

madwifiのディレクトリには、"fixdep"なんてファイルはないから、"/usr/src/linux"の方かな~

!!ビンゴ!!

linux# find . -name fixdep ./scripts/basic/fixdep

で、実行してみたら確かに動かない。

linux# ./scripts/basic/fixdep -bash: ./scripts/basic/fixdep: cannot execute binary file

まぁ、このソースはクロスコンパイラでターゲット用にコンパイルしたソースをそのまま持ってきてるかなな~っと言う事で、ターゲット上で

linux# make oldconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/kxgettext.o HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf -o arch/powerpc/Kconfig * * Linux Kernel Configuration * 省略

やっぱり、(-_-;)
ここで、作ってんのかよ……

さぁ、これでどうだ!!

madwifi-0.9.3.1# make Checking requirements... ok. Checking kernel configuration... ok. make -C /lib/modules/2.6.21.1/build SUBDIRS=/root/madwifi/madwifi-0.9.3.1 moduls make[1]: Entering directory `/usr/src/linux-2.6.21.1' CC [M] /root/madwifi/madwifi-0.9.3.1/ath/if_ath.o 省略 LD [M] /root/madwifi/madwifi-0.9.3.1/net80211/wlan_scan_ap.o Building modules, stage 2. MODPOST 13 modules /bin/sh: scripts/mod/modpost: cannot execute binary file make[2]: *** [__modpost] Error 126 make[1]: *** [modules] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.21.1' make: *** [modules] Error 2

ぎゃふん!!(>_<)
カーネルをコンパイルしないといけないとですか!!

そんな時間はもったいないので、コンパイルを実行して途中で止めました!(^^ゞ

linux# make scripts/kconfig/conf -s arch/powerpc/Kconfig CHK include/linux/version.h CHK include/linux/utsrelease.h CC arch/powerpc/kernel/asm-offsets.s GEN include/asm-powerpc/asm-offsets.h CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/mod/modpost CC init/main.o CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o CC init/do_mounts.o

どれどれ、madwifiをコンパイルしてみますか!

madwifi-0.9.3.1# make Checking requirements... ok. Checking kernel configuration... ok. make -C /lib/modules/2.6.21.1/build SUBDIRS=/root/madwifi/madwifi-0.9.3.1 moduls make[1]: Entering directory `/usr/src/linux-2.6.21.1' Building modules, stage 2. MODPOST 13 modules CC /root/madwifi/madwifi-0.9.3.1/ath/ath_pci.mod.o 省略 LD [M] /root/madwifi/madwifi-0.9.3.1/net80211/wlan_xauth.ko make[1]: Leaving directory `/usr/src/linux-2.6.21.1' make -C ./tools all || exit 1 make[1]: Entering directory `/root/madwifi/madwifi-0.9.3.1/tools' gcc -o athstats -g -O2 -Wall -I. -I../hal -I.. -I../ath athstats.c gcc -o 80211stats -g -O2 -Wall -I. -I../hal -I.. 80211stats.c gcc -o athkey -g -O2 -Wall -I. -I../hal -I.. athkey.c gcc -o athchans -g -O2 -Wall -I. -I../hal -I.. athchans.c gcc -o athctrl -g -O2 -Wall -I. -I../hal -I.. athctrl.c gcc -o athdebug -g -O2 -Wall -I. -I../hal -I.. athdebug.c gcc -o 80211debug -g -O2 -Wall -I. -I../hal -I.. 80211debug.c gcc -o wlanconfig -g -O2 -Wall -I. -I../hal -I.. wlanconfig.c make[1]: Leaving directory `/root/madwifi/madwifi-0.9.3.1/tools'

を~でけた!!\(^o^)/

ひょっとして、debianパッケージのmadwifiもコンパイルが通るかな~?

っと、思ったら!

ダメジャン!!
きっとdebianのモジュールツールがmadwifiをコンパイルするのに必要な何かが足りないんだろうな~

気を取り直して、本家ソースをインストール!

madwifi-0.9.3.1# make install sh scripts/find-madwifi-modules.sh 2.6.21.1 for i in ./ath ./ath_hal ./ath_rate ./net80211; do \ make -C $i install || exit 1; \ done 省略 install -d /usr/local/man/man8 install -m 0644 man/*.8 /usr/local/man/man8 make[1]: Leaving directory `/root/madwifi/madwifi-0.9.3.1/tools'

続けて、モジュールの読込み!

madwifi-0.9.3.1# modprobe ath-pci ath_hal: module license 'Proprietary' taints kernel. ath_hal: 0.9.18.0 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413, REGO) wlan: 0.8.4.2 (0.9.3.1) ath_pci: 0.9.4.5 (0.9.3.1) ath_rate_sample: 1.2 (0.9.3.1) wifi0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 3s wifi0: H/W encryption support: WEP AES AES_CCM TKIP wifi0: mac 5.6 phy 4.1 radio 3.6 wifi0: Use hw queue 1 for WME_AC_BE traffic wifi0: Use hw queue 0 for WME_AC_BK traffic wifi0: Use hw queue 2 for WME_AC_VI traffic wifi0: Use hw queue 3 for WME_AC_VO traffic wifi0: Use hw queue 8 for CAB traffic wifi0: Use hw queue 9 for beacons wifi0: Atheros 5212: mem=0xb0000000, irq=21

を!!

madwifi-0.9.3.1# iwconfig 省略 Warning: Driver for device ath0 has been compiled with version 22 of Wireless Extension, while this program supports up to version 20. Some things may be broken... ath0 IEEE 802.11b ESSID:"" Nickname:"" Mode:Managed Channel:0 Access Point: Not-Associated Bit Rate:0 kb/s Tx-Power:0 dBm Sensitivity=0/3 Retry:off RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

Warningか……
wireless-toolsを入れ替える必要があるのかな~

2007年06月30日

iwconfigのWarning!

先日、下記のWarningが出ていた件ですが

madwifi-0.9.3.1# iwconfig 省略 Warning: Driver for device ath0 has been compiled with version 22 of Wireless Extension, while this program supports up to version 20. Some things may be broken... ath0 IEEE 802.11b ESSID:"" Nickname:"" Mode:Managed Channel:0 Access Point: Not-Associated Bit Rate:0 kb/s Tx-Power:0 dBm Sensitivity=0/3 Retry:off RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0

とりあえず、本家のwireless-toolsからversion29-pre22を持ってきて

wireless_tools.29# make wireless_tools.29# make install

とすることで、解決できました。

2007年07月03日

madwifiを変更!したかった……

本家のソースでもいいのですが、やっぱりDebianパッケージを使いたいので再挑戦!

前回のエラーは、どうも組込み向けに新しいカーネルを使っているため発生しているようです。

カーネルを変えるのは結構大変なので、パッケージにtestingを使ってみたいと思います。

# aptitude install madwifi-tools/testing madwifi-doc/testing madwifi-source/testing

"module-assistant"はstableを使っても大丈夫みたいですね~

# m-a prepare # m-a a-i madwifi 省略 Updated infos about 1 packages Getting source for kernel version: 2.6.21.1 Kernel headers available in /lib/modules/2.6.21.1/source apt-get install build-essential Reading package lists... Done Building dependency tree... Done build-essential is already the newest version. You might want to run `apt-get -f install' to correct these: The following packages have unmet dependencies: madwifi-modules-2.6.21.1: Depends: linux-image-2.6.21.1 but it is not installr kernel-image-2.6.21.1 but it is not instale E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a . Done! unpack Extracting the package tarball, /usr/src/madwifi.tar.bz2, please wait... Target package file /usr/src/madwifi-modules-2.6.21.1_0.9.3-2_powerpc.deb already exists, not rebuilding! (however, you could use the -f switch to ignore it) dpkg -Ei /usr/src/madwifi-modules-2.6.21.1_0.9.3-2_powerpc.deb (Reading database ... 34861 files and directories currently installed.) Preparing to replace madwifi-modules-2.6.21.1 1:0.9.3-2 (using .../madwifi-modu. Unpacking replacement madwifi-modules-2.6.21.1 ... dpkg: dependency problems prevent configuration of madwifi-modules-2.6.21.1: madwifi-modules-2.6.21.1 depends on linux-image-2.6.21.1 | kernel-image-2.6.21: Package linux-image-2.6.21.1 is not installed. Package kernel-image-2.6.21.1 is not installed. dpkg: error processing madwifi-modules-2.6.21.1 (--install): dependency problems - leaving unconfigured Errors were encountered while processing: madwifi-modules-2.6.21.1 I: Direct installation failed, trying to post-install the dependencies apt-get -f install Reading package lists... Done Building dependency tree... Done Correcting dependencies... Done The following packages will be REMOVED: madwifi-modules-2.6.21.1 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. 1 not fully installed or removed. Need to get 0B of archives. After unpacking 831kB disk space will be freed. Do you want to continue [Y/n]? y (Reading database ... 34861 files and directories currently installed.) Removing madwifi-modules-2.6.21.1 ...

を~!!
インストールに失敗したけどコンパイルは通ったみたいだ!!

どれどれ…手動でインストールしてみるか!

# dpkg -i madwifi-modules-2.6.21.1_0.9.3-2_powerpc.deb Selecting previously deselected package madwifi-modules-2.6.21.1. (Reading database ... 34843 files and directories currently installed.) Unpacking madwifi-modules-2.6.21.1 (from madwifi-modules-2.6.21.1_0.9.3-2_power. dpkg: dependency problems prevent configuration of madwifi-modules-2.6.21.1: madwifi-modules-2.6.21.1 depends on linux-image-2.6.21.1 | kernel-image-2.6.21: Package linux-image-2.6.21.1 is not installed. Package kernel-image-2.6.21.1 is not installed. dpkg: error processing madwifi-modules-2.6.21.1 (--install): dependency problems - leaving unconfigured Errors were encountered while processing: madwifi-modules-2.6.21.1

う~(-_-;)
2.6.21.1のカーネルパッケージがインストールされてないから駄目だとよ……
(組込み向けに、2.6.21.1を使っているけどパッケージにはしていないからな~)

だったら、手動で強制的にインストールしてみますか!

と、言うことでdebファイルを展開

# ar -x madwifi-modules-2.6.21.1_0.9.3-2_powerpc.deb # ls control.tar.gz debian-binary data.tar.gz madwifi-modules-2.6.21.1_0.9.3-2_powerpc.deb

"data.tar.gz"がプログラム(ライブラリ)が入っているので、解凍してコピー!

# tar zxvf data.tar.gz # cp -a lib/modules/2.6.21.1/kernel/drivers/net/* /lib/modules/2.6.21.1/net/

ちなみに、"/lib/modules/2.6.21.1/kernel/driver/net"にコピーすると、modprobeでインストールできません。"/lib/modules/2.6.21.1/net"にコピーする必要があります。

しっかし、何で"/lib/modules/2.6.21.1/net"何だろう。(?_?)
パッケージのデータ的には、"/lib/modules/2.6.21.1/kernel/driver/net"のはずなんだけどね~

で、ふと気がついた!
コピーしたんじゃ、本家をインストールしているのと変わらないんでは……(-_-;)

2007年07月04日

Debianで日本語を使いたい

Debianで日本語を使いたいっと言っても、私の場合はSSH等のターミナルからなので、それほど難しくはないと思う。

PCだったら最初から入っているので、こんな手間は要らないですよ~(^^ゞ

では、必要なパッケージをインストールして

# apt-get install locales

設定をしていきましょう!

# dpkg-reconfigure locales [*] ja_JP.EUC-JP EUC-JP [*] ja_JP.UTF-8 UTF-8

今回は、EUC-JPとUTF-8を選択しました。
で、確認!

# update-locale LANG=ja_JP.UTF-8 # cat /etc/locale.gen | grep ja_JP ja_JP.EUC-JP EUC-JP ja_JP.UTF-8 UTF-8 export LANG=ja_JP.UTF-8 # man マニュアルページを指定してください

PuTTY経由で確認したら、ちゃんと表示された!!\(^o^)/

ユーザでの日本語設定

ユーザでの設定は、"set-language-env"を使用しました。

~$ set-language-env Setting up users' native language environment by modifying their dot-files. Type "set-language-env -h" for help. 1 : be (Bielaruskaja,Belarusian) 2 : bg (Bulgarian) 3 : ca (Catala,Catalan) 4 : da (Dansk,Danish) 5 : de (Deutsch,German) 6 : es (Espanol,Spanish) 7 : fr (Francais,French) 8 : ja (Nihongo,Japanese) 9 : ko (Hangul,Korean) 10 : lt (Lietuviu,Lithuanian) 11 : mk (Makedonski,Macedonian) 12 : pl (Polski,Polish) 13 : ru (Russkii,Russian) 14 : sr (Srpski,Serbian) 15 : th (Thai) 16 : tr (Turkce,Turkish) 17 : uk (Ukrajins'ka,Ukrainian) Input number > 8 package ICHIRAN WO SYUTOKU SHITE IMASU... Canna server GA UGOITE IMASEN. network NO DOKOKA BETSUNO computer DE Canna server GA UGOITE IMASUKA [y/N] n Wnn server GA UGOITE IMASEN. network NO DOKOKA BETSUNO computer DE Wnn server GA UGOITE IMASUKA [y/N] n SKK server GA UGOITE IMASEN. network NO DOKOKA BETSUNO computer DE SKK server GA UGOITE IMASUKA [y/N] n Anthy GA UGOITE IMASEN. PRIME GA UGOITE IMASEN. KANJI HENKAN NIHA DORE WO TSUKAI MASUKA 1=Canna 2=Wnn 3=SKK 4=Anthy 5=PRIME 6=none (1..6, [Enter]=1) 6 NIHONGO NIHA KANKEINO NAI SAMAZAMANA SETTEIWO OKONAI MASUKA [Y/n] y ------- /home/user/.Xresources -------- X Window System DE UGOKU program NO SETTEI DESU. SETTEI WO OKONAI MASUKA [Y/n] n SETTEI SHIMASEN. ------- /home/user/.bash_profile -------- bash SHIYOU JI NI, login JI NI JIKKOU SAREMASU. TAN-NI, .bashrc WO JIKKOU SURU DAKENO NAIYOU DESU. SETTEI WO OKONAI MASUKA [Y/n] y SETTEI SHIMASU ... ------- /home/user/.bashrc -------- bash GA KIDOU SURU TOKI NI JIKKOU SAREMASU. SAMAZAMA NA SETTEI WO SHITEIRU NODE, MEWO TOOSHITE OITE KUDASAI. SETTEI WO OKONAI MASUKA [Y/n] y SETTEI SHIMASU ... ------- /home/user/.canna -------- Canna NO SETTEI DESU. SETTEI WO OKONAI MASUKA [Y/n] n SETTEI SHIMASEN. ------- /home/user/.cshrc -------- csh NO KIDOU JI NI JIKKOU SAREMASU. SAMAZAMA NA SETTEI WO SHITEIRU NODE, MEWO TOOSHITE OITE KUDASAI. SETTEI WO OKONAI MASUKA [Y/n] n SETTEI SHIMASEN. ------- /home/user/.emacs -------- emacs NO SETTEI DESU. emacs20, emacs21 NI TAIOU SHITE IMASU. xemacs21 HA, .xemacs/init.el DE SETTEI SIMASU. SETTEI WO OKONAI MASUKA [Y/n] n SETTEI SHIMASEN. ------- /home/user/.inputrc -------- bash NADO, readline library WO MOCHIITA program NO SETTEI DESU. SETTEI WO OKONAI MASUKA [Y/n] y SETTEI SHIMASU ... ------- /home/user/.xsession -------- xdm WO TSUKATTE X Window System NI login SHITA TOKI NI JIKKOU SAREMASU. MATA, startx YA xinit WO TSUKATTE X WO KIDOU SHITA TOKI NIMO JIKKOU SAREMASU. SETTEI WO OKONAI MASUKA [Y/n] n SETTEI SHIMASEN. ------- /home/user/.xemacs/init.el -------- xemacs21 NO SETTEI DESU. SETTEI WO OKONAI MASUKA [Y/n] n SETTEI SHIMASEN. -------------------- SETTEI GA SYUURYOU SHIMASHIA. SETTEI WO YUUKOU NI SURUNIHA, ICHIDO logout SHITEKARA, FUTATABI login SHITE KUDASAI. SOREZORE NO dotfile WO YONDE, DONOYOUNI HENKOU SARETAKA, KAKUNIN SHITE KUDASAI. KINI IRANAI SETTEI HA, CHOKUSETSU HENKOU SURUKA, 'language-env end' IKOU NO GYOU NI SAI-SETTEI WO KAKI-KUWAETE KUDASAI. KUWASIKUHA, /usr/share/doc/language-env/README.ja.eucJP.gz WO SANSYOU SHITE KUDASAI. IKA NI SHIMESU package WO install SHITE KUDASAI. ja-trans, manpages-ja [Enter] key WO OSUTO KONO set-language-env HA SYUURYOU SHIMASU.

2007年07月26日

Debianのリカバリー

え~

開発に使ってたDebianマシンが起動しなくなりました。(T_T)

まぁ、重要なデータは別サーバで管理しているので問題はないのですが、開発環境はDebianマシンに組んでいたのでショックです。

とりあえず、必要なデータが入っていないかの確認用に1CD-Linuxをダウンロードして起動してみたのですが、なんと!!

ほとんどの1CD-LinuxがLVMを扱えるようになっていません……orz


試してみた1CD-Linuxは

Knoppix
BerryLinux
DebianLive

で、siduxも試したかったのですが、手元に700MBCD-Rが無くて断念!!


仕方がないので、HDDを抜いてSATA-USB変換機に接続し、実験用のDebianマシンに接続してサルベージという方法をとりました。


まずは、LVMが使えるように必要なパッケージをインストールします。

# apt-get install lvm2 lvm-common

モジュールが使用できるようになっているか確認

# lsmod | grep dm dm_snapshot 15552 0 dm_mirror 19152 0 dm_mod 50232 2 dm_snapshot,dm_mirror

SATA-USB変換機をサルベージマシンに接続し

# modprobe usb-storage # cat /proc/partitions major minor #blocks name 3 0 160086528 hda 3 1 979933 hda1 3 2 979965 hda2 3 3 158119762 hda3 8 0 244197527 sda 8 1 248976 sda1 8 2 1 sda2 8 5 243946993 sda5

USBに接続したHDDのパーティション(sda*)が見えていることを確認出来たので、VG Nameを確認します。

# pvdisplay /dev/sda5 --- Physical volume --- PV Name /dev/sda5 VG Name development PV Size 232.64 GB / not usable 0 Allocatable yes (but full) PE Size (KByte) 4096 Total PE 59557 Free PE 0 Allocated PE 59557 PV UUID gqzXpY-do40-W1uC-2uLP-CbfN-0vmt-qjhuch

VG Nameが"development"と言うことがわかりました。
VGの内容は下記のようにすることで確認できます。

# vgdisplay development --- Volume group --- VG Name development System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 232.64 GB PE Size 4.00 MB Total PE 59557 Alloc PE / Size 59557 / 232.64 GB Free PE / Size 0 / 0 VG UUID Y7UvBZ-z1gX-DNsP-W49J-Tx2B-22UY-anSdly

上記でLVが2個あることがわかったので、LVの内容を確認しましょう!

# lvdisplay development --- Logical volume --- LV Name /dev/development/root VG Name development LV UUID D8Tt9n-0d9V-LdOb-wrab-qkVZ-nRx3-9zH239 LV Write Access read/write LV Status NOT available LV Size 231.19 GB Current LE 59185 Segments 1 Allocation inherit Read ahead sectors 0   --- Logical volume --- LV Name /dev/development/swap_1 VG Name plextor LV UUID bGnZpX-c2WP-d2ut-MDXq-62gQ-qbfO-HJUJFI LV Write Access read/write LV Status NOT available LV Size 1.45 GB Current LE 372 Segments 1 Allocation inherit Read ahead sectors 0

LVとして、"root"と"swap_1"が有る事がわかりました。

今回は、必要なデータが有るかどうか知りたいだけなので、ターゲットは"/dev/development/root"と言う事がこれでわかります。

下記コマンドで、ボリュームを有効にします。

# vgchange -a y 2 logical volume(s) in volume group "development" now active

後は、"dd"コマンドでバックアップを取っておいてからマウントしてみます。
(バックアップを取るときは、空き容量に気をつけてください)

# mount /dev/development/root /media/usbdisk

重要なデータが無いことを確認出来たので、原因を調べてみました。

原因は、なぜかEmbedded Debianのパッケージが起動に必要なパッケージを上書きしていることがわかりました。(ーー;)

たぶん、Emdebianをいじって遊んでいるときに何かをしてしまったのかもしれません……

しっかし、結構な量のEmdebianパッケージがインストールされています。
アーキテクチャが違うからインストールできないと思ってたけどな~

パッケージを削除して、再インストールするのは面倒なのでここはHDDが壊れていないことを確認して再インストールしました。

HDDが壊れていないかの確認は、umountして

# umount /media/usbdisk

HDDをチェックします。

# e2fsck -c -c -C -f /dev/development/root

HDDを外す時は、ボリュームを無効化し

# vgchange -a n

次に、USB-HDDを抜ける状態にします。

# modprobe -r usb-storage

HDDがはずせるようになったかは、"dmesg"コマンドで下記メッセージが出ていれば問題ないと思います。

usbcore: deregistering driver usb-storage

2007年07月27日

Debianのインストール

とりあえず、HDDには問題がなさそうなので再インストールしてみました。
でも、インストーラでLVMって細かく指定できないんだね~(-_-;)

なので、インストール時にLVMガイダンスで自動作成して、起動後にリサイズすることにしました。

起動時のLVの様子。

# lvs LV VG Attr LSize Origin Snap% Move Log Copy% home development -wi-ao 223.38G root development -wi-ao 6.68G swap_1 development -wi-ao 2.59G

まずは、スワップから試してみよう!!

# swapoff -a # lvresize -L 1G /dev/development/swap_1 WARNING: Reducing active and open logical volume to 1.00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce swap_1? [y/n]: y Reducing logical volume swap_1 to 1.00 GB Logical volume swap_1 successfully resized # mkswap /dev/development/swap_1 # swapon -a # free total used free shared buffers cached Mem: 2589040 513292 2075748 0 50220 241144 -/+ buffers/cache: 221928 2367112 Swap: 976552 0 976552 # lvs LV VG Attr LSize Origin Snap% Move Log Copy% home development -wi-ao 223.38G root development -wi-ao 6.68G swap_1 development -wi-ao 1.00G

を~

ちゃんと変更されてる!

で、実は/homeはXFSなのでサイズの縮小は出来ないので強引に

# umount /home # lvresize -L 200G /dev/development/home WARNING: Reducing active and open logical volume to 200.00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce home? [y/n]: y Reducing logical volume home to 200.00 GB Logical volume home successfully resized # mkfs.xfs -f /dev/development/home Warning - device mapper device, but no dmsetup(8) found Warning - device mapper device, but no dmsetup(8) found meta-data=/dev/plextor/home isize=256 agcount=16, agsize=3276800 blks = sectsz=512 attr=0 data = bsize=4096 blocks=52428800, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=25600, version=1 = sectsz=512 sunit=0 blks realtime =none extsz=65536 blocks=0, rtextents=0 # mount /home/ # lvs LV VG Attr LSize Origin Snap% Move Log Copy% home plextor -wi-ao 200.00G root plextor -wi-ao 6.68G swap_1 plextor -wi-ao 1.00G

後はユーザディレクトリを設定して"/home"は終了!

# vgs VG #PV #LV #SN Attr VSize VFree plextor 1 3 0 wz--n- 232.64G 24.97G

24.97G空きが出来なので"/"に追加!

# lvextend -L +24.97G /dev/plextor/root Rounding up size to full physical extent 24.97 GB Extending logical volume root to 31.65 GB Insufficient suitable allocatable extents for logical volume root: 1 more required

サイズ変更できない……

# lvextend -L +24.96G /dev/plextor/root Rounding up size to full physical extent 24.96 GB Extending logical volume root to 31.64 GB Logical volume root successfully resized # lvs LV VG Attr LSize Origin Snap% Move Log Copy% home plextor -wi-ao 200.00G root plextor -wi-ao 31.64G swap_1 plextor -wi-ao 1.00G

出来た!\(^o^)/

"/"はumount出来ないので、オンラインリサイズを試してみる!
まずは、パッケージをインストール。

# apt-get install ext2resize Reading package lists... Done Building dependency tree... Done The following NEW packages will be installed: ext2resize 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 209kB of archives. After unpacking 377kB of additional disk space will be used. Get:1 http://ftp.jp.debian.org etch/main ext2resize 1.1.19-9 [209kB] Fetched 209kB in 0s (283kB/s) Selecting previously deselected package ext2resize. (Reading database ... 80443 files and directories currently installed.) Unpacking ext2resize (from .../ext2resize_1.1.19-9_i386.deb) ... Setting up ext2resize (1.1.19-9) ...

で、リサイズを実行!

# ext2online /dev/plextor/root ext2online v1.1.19 - 2001/03/18 for EXT2FS 0.5b plextor:/home# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/plextor-root 32656216 2719500 28282256 9% / tmpfs 1294520 0 1294520 0% /lib/init/rw udev 10240 60 10180 1% /dev tmpfs 1294520 0 1294520 0% /dev/shm /dev/sda1 241116 13280 215388 6% /boot /dev/mapper/plextor-home 209612800 1396 209611404 1% /home

ほ~うまく行ってるみたいだ!


ちなみに、XFSはサイズの縮小は出来ずに拡大は"xfs_growfs"コマンドでオンライン可能、EXT2/EXT3のサイズ縮小はオンラインで出来ないので、"umount"してから"fsck.ext2 or ext3"コマンドで整合性をチェック後に"resize2fs"コマンドでサイズ縮小する事ができるらしい。

S.M.A.R.T.の対応状況

S.M.A.R.T.のデータを取得するには、下記パッケージをインストール

# apt-get install smartmontools

で、データを取得

# smartctl -i /dev/sda smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/   Device: ATA HDT722525DLA380 Version: V44O Serial number: VDB41BT4E1N9NC Device type: disk Local Time is: Fri Jul 27 16:23:18 2007 JST Device does not support SMART

なんと!!

サポートしてないってか……orz

調べてみたら、"-d ata"を追加したらいいみたいだ!

# smartctl -d ata -i /dev/sda smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Device Model: HDT722525DLA380 Serial Number: VDB41BT4E1N9NC Firmware Version: V44OA96A User Capacity: 250,058,268,160 bytes Device is: Not in smartctl database [for details use: -P showall] ATA Version is: 7 ATA Standard is: ATA/ATAPI-7 T13 1532D revision 1 Local Time is: Fri Jul 27 16:28:36 2007 JST SMART support is: Available - device has SMART capability. SMART support is: Disabled SMART Disabled. Use option -s with argument 'on' to enable it.

う~ん
SMARTがOFFになっているみたいだ!

# smartctl --smart=on --offlineauto=on --saveauto=on -d ata /dev/sda -T permissive smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/   === START OF ENABLE/DISABLE COMMANDS SECTION === SMART Enabled. Error SMART Enable Auto-save failed: Input/output error Smartctl: SMART Enable Attribute Autosave Failed.   Error SMART Enable Automatic Offline failed: Input/output error Smartctl: SMART Enable Automatic Offline Failed.

offlineautoとsaveautoが対応していないみたいだ

# smartctl --smart=on -d ata /dev/sda -T permissive smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/   === START OF ENABLE/DISABLE COMMANDS SECTION === SMART Enabled.

よしよし

# smartctl -d ata -i -a /dev/sda smartctl version 5.36 [i686-pc-linux-gnu] Copyright (C) 2002-6 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Device Model: HDT722525DLA380 Serial Number: VDB41BT4E1N9NC Firmware Version: V44OA96A User Capacity: 250,058,268,160 bytes Device is: Not in smartctl database [for details use: -P showall] ATA Version is: 7 ATA Standard is: ATA/ATAPI-7 T13 1532D revision 1 Local Time is: Fri Jul 27 16:39:17 2007 JST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x80) Offline data collection activity was never started. Auto Offline Data Collection: Enabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: (4797) seconds. Offline data collection capabilities: (0x5b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. No Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 1) minutes. Extended self-test routine recommended polling time: ( 80) minutes. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000b 100 100 016 Pre-fail Always - 1 2 Throughput_Performance 0x0005 100 100 050 Pre-fail Offline - 0 3 Spin_Up_Time 0x0007 121 121 024 Pre-fail Always - 316 (Average 262) 4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 30 5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0 7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0 8 Seek_Time_Performance 0x0005 100 100 020 Pre-fail Offline - 0 9 Power_On_Hours 0x0012 099 099 000 Old_age Always - 8625 10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 30 192 Power-Off_Retract_Count 0x0032 100 100 050 Old_age Always - 388 193 Load_Cycle_Count 0x0012 100 100 050 Old_age Always - 388 194 Temperature_Celsius 0x0002 152 152 000 Old_age Always - 36 (Lifetime Min/Max 14/44) 196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0 197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x000a 200 253 000 Old_age Always - 0 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 No self-tests have been logged. [To run self-tests, use: smartctl -t] Warning! SMART Selective Self-Test Log Structure error: invalid SMART checksum. SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.

まぁ、これでしばらく監視しないとね~

2007年08月13日

NFS-RootのSWAP

組み込みの開発をしていて、どーしてもターゲット上でコンパイルしないとコンパイルできないソフトがたまにあります。

で、以前から使用していたのですが、そー言えば書いてないな~

と言うわけで

Wikiに追記しました。
NFS RootでSWAPを有効にする方法

2007年08月19日

Etch上にSarge環境を作る方法

以前から、個人ではEtch上にSarge環境を作って開発 or テスト環境として使用していたのだが、「Debian 徹底入門」で有名な武藤さんがブログに下記の記事を投稿された。

Etch/Sidの上にSarge環境を作る方法

さすが、私は個人的にしか使っていなかったので他ユーザのことを意識したことは無いのですが、上記を見るとなるほど~っと感心してしまう。

組込み関係の仕事をしていると、開発環境をチーム全員に配ることが有ったりするが全員がDebianを使用しているわけでもなく、新しいPCを用意するのも無理なのでVirtualPCかVMwareとかで配布しようかな~っとか、思ったりしているのだが(現状はインストーラを作成したり詳細を記述したドキュメントを作成したりと、手間隙が掛かって仕方がない……まぁ、本当はそれが一番いいんだけどね。(-_-;)……)、面倒なので開発専用PCを用意してそこにログインしてもらい。ターゲットボード毎にchroot環境を構築してもいいかもしれない!

武藤さんの方法で作成した環境であれば、各ユーザにログイン許可が出来るので安全だし、全員がLinuxに詳しいわけでもないから説明が楽だよね~壊されても復旧が楽だし。(^^♪

次のプロジェクトから採用してみようかな。

2007年08月29日

Busybox+uClibc

BusyboxとuClibcでちょっと遊んでみようかと思いいじってみたが……な結果になってしまった。

ターゲットはPowerPCとして、クロスコンパイラはDebianのものを使用する。


まずは、uClibc-0.9.29をコンパイルする。

# make defconfig # make 省略 #uclibc CC libc/sysdeps/linux/common/sbrk.os CC libc/sysdeps/linux/common/sched_get_priority_max.os CC libc/sysdeps/linux/common/sched_get_priority_min.os CC libc/sysdeps/linux/common/sched_getaffinity.os libc/sysdeps/linux/common/sched_getaffinity.c: In function `__syscall_sched_getaffinity': libc/sysdeps/linux/common/sched_getaffinity.c:35: error: `' undeclared (first use in this function) libc/sysdeps/linux/common/sched_getaffinity.c:35: error: (Each undeclared identifier is reported only once libc/sysdeps/linux/common/sched_getaffinity.c:35: error: for each function it appears in.) make[1]: *** [libc/sysdeps/linux/common/sched_getaffinity.os] Error 1 make: *** [lib/libc.so.0] Error 2

まぁ、すんなりいくとは思っていないのでググって見る。

パッチを発見した!

ここからuClibc-0.9.29-conditional-sched_affinity.patchをダウンロードしてパッチを当てる。

それ!!

AS lib/crti.o AS lib/crtn.o STRIP -x -R .note -R .comment lib/libc.a AR cr lib/libc.a STRIP -x -R .note -R .comment lib/uclibc_nonshared.a AR cr lib/uclibc_nonshared.a AR cr libc/libc_so.a LD libuClibc-0.9.29.so libc/libc_so.a(pread_write.os): In function `pwrite64': pread_write.c:(.text+0x58): undefined reference to `__illegally_sized_syscall_arg4' make[1]: *** [lib/libc.so] Error 1 make: *** [lib/libc.so.0] Error 2

ふ~ん……

色々調べたら、下記をDisableにすればよさそう!

General Library Settings ---> Large File Support

えいや!!

\(^o^)/ コンパイルが通ったぞ!!


次にbusybox-1.7.0をダウンロードしてコンパイル。

# export CFLAGS='-I /usr/powerpc-linux-uclibc/usr/include -nostdlib -L /usr/powerpc-linux-uclibc/lib -L /usr/powerpc-linux-uclibc/usr/lib' # make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- menuconfig # make ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- 省略 from runit/runsv.c:32: runit/runsv.c: In function `gettimeofday_ns': runit/runsv.c:134: error: `__NR_clock_gettime' undeclared (first use in this function) runit/runsv.c:134: error: (Each undeclared identifier is reported only once runit/runsv.c:134: error: for each function it appears in.) make[1]: *** [runit/runsv.o] Error 1 make: *** [runit] Error 2

runsvか~
使いそうに無いからBusyboxの下記項目をDisableにしたれ!!

Runit Utilities ---> runsv

再度コンパイル

Trying libraries: crypt m Failed: powerpc-linux-gnu-gcc -o busybox_unstripped -Wl,-Map -Wl,busybox_unstripped.map -Wl,--warn-common -Wl,--sort-common -Wl,--gc-sections -Wl,--start-group applets/built-in.o archival/lib.a archival/libunarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a ipsvd/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a archival/built-in.o archival/libunarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o ipsvd/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -Wl,--end-group archival/lib.a(tar.o): In function `writeTarFile': tar.c:(.text.writeTarFile+0x11c): undefined reference to `fcntl64' coreutils/lib.a(cal.o): In function `cal_main': cal.c:(.text.cal_main+0x33a): undefined reference to `__stdout' cal.c:(.text.cal_main+0x33e): undefined reference to `__stdout' cal.c:(.text.cal_main+0x374): undefined reference to `__fputc_unlocked' coreutils/lib.a(catv.o): In function `catv_main': 省略 libbb/lib.a(login.o): In function `print_login_issue': login.c:(.text.print_login_issue+0xcc): undefined reference to `__fgetc_unlocked' login.c:(.text.print_login_issue+0x1f4): undefined reference to `__fgetc_unlocked' libbb/lib.a(str_tolower.o): In function `str_tolower': str_tolower.c:(.text.str_tolower+0x16): undefined reference to `__ctype_tolower' str_tolower.c:(.text.str_tolower+0x1a): undefined reference to `__ctype_tolower' libbb/lib.a(update_passwd.o): In function `update_passwd': update_passwd.c:(.text.update_passwd+0x1cc): undefined reference to `fcntl64' update_passwd.c:(.text.update_passwd+0x270): undefined reference to `fcntl64' collect2: ld returned 1 exit status make: *** [busybox_unstripped] Error 1

uClibcの下記項目をDisableにすると解決!
(これでいいのか?)

String and Stdio Support ---> Provide a macro version of getc() String and Stdio Support ---> Provide a macro version of putc()

LINK busybox_unstripped Trying libraries: crypt m Failed: powerpc-linux-gnu-gcc -o busybox_unstripped -Wl,-Map -Wl,busybox_unstripped.map -Wl,--warn-common -Wl,--sort-common -Wl,--gc-sections -Wl,--start-group applets/built-in.o archival/lib.a archival/libunarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a ipsvd/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a archival/built-in.o archival/libunarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o ipsvd/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -Wl,--end-group coreutils/lib.a(sort.o): In function `get_key': sort.c:(.text.get_key+0x2be): undefined reference to `__ctype_toupper' sort.c:(.text.get_key+0x2c2): undefined reference to `__ctype_toupper' editors/lib.a(awk.o): In function `awk_split': awk.c:(.text.awk_split+0x1ca): undefined reference to `__ctype_toupper' awk.c:(.text.awk_split+0x1ce): undefined reference to `__ctype_toupper' awk.c:(.text.awk_split+0x1de): undefined reference to `__ctype_tolower' awk.c:(.text.awk_split+0x1e2): undefined reference to `__ctype_tolower' editors/lib.a(vi.o): In function `get_one_address': vi.c:(.text.get_one_address+0x4e): undefined reference to `__ctype_tolower' vi.c:(.text.get_one_address+0x52): undefined reference to `__ctype_tolower' editors/lib.a(vi.o): In function `do_cmd': vi.c:(.text.do_cmd+0x31a): undefined reference to `__ctype_tolower' editors/lib.a(vi.o):vi.c:(.text.do_cmd+0x31e): more undefined references to `__ctype_tolower' follow editors/lib.a(vi.o): In function `do_cmd': vi.c:(.text.do_cmd+0x150a): undefined reference to `__ctype_toupper' vi.c:(.text.do_cmd+0x1512): undefined reference to `__ctype_toupper' vi.c:(.text.do_cmd+0x152e): undefined reference to `__ctype_tolower' vi.c:(.text.do_cmd+0x1536): undefined reference to `__ctype_tolower' modutils/lib.a(insmod.o): In function `print_load_map': insmod.c:(.text.print_load_map+0x296): undefined reference to `__ctype_tolower' insmod.c:(.text.print_load_map+0x29a): undefined reference to `__ctype_tolower' networking/lib.a(dnsd.o): In function `convname': dnsd.c:(.text.convname+0x22): undefined reference to `__ctype_tolower' networking/lib.a(dnsd.o):dnsd.c:(.text.convname+0x26): more undefined references to `__ctype_tolower' follow networking/lib.a(ifupdown.o): In function `setlocalenv': ifupdown.c:(.text.setlocalenv+0x62): undefined reference to `__ctype_toupper' ifupdown.c:(.text.setlocalenv+0x66): undefined reference to `__ctype_toupper' networking/lib.a(ipcalc.o): In function `ipcalc_main': ipcalc.c:(.text.ipcalc_main+0x276): undefined reference to `__ctype_tolower' ipcalc.c:(.text.ipcalc_main+0x27a): undefined reference to `__ctype_tolower' networking/lib.a(nslookup.o): In function `server_print': nslookup.c:(.text.server_print+0x2): undefined reference to `_res' nslookup.c:(.text.server_print+0xe): undefined reference to `_res' networking/lib.a(nslookup.o): In function `set_default_dns': nslookup.c:(.text.set_default_dns+0x22): undefined reference to `_res' nslookup.c:(.text.set_default_dns+0x26): undefined reference to `_res' networking/lib.a(wget.o): In function `gethdr': wget.c:(.text.gethdr+0x6e): undefined reference to `__ctype_tolower' wget.c:(.text.gethdr+0x72): undefined reference to `__ctype_tolower' libbb/lib.a(str_tolower.o): In function `str_tolower': str_tolower.c:(.text.str_tolower+0x16): undefined reference to `__ctype_tolower' str_tolower.c:(.text.str_tolower+0x1a): undefined reference to `__ctype_tolower' collect2: ld returned 1 exit status make: *** [busybox_unstripped] Error 1

も~
面倒くさいな~(-_-;)

uClibcの下記項目をDisable!

String and Stdio Support ---> Use Table Versions Of 'ctype.h' Functions.

再度、uClibcをコンパイル・インストール!

Busyboxをコンパイルすると

Trying libraries: crypt m Failed: powerpc-linux-gnu-gcc -o busybox_unstripped -Wl,-Map -Wl,busybox_unstripped.map -Wl,--warn-common -Wl,--sort-common -Wl,--gc-sections -Wl,--start-group applets/built-in.o archival/lib.a archival/libunarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a ipsvd/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a archival/built-in.o archival/libunarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o ipsvd/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -Wl,--end-group networking/lib.a(nslookup.o): In function `server_print': nslookup.c:(.text.server_print+0x2): undefined reference to `_res' nslookup.c:(.text.server_print+0xe): undefined reference to `_res' networking/lib.a(nslookup.o): In function `set_default_dns': nslookup.c:(.text.set_default_dns+0x22): undefined reference to `_res' nslookup.c:(.text.set_default_dns+0x26): undefined reference to `_res' collect2: ld returned 1 exit status make: *** [busybox_unstripped] Error 1

nslookupか……

とりあえずBusyboxの下記項目をDisable

Networking Utilities ---> nslookup をdisable

やった~!
コンパイルが通った!

あれ(?_?)

リンクライブラリがglibcだぞ!

# export LDFLAGS='-nostdlib -L /usr/powerpc-linux-uclibc/lib'

どれどれ、どうですか?

attempt to open /usr/powerpc-linux-uclibc/lib/libm.so failed attempt to open /usr/powerpc-linux-uclibc/lib/libm.a failed attempt to open /usr/lib/gcc-lib/powerpc-linux-gnu/3.3.6/libm.so failed attempt to open /usr/lib/gcc-lib/powerpc-linux-gnu/3.3.6/libm.a failed attempt to open /usr/lib/gcc-lib/powerpc-linux-gnu/3.3.6/../../../../powerpc-linux-gnu/lib/libm.so succeeded -lm (/usr/lib/gcc-lib/powerpc-linux-gnu/3.3.6/../../../../powerpc-linux-gnu/lib/libm.so) ld.so.1 needed by /usr/lib/gcc-lib/powerpc-linux-gnu/3.3.6/../../../../powerpc-linux-gnu/lib/libm.so found ld.so.1 at /usr/powerpc-linux-gnu/lib/ld.so.1 libc.so.6 needed by /usr/lib/gcc-lib/powerpc-linux-gnu/3.3.6/../../../../powerpc-linux-gnu/lib/libm.so found libc.so.6 at /usr/powerpc-linux-gnu/lib/libc.so.6

failedですか……

ln -s libcrypt-0.9.29.so /usr/powerpc-linux-uclibc/lib/libcrypt.so ln -s libm-0.9.29.so /usr/powerpc-linux-uclibc/lib/libm.so ln -s libuClibc-0.9.29.so /usr/powerpc-linux-uclibc/lib/libc.so

とりあえずリンクを追加して、実行!

Trying libraries: crypt m Failed: powerpc-linux-gnu-gcc -nostdlib -L/usr/powerpc-linux-uclibc/lib -o busybox_unstripped -Wl,-Map -Wl,busybox_unstripped.map -Wl,--warn-common -Wl,--sort-common -Wl,--gc-sections -Wl,--start-group applets/built-in.o archival/lib.a archival/libunarchive/lib.a console-tools/lib.a coreutils/lib.a coreutils/libcoreutils/lib.a debianutils/lib.a e2fsprogs/lib.a editors/lib.a findutils/lib.a init/lib.a ipsvd/lib.a libbb/lib.a libpwdgrp/lib.a loginutils/lib.a miscutils/lib.a modutils/lib.a networking/lib.a networking/libiproute/lib.a networking/udhcp/lib.a procps/lib.a runit/lib.a selinux/lib.a shell/lib.a sysklogd/lib.a util-linux/lib.a archival/built-in.o archival/libunarchive/built-in.o console-tools/built-in.o coreutils/built-in.o coreutils/libcoreutils/built-in.o debianutils/built-in.o e2fsprogs/built-in.o editors/built-in.o findutils/built-in.o init/built-in.o ipsvd/built-in.o libbb/built-in.o libpwdgrp/built-in.o loginutils/built-in.o miscutils/built-in.o modutils/built-in.o networking/built-in.o networking/libiproute/built-in.o networking/udhcp/built-in.o procps/built-in.o runit/built-in.o selinux/built-in.o shell/built-in.o sysklogd/built-in.o util-linux/built-in.o -Wl,--end-group -Wl,--start-group -lcrypt -lm -Wl,--end-group /usr/lib/gcc-lib/powerpc-linux-gnu/3.3.6/../../../../powerpc-linux-gnu/bin/ld: warning: libc.so.0, needed by /usr/powerpc-linux-uclibc/lib/libcrypt.so, not found (try using -rpath or -rpath-link) /usr/lib/gcc-lib/powerpc-linux-gnu/3.3.6/../../../../powerpc-linux-gnu/bin/ld: warning: cannot find entry symbol _start; defaulting to 00000000100003b1 /usr/powerpc-linux-uclibc/lib/libm.so: undefined reference to `strtof' collect2: ld returned 1 exit status make: *** [busybox_unstripped] Error 1

う~……(?_?)

# powerpc-linux-gnu-readelf -a /usr/powerpc-linux-uclibc/lib/libm-0.9.29.so | grep strtof 00023140 00006415 R_PPC_JMP_SLOT 00000000 strtof + 0 100: 00000000 80 FUNC GLOBAL DEFAULT UND strtof

何で、ライブラリがUNDなのでしょうか?


残念ながら、上記の問題は解決できませんでした……

誰か、教えてプリーズ!!

2007年09月04日

gccの切り替え

gccを複数バージョン入れている場合は下記の方法で切り替えたりするが

# cd /usr/bin # ln -s gcc-3.4 gcc

上記方法だと面倒なので、update-alternativesを使うよう設定する。

私は、gcc-3.3/3.4/4.1を入れているので下記のように設定

# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.3 33 # update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.4 34 # update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 41 # update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-3.3 33 # update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-3.4 34 # update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.1 41

下記の方法で切り替える。

# update-alternatives --config gcc There are 3 alternatives which provide `gcc'. Selection Alternative ----------------------------------------------- * 1 /usr/bin/gcc-3.3 2 /usr/bin/gcc-3.4 + 3 /usr/bin/gcc-4.1 Press enter to keep the default[*], or type selection number:

上記画面で、変更したいgccバージョンのSelection番号を入力すればOK!

同様にcppも切り替える。

2007年09月07日

Busybox+uClibc

以前の日記Busybox+uClibcで、uClibcのリンクがうまく行かない件で、ようやく正常にリンクできるようになりました。

やり方は、かなり強引です。って言うかまだまだ調査が必要ですが……(-_-;)

まずは、specsファイルの位置を調べます。

# powerpc-linux-gnu-gcc -v Reading specs from /usr/lib/gcc/powerpc-linux-gnu/3.4.6/specs Configured with: ../src/configure -v --enable-languages=c,c++ --prefix=/usr --libexecdir=/usr/lib --with-gxx-include-dir=/usr/powerpc-linux-gnu/include/c++/3.4 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --program-suffix=-3.4 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --disable-softfloat --enable-targets=powerpc-linux,powerpc64-linux --with-cpu=default32 --disable-softfloat --program-prefix=powerpc-linux-gnu- --includedir=/usr/powerpc-linux-gnu/include --build=i486-linux-gnu --host=i486-linux-gnu --target=powerpc-linux-gnu Thread model: posix gcc version 3.4.6 (Debian 3.4.6-5)

で、元のspecsファイルを退避させ

# cp /usr/lib/gcc/powerpc-linux-gnu/3.4.6/specs /usr/lib/gcc/powerpc-linux-gnu/3.4.6/specs.org

specsファイルの"ld.so.1"を"ld-uClibc.so.0"に書き換えます。

で、下記のフラグを設定してコンパイルすればOK!

export CFLAGS='-I /usr/powerpc-linux-uclibc/usr/include -nostdlib -L /usr/powerpc-linux-uclibc/lib -L /usr/powerpc-linux-uclibc/usr/lib' export LDFLAGS='-nostdlib -L /usr/powerpc-linux-uclibc/lib -lc'


まぁ、でもターゲットで動かなかったですけどね……(T_T)
(コンパイラかライブラリの問題ですね~たぶん……)


どうせspecsファイルを書き換えるなら、上記のフラグをどこかに書けばいいんだろうけど何処なんでしょうか(?_?)

まだまだ修行が足りません。(>_<)

2007年09月21日

ELDK

いまだに、Busybox+uClibcのクロスコンパイル環境をうまく作れていません。orz

時間が無いのでELDK 4.1を使用することにしました。

悔しいですが、時間が無いので……

ところが、telnetが下記の状態でつながりません。(?_?)
"/etc/xinetd.d/telnet"の"disable = yes"をコメントアウトしたし……

# telnet 192.168.0.254 Trying 192.168.0.254... Connected to 192.168.0.254. Escape character is '^]'. telnetd: All network ports in use. Connection closed by foreign host.

"/dev/ptmx"・"/dev/ttyp*"・"/dev/ptyp*"も存在するし、なんだろ~っと思っていたらmountしていないだけのようで、"/etc/fstab"に下記の行を追加しました。

none /dev/pts devpts gid=5,mode=620 0 0

"mount -a"を実行してログインが出来ることを確認したのですが、再起動するとなぜかログインできません?

"mount"を実行すると"/dev/pts"はmountされているようですし……

# mount /dev/nfs on / type nfs (rw) none on /proc type proc (rw) none on /dev/pts type devpts (rw,gid=5,mode=620) none on /dev/shm type tmpfs (rw)

そして、数時間悩んだ結果!!

実は、"/etc/mtab"に"/dev/pts"が記述されているが、実際にはmountされていないことが判明!(-_-;)

# cat /proc/mounts rootfs / rootfs rw 0 0 /dev/root / nfs rw,v2,rsize=4096,wsize=4096,hard,udp,nolock,addr=192.168.0.1 0 0 /proc /proc proc rw 0 0 none /dev/shm tmpfs rw 0 0

で、"/etc/rc.sysinit"を見ていると下記のようにmountがコメントアウトされていました。
さらにその下の方で、"/etc/mtab"には"/dev/pts"を書き込んでいます……(-_-;)

# Start the graphical boot, if necessary; /usr may not be mounted yet, so we # may have to do this again after mounting RHGB_STARTED=0 #mount -n /dev/pts

"#"を消すことで起動時にも正常にログインできるようになりましたとさ……

おしまい、おしまい。(^。^)y-.。o○

2007年10月04日

Busyboxのdateコマンド

Busyboxのdateコマンドを使用時に、ローカルタイムを表示するには下記のように設定する。

# TZ="JST-9" date

または、"/etc/TZ"ファイルを作成して下記を設定する。

JST-9


ちなみに、多くのディストリビューションで使用されているdateコマンドは下記のようにすれば変更可能。

# ln -s /usr/share/zonefile/Asia/Tokyo /etc/localtime

または

# zic -l Asia/Tokyo

zonefileの元ソースはtzdataから、tzcode/tzdataをダウンロードして、同一ディレクトリに展開してコンパイルする。ただ、インストールディレクトリが標準?とは違うので、Makefileを書き換える必要がある。

通常、tzcodeをコンパイルしてもzonefileのみが作成されるが、dateコマンドも作成したい場合は下記のようにする。

通常

# make
# make install

dateを含むコンパイル

# make ALL
# make INSTALL


minicomを使うには

ターゲット上でminicomを使うときのメモ書きφ(..)メモメモ

ソースのダウンロードは下記からダウンロードします。

http://alioth.debian.org/projects/minicom/

後は通常通りにconfigureとmakeを実行してコンパイル。

で、標準ライブラリ以外で必要なのは

minicom libintl.so* libncurses.so* libiconv.so* libtermcap.so*

と、"/etc/profile"ファイル

PATH="$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" PS1="# " HISTFILE=/tmp/.ash_history HISTFILESIZE=0 HISTCONTROL=ignoreboth HISTSIZE=0 HOSTNAME=`/bin/hostname` TERM="vt100" export PATH PS1 HOSTNAME HISTFILE HISTFILESIZE HISTCONTROL HISTSIZE TMOUT=90

上記ファイルで設定している、環境変数"TERM"が必要となります。ちなみに、"TERM"にvt100を設定している場合は下記のファイルが必要なのでコピーしておきましょう!

/usr/share/terminfo/v/vt100

Error : Servname not supported for ai_socktype

ntpdateのメモ書きφ(..)メモメモ

ターゲット上で、ntpdateコマンドを実行したら下記のメッセージが表示され実行できない。

Error : Servname not supported for ai_socktype

これは、"/etc/services"にターゲットで使用するポート情報が記述されていないため発生する。

2007年12月05日

プログラムのメモリ破壊

今日、自分で作ったプログラムが下記のエラーを出力して止まった。

セグメンテーション違反です

メモリをどっかで壊しているのはわかるけど、一応チェックプログラムを作って各関数を確認してから本体を作っているのになぜ(?_?)って感じ……

で、mallocのManpageを見ていたら"MALLOC_CHECK_"なるものがあるそうで、設定したらチェックプログラムでちゃんと下記のエラーをはいて止まりました。(programはチェックプログラム名)

# MALLOC_CHECK_=3 program *** glibc detected *** free(): invalid pointer: 0x0804d0e8 ***

へー(゜o゜)

無事、メモリを壊しているところを見つけられましたとさ!!(^。^)y-.。o○

2008年03月21日

Intel Q35 チップセット

久しぶりに、Newボードを設定中!

購入したボードは、Intel DQ35JOEです。

このボードに、Debian Etch(武藤さんカスタムカーネルバージョン)をインストールしてみたら、インストール途中で止まってしまいます。

どうやらACPI関連で止まっているようなので、インストール開始時に下記のように設定して実行!

Press F1 for help, or ENTER to boot: install acpi=off

しかし、インストールは正常に終わるもののgnomeの画面下部が崩れた状態になってしまいます……orz

このボードはQ35チップセットを使っていて、調べたところX.orgが対応していないようです。

X.orgの7.3以降(xserver-xorg-video-intelが新しければ良い?)を使用すれば、問題なさそうです。

で、思い切って"apt-get dist-upgrade"してみました。


…なんかエラーメッセージが出力されます。…(-_-;)


ここは、無視して再起動!!


まだ、崩れたままです。
xorg.confを書き換えて再起動!!

Section "Device" Identifier "devname" Driver "i810" ... EndSection

……orz



GDMが起動しません。


こうなったら、Debian Lenny Beta 1を試してみるしかありません!(^o^)

早速インストール!!

正常にインストール出来ません。……(T_T)

どうやら、Debian Lenny Beta 1はカーネル2.6.22ベースらしく、Q35チップセットが正常に認識できないため、SATA接続のDVDドライブが認識できないようです。

Beta2からは、2.6.24ベースになるらしいので、それまで待つか下部が崩れているのを気にせずに使うしかないようです。

About Linux

ブログ「ゆうちくりんの忘却禄」のカテゴリ「Linux」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはIPsecです。

次のカテゴリはPukiWikiです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35