MINI2440でのbusybox置き換えのみでpanic ― 2009年08月25日 20時56分32秒
swaponコマンドがリリース版busyboxでは無効
MINI2440の64MBというRAMサイズの場合、swapを有効にしないと決定的にandroid用としてはRAMが足りないというのは各所の情報で明らかでしたので、とりあえず素の状態でswapを有効にしようと思っています。ところが、リリース時点のbusyboxにはswaponがない。単にシンボリックリンクされていないだけではなく、本体のオブジェクト(applet)がリンクされていないようです。
# swapon # swapon: applet not found #
busybox1.13.3をリビルドしてみる
簡単な話だと思いました。提供されているソースコードを元にswaponを有効にした環境でリビルドすればいいのだと。
手順としてはカーネルのビルドと同じようになってるんですね。
- 製品のページにあるソース(busybox-1.13.3-mini2440.tgz)を取得
- make defconfig
- make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- install
# chmod +s busyboxも実行しておきます。
結果は以下のようにpanicで落ちます。
U-Boot 1.3.2-mini2440 (Jul 8 2009 - 13:25:23)
I2C: ready
DRAM: 64 MB
Flash: 2 MB
NAND: Bad block table not found for chip 0
Bad block table written to 0x03ff8000, version 0x01
64 MiB
Found Environment offset in OOB..
USB: S3C2410 USB Deviced
In: serial
Out: serial
Err: serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot: 0
trying to detect SD Card...
Manufacturer: 0x1d, OEM "AD"
Product name: "SD ", revision 1.0
Serial number: 270541555
Manufacturing date: 3/2008
CRC: 0x71, b0 = 1
READ_BL_LEN=15, C_SIZE_MULT=7, C_SIZE=3453
size = 2329935872
reading uImage.bin
1928160 bytes read
## Booting kernel from Legacy Image at 32000000 ...
Image Name:
Created: 2009-08-22 6:39:05 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1928096 Bytes = 1.8 MB
Load Address: 30008000
Entry Point: 30008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux.............................................................
Linux version 2.6.29.6 (sakamoto@sakamoto-laptop) (gcc version 4.3.2 (Sourcery 9
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: console=ttySAC0,115200 root=/de201.93 BogoMIPS (lpj=504832)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 672 bytes
NET: Registered protocol family 16
MINI2440: Option string mini2440=0tb
MINI2440: LCD [0:240x320] 1:800x480 2:1024x768
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c4808000, irq 33
DMA channel 1 at c4808040, irq 34
DMA channel 2 at c4808080, irq 35
DMA channel 3 at c48080c0, irq 36
S3C244X: Clock Support, DVS off
bio: create slab at 0
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: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocJFFS2 version 2.2. (NAND) �© 2001-2006 Red Hat, Inc.
msgmni has been set to 118
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Console: switching to colour frame buffer device 60x53
fb0: s3c2410fb frame buffer device
s3c2440-uart.0: ttySAC0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: ttySAC1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: ttySAC2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded
dm9000 Ethernet Driver, V1.31
eth0 (dm9000): not using net_device_ops yet
eth0: dm9000e at c486a300,c486e304 IRQ 51 MAC: 08:08:11:18:12:27 (chip)
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2440-nand s3c2440-nand: Tacls=1, 9ns Twrph0=3 29ns, Twrph1=2 19ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bi)
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "u-boot"
ftl_cs: FTL header not found.
0x000000040000-0x000000060ftl_cs: FTL header not found.
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
s3c2440-usbgadget s3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes
mice: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platfor /dev entries driver
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 395 KHz
at24 0-0050: 1024 byte 24c08 EEPROM (writable)
s3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
cpuidle: using governor ladder
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
mapped channel 0 to 0
s3c2440-sdi s3c2440-sdi: powered down.
s3c2440-sdi s3c2440-sdi: initialisation done.
s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
Registered led device: led1
s3c2440-sdi s3c2440-sdi: running at 198kHz (rusbcore: registered new interface v
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.18a.
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
S3C24XX_UDA134X SoC Audio driver
UDA134X SoC Audio Codec
asoc: UDA134X <-> s3c24xx-i2s mapping ok
ALSA device list:
#0: S3C24XX_UDA134X (UDA134X)
TCP cubic kjournald starting. Commit interval 5 seconds
EXT3 FS on mmcblk0p2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) on device 179:2.
Freeing init memory: 152K
Kernel panic - not syncing: Attempted to kill init!
busyboxのサイズの問題?
busyboxのデフォルトの環境でのビルドでpanicしないで起動するかどうかを試した結果が以下。各バージョンのソースはこちらから取得しています。| バージョン | 起動結果 | busyboxサイズ |
|---|---|---|
| 1.13.3 MINI2440同梱版 | OK | 634420 |
| 1.13.3defconfig版 | NG | 798472 |
| 1.13.4defconfig版 | NG | 802160 |
| 1.15.0defconfig版 | NG | 814428 |
| 1.14.1defconfig版 | NG | 822636 |
| 1.12.4defconfig版 | NG | 732504 |
| 1.11.3defconfig版 | OK | 753036 |
| 1.10.4defconfig版 | OK | 744892 |
さて、1.11.3などはpanicでは落ちないものの以下のようにinitの手順が異なるようで、最後まで処理が完了しません。
U-Boot 1.3.2-mini2440 (Jul 8 2009 - 13:25:23)
I2C: ready
DRAM: 64 MB
Flash: 2 MB
NAND: Bad block table not found for chip 0
Bad block table written to 0x03ff8000, version 0x01
64 MiB
Found Environment offset in OOB..
USB: S3C2410 USB Deviced
In: serial
Out: serial
Err: serial
MAC: 08:08:11:18:12:27
Hit any key to stop autoboot: 0
trying to detect SD Card...
Manufacturer: 0x1d, OEM "AD"
Product name: "SD ", revision 1.0
Serial number: 270541555
Manufacturing date: 3/2008
CRC: 0x71, b0 = 1
READ_BL_LEN=15, C_SIZE_MULT=7, C_SIZE=3453
size = 2329935872
reading uImage.bin
1928160 bytes read
## Booting kernel from Legacy Image at 32000000 ...
Image Name:
Created: 2009-08-22 6:39:05 UTC
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1928096 Bytes = 1.8 MB
Load Address: 30008000
Entry Point: 30008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux.............................................................
Linux version 2.6.29.6 (sakamoto@sakamoto-laptop) (gcc version 4.3.2 (Sourcery 9
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=c0007177
CPU: VIVT data cache, VIVT instruction cache
Machine: MINI2440
Memory policy: ECC disabled, Data cache writeback
CPU S3C2440A (id 0x32440001)
S3C24XX Clocks, (c) 2004 Simtec Electronics
S3C244X: core 405.000 MHz, memory 101.250 MHz, peripheral 50.625 MHz
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256
Kernel command line: console=ttySAC0,115200 root=/dev/mmcblk0p2 init=/linuxrc rd
irq: clearing pending status 02000000
irq: clearing subpending status 00000002
PID hash table entries: 256 (order: 8, 1024 bytes)
Console: colour dummy device 80x30
console [ttySAC0] enabled
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 64M201.93 BogoMIPS (lpj=504832)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
net_namespace: 672 bytes
NET: Registered protocol family 16
MINI2440: Option string mini2440=0tb
MINI2440: LCD [0:240x320] 1:800x480 2:1024x768
S3C2440: Initialising architecture
S3C2440: IRQ Support
S3C24XX DMA Driver, (c) 2003-2004,2006 Simtec Electronics
DMA channel 0 at c48080bio: create slab at 0
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: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
NET: Registered protocol family 1
JFFS2 version 2.2. (NAND) �© 2001-2006 Red Hat, Inc.
msgmni has been set to 118
alg: No test for stdrng (krng)
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Console: switching to colour frame buffer device 60x53
fb0: s3c2410fb frame buffer device
s3c2440-uart.0: ttySAC0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: ttySAC1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: ttySAC2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded
dm9000 Ethernet Driver, V1.31
eth0 (dm9000): not using net_device_ops yet
eth0: dm9000e at c486a300,c486e304 IRQ 51 MAC: 08:08:11:18:12:27 (chip)
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2440-nand s3c2440-nand: Tacls=1, 9ns Twrph0=3 29ns, Twrph1=2 19ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bi)
Creating 4 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x000000000000-0x000000040000 : "u-boot"
ftl_cs: FTL header not found.
0x000000040000-0x000000060000 : "u-boot-env"
0x00000ftl_cs: FTL header not found.
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
us3c2440-usbgadget: S3C2440: increasing FIFO to 128 bytes
mice: PS/2 mouse device common for all mice
input: gpio-keys as /devices/platform/gpio-keys/input/input0
s3c2440-ts s3c2440-ts: Starting
Created group ts filter len 12 depth 2 close 10 thresh 6
Created Median ts filter len 20 depth 2 dec 24
Created Mean ts filter len 4 depth 2 thresh 65535
Created Linear ts filter depth 2
s3c2440-ts s3c2440-ts: 4 filter(s) initialized
s3c2440-ts s3c2440-ts: successfully loaded
input: s3c2410 TouchScreen as /devices/virtual/input/input1
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c2410-rtc s3c2410-rtc: rtc disabled, re-enabling
s3c2410-rtc s3c2410-rtc: rtc core: registered s3c as rtc0
i2c /dev entries driver
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 395 KHz
at24 0-0050: 1024 byte 24c08 EEPROM (writable)
s3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
cpuidle: using governor ladder
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
mapped channel 0 to 0
s3c2440-sdi s3c2440-sdi: powered down.
s3c2440-sdi s3c2440-sdi: initialisation done.
s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
Registered led device: led1
Registered led device: led2
s3c2440-sdi s3c2440-sdi: runnusbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
Advanced Linux Sound Architecture Driver Version 1.0.18a.
No device for DAI UDA134X
No device for DAI s3c24xx-i2s
S3C24XX_UDA134X SoC Audio driver
UDA134X SoC Audio Codec
asoc: UDA134X <-> s3c24xx-i2s mapping ok
ALSA device list:
#0: S3C24XX_UDA1kjournald starting. Commit interval 5 seconds
EXT3 FS on mmcblk0p2, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) on device 179:2.
Freeing init memory: 152K
init started: BusyBox v1.11.3 (2009-08-25 22:32:38 JST)
starting pid 739, tty '': '/etc/init.d/rcS'
Please press Enter to activate this console.
現在未解決。試行錯誤中
現在未解決です。試行錯誤中です。解決策を募集します。make menuconfigでかなりオプション指定を削ったつもりでも1.13.3の同梱版ほどコンパクトになりませんし、起動にも失敗しています。
コメント
_ androidzaurus ― 2009年08月26日 13時24分01秒
んー。なんだろ。ライブラリがあってないのかな?staticでビルドしてみるとか。make menuconfig -> Build Options -> Build BusyBox as a static binary。
_ nekohara ― 2009年09月18日 18時51分27秒
わたしはSH4(SH7780)で同じ現象に遭遇しました。
利用したkernelは2.6.30でbusyboxは1.15.0でやっていました。
私の場合カーネルのMMUの設定でUNEVICTABLE_LRUを有効にしたら無事ashまで動きました。(ライブラリはstaticです。)
initramfsで行っていたので、たぶん違う現象でしょうね。
1.11.3の「Please press Enter to activate this console. 」についてはinitでshなどを起動するときの端末制御に/dev/consoleを使おうとしているからでしょう。2.6カーネルでは端末制御に仮想端末を指定できないので怒っていると思われます。
最近?のbusyboxではcttyhackなるものを使いなさいといわれてます。
rcSで記述してあるであろう"/bin/sh"を"/bin/cttyhack /bin/sh"と記述してみたらどうでしょうか?
自信はありませんが。
利用したkernelは2.6.30でbusyboxは1.15.0でやっていました。
私の場合カーネルのMMUの設定でUNEVICTABLE_LRUを有効にしたら無事ashまで動きました。(ライブラリはstaticです。)
initramfsで行っていたので、たぶん違う現象でしょうね。
1.11.3の「Please press Enter to activate this console. 」についてはinitでshなどを起動するときの端末制御に/dev/consoleを使おうとしているからでしょう。2.6カーネルでは端末制御に仮想端末を指定できないので怒っていると思われます。
最近?のbusyboxではcttyhackなるものを使いなさいといわれてます。
rcSで記述してあるであろう"/bin/sh"を"/bin/cttyhack /bin/sh"と記述してみたらどうでしょうか?
自信はありませんが。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。
※投稿には管理者が設定した質問に答える必要があります。
トラックバック
このエントリのトラックバックURL: http://kumikomi.asablo.jp/blog/2009/08/25/4536241/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
最近のコメント