« March 2005 | メイン | May 2005 »

April 14, 2005

USL-5P 共有ライブラリ入れ替え実験

試しにリンカローダとglibc本体をデフォルトのバージョン2.3.1から構築した2.3.2に入れ替えてみた。

-sh-2.05b# cd /lib
-sh-2.05b# ls -l libc.so.6 ld-linux.so.2
lrwxrwxrwx 1 root root 11 Oct 12 2004 ld-linux.so.2 -> ld-2.3.1.so
lrwxrwxrwx 1 root root 13 Apr 14 02:26 libc.so.6 -> libc-2.3.1.so

-sh-2.05b# ln -sf libc-2.3.2.so libc.so.6
-sh-2.05b# ln -sf ld-2.3.2.so ld-linux.so.2

-sh-2.05b# ls -l libc.so.6 ld-linux.so.2
lrwxrwxrwx 1 root root 11 Apr 14 02:57 ld-linux.so.2 -> ld-2.3.2.so
lrwxrwxrwx 1 root root 13 Apr 14 03:05 libc.so.6 -> libc-2.3.2.so

このあとコマンドをいくつか実行したところ問題なかったのでリブート。すると起動はしたものの途中で一ヶ所リロケーションエラーが起こる。ブザーが鳴って赤いLED点滅。それでもログインしてlsとかpsなどのコマンドは実行OK。

Starting httpd: /usr/sbin/httpd: relocation error: /lib/libpthread.so.0: symbol __rpc_thread_destroy, version GLIBC_PRIVATE not defined in file libc.so.6 with link time reference
[FAILED]

シンボル参照に失敗している。このlibpthreadを含め、他の共有ライブラリも入れ替える必要があるようだ。

USL-5Pデフォルトのシステム内にはldconfigコマンドが存在しない。ld.so.cache、ld.so.confもない。この状態でlibc.so.6がなくなると、以降glibcを必要とするコマンドは全て使えなくなるので注意

-sh-2.05b# ls -l libc.so.6
lrwxrwxrwx 1 root root 13 Oct 12 2004 libc.so.6 -> libc-2.3.1.so
-sh-2.05b# rm libc.so.6
-sh-2.05b# ls
ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

投稿者 salmoon : 03:34 AM | コメント (0) | トラックバック

April 12, 2005

USL-5P カーネル起動成功

ついにコンパイルしたカーネルから起動した。
製品版カーネルと起動メッセージを比較し、/lib/modulesディレクトリのモジュールを参考にしてmake menuconfigで設定を合わせこみ。

gccのバージョンが違うため開発版カーネルと製品版モジュールとの相性が心配だったが、どうやら動いているらしい。電源ボタンを押してシャットダウンもOK、ブザーも鳴っている。

また、例のブザーピーピーとLEDピコピコの原因がわかった。CONFIG_HEARTBEATが定義されているとカーネル起動時に発動する。ここのソースを参考にすればLEDとブザーの制御はできることに気付く。

arch/sh/kernel/setup_julian.c: heartbeat_julian( )
make menuconfig時の設定
Character devices --> Heartbeat LED

あとは/libディレクトリ内のダイナミックリンカローダやglibc本体などのバージョンを2.3.1から2.3.2に置き換えて既存の各種アプリケーションが動けばバンザイだが、どうかな?

●/lib/modulesディレクトリ内のファイル

-sh-2.05b# find /lib/modules/
/lib/modules/
/lib/modules/noversion
/lib/modules/noversion/giodrv.o
/lib/modules/noversion/leddrv.o
/lib/modules/noversion/buzdrv.o
/lib/modules/noversion/btndrv.o
/lib/modules/noversion/faultdrv.o
/lib/modules/2.4.21
/lib/modules/2.4.21/kernel
/lib/modules/2.4.21/kernel/drivers
/lib/modules/2.4.21/kernel/drivers/block
/lib/modules/2.4.21/kernel/drivers/block/rd.o
/lib/modules/2.4.21/kernel/drivers/net
/lib/modules/2.4.21/kernel/drivers/net/8139cp.o
/lib/modules/2.4.21/kernel/drivers/net/mii.o
/lib/modules/2.4.21/kernel/drivers/usb
/lib/modules/2.4.21/kernel/drivers/usb/host
/lib/modules/2.4.21/kernel/drivers/usb/host/ehci-hcd.o
/lib/modules/2.4.21/kernel/drivers/usb/host/usb-ohci.o
/lib/modules/2.4.21/kernel/drivers/usb/printer.o
/lib/modules/2.4.21/kernel/drivers/usb/storage
/lib/modules/2.4.21/kernel/drivers/usb/storage/usb-storage.o
/lib/modules/2.4.21/kernel/drivers/usb/usbcore.o
/lib/modules/2.4.21/modules.dep
/lib/modules/2.4.21/pcmcia
/lib/modules/2.4.21/modules.generic_string
/lib/modules/2.4.21/modules.pcimap
/lib/modules/2.4.21/modules.isapnpmap
/lib/modules/2.4.21/modules.usbmap
/lib/modules/2.4.21/modules.parportmap
/lib/modules/2.4.21/modules.ieee1394map
/lib/modules/2.4.21/modules.pnpbiosmap

●起動直後のモジュールロード状態

-sh-2.05b# lsmod
Module Size Used by Tainted: PF
buzdrv 2344 0
leddrv 2376 0
btndrv 5140 2
faultdrv 2536 2
usb-storage 69720 0 (unused)
usb-ohci 21480 0 (unused)
ehci-hcd 21744 0 (unused)
usbcore 76460 1 [usb-storage usb-ohci ehci-hcd]
rd 4536 2
8139cp 17416 1
mii 3880 0 [8139cp]

投稿者 salmoon : 03:06 AM | コメント (0) | トラックバック

April 10, 2005

USL-5P 配布ソースのカーネルで起動テスト

I/ODATAが配布するLinuxカーネルソースをコンパイル、USL-5Pで実機起動テストしてみた。結果、起動途中で止まってしまった。おまけにブザーはピーピー鳴りっぱなし、ボタンのLEDはナイトライダー状態でピコピコ点滅している…なんじゃこりゃ!
製品版カーネルの起動メッセージと比較したところ、ドライバに相違があることやモジュール化の有無の設定が異なることが判明。.configファイルはソースツリー内にあるconfigs/Kernel-2.4.21-iodata.configを使ったのだが、どうもそのままではだめらしい。ブザーピーピー状態もなんか設定がありそうな予感。

開発環境は次の通り

ホスト
Windows2000, cygwin-1.5.12

クロス開発ツールチェーン
gcc-3.3.3, glibc-2.3.2, binutils-2.15
SH4 リトルエンディアン

ターゲットルートファイルシステム
製品内蔵コンパクトフラッシュ内のファイルシステム

ブートローダ
セレクタ付きsh-lilo(細渕さんに感謝)

製品版カーネルはgcc-3.2.3, glibc-2.3.1の環境で構築されていると判断したのでこれに近い開発環境を準備してみた。この環境を準備するのに一苦労、カーネルのコンパイルが通るまでまた一苦労、起動メッセージを見るまでさらに一苦労あった。でももう少しで動きそうだ。

IPL+g version 0.9, Copyright (C) 2000 Free Software Foundation, Inc.

This software comes with ABSOLUTELY NO WARRANTY; for details type `w'.
This is free software, and you are welcome to redistribute it under
certain conditions; type `l' for details.

2002/09/09 Making. 2004/09/08 I-O DATA NSU Update.
266:133:33 on base clock 22.22MHz and SDRAM 4 burst. CF boot.

PCIC initialization done.
MASTER:48bit LBA mode non support
Disk drive detected: Hitachi XXM2.3.0 Rev 3.00 X0305 20041011062926
LBA: 0001E900
DiskSize: 64094208Byte
PIO MODE1
Set Transfer Mode result: 51
> b
Set Transfer Mode result: 51
Initialize Device Parameters result: 50
IDLE result: 50
LILO boot:

1 : linux
2 : linux-new
3 : linux-0409

Select boot image -> 3
Loading linux-0409.....................done.
(文字化け省略)
66.24 BogoMIPS
Memory: 62640k/65536k available (1676k kernel code, 2896k reserved, 130k data, 2
08k init)
Dentry cache hash table entries: 8192 (order: 4, 65536 bytes)
Inode cache hash table entries: 4096 (order: 3, 32768 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 4096 (order: 2, 16384 bytes)
Page-cache hash table entries: 16384 (order: 4, 65536 bytes)
CPU: SH7751R
POSIX conformance testing by UNIFIX
PCI: Using configuration type 1
SH7751R PCI: Finished initialization of the PCI controller
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Allocate Area5/6 success.
Julian Shutdown button driver initialized
Starting kswapd
Journalled Block Device driver loaded
Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
SuperH SCI(F) driver initialized
ttySC0 at 0xffe00000 is a SCI
ttySC1 at 0xffe80000 is a SCIF
Real Time Clock Driver v1.10e
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
8139too Fast Ethernet driver 0.9.26
8139too: pci dev 00:00.0 (id 10ec:8139 rev 20) is an enhanced 8139C+ chip
8139too: Use the "8139cp" driver for improved performance and stability.
PCI: Enabling device Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (0000
-> 0003)
PCI: Setting latency timer of device Realtek Semiconductor Co., Ltd. RTL-8139/81
39C/8139C+ to 64
eth0: RealTek RTL8139 Fast Ethernet at 0xfd000000, 00:a0:b0:65:03:6d, IRQ 5
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
hda: Hitachi XXM2.3.0, CFA DISK drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 10
hda: attached ide-disk driver.
hda: task_no_data_intr: status=0x51 { DriveReady SeekComplete Error }
hda: task_no_data_intr: error=0x04 { DriveStatusError }
hda: 125184 sectors (64 MB) w/1KiB Cache, CHS=978/4/32
ide-floppy driver 0.99.newide
Partition check:
hda: hda1
ide-floppy driver 0.99.newide
SCSI subsystem driver Revision: 1.00
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
PCI: Enabling device NEC Corporation USB 2.0 (0000 -> 0002)
ehci-hcd 00:02.2: NEC Corporation USB 2.0
ehci-hcd 00:02.2: irq 5, pci mem fd000100
usb.c: new USB bus registered, assigned bus number 1
PCI: 00:02.2 PCI cache line size set incorrectly (0 bytes) by BIOS/FW.
PCI: 00:02.2 PCI cache line size corrected to 32.
ehci-hcd 00:02.2: USB 2.0 enabled, EHCI 1.00, driver 2003-Jan-22
hub.c: USB hub found
hub.c: 5 ports detected
PCI: Enabling device NEC Corporation USB (0000 -> 0002)
PCI: Setting latency timer of device NEC Corporation USB to 64
host/usb-ohci.c: USB OHCI at membase 0xfd001000, IRQ 7
host/usb-ohci.c: usb-00:02.0, NEC Corporation USB
usb.c: new USB bus registered, assigned bus number 2
hub.c: USB hub found
hub.c: 3 ports detected
PCI: Enabling device NEC Corporation USB (#2) (0000 -> 0002)
PCI: Setting latency timer of device NEC Corporation USB (#2) to 64
host/usb-ohci.c: USB OHCI at membase 0xfd002000, IRQ 8
host/usb-ohci.c: usb-00:02.1, NEC Corporation USB (#2)
usb.c: new USB bus registered, assigned bus number 3
hub.c: USB hub found
hub.c: 2 ports detected
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
USB Mass Storage support registered.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 4096 bind 8192)
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NET4: AppleTalk 0.18a for Linux NET4.0
hda: hda1
hda: hda1
hda: hda1
hda: hda1
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 208k freed
・nit started: BusyBox v0.60.5 (2004.07.22-09:20+0000) multi-call binary
Mounting proc filesystem: [ OK ]

無念ここでストップ

投稿者 salmoon : 02:21 PM | コメント (0) | トラックバック