佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 6028|回复: 95

移植 Linux 到 Broadcom MIPS SoC -- Kernel Panic

[复制链接]
发表于 24-9-2009 12:36 PM | 显示全部楼层 |阅读模式
我試著將 linux-2.6.30.2 移植到 Broadcom SoC -- MIPS3302, 在 menuconfig 里我選擇 bcm47xx target 為範本, 一開始都算順利, 在修改 Early Printk, Serial driver  和 Timer 後, 總算是可以看到開機訊息, 但是當 kernel 要跳到 userspace 的 /init 時卻出現 kernel panic , 不知各位大大可否指點一下, 我也不知道問題出在哪了

我盡量將工作環境和資訊描述清楚, 希望對各位的判斷有幫助

Host                   : Fedora release 10 (Cambridge),
                             Kernel 2.6.27.29-170.2.79.fc10.x86_64 on an x86_64 (2)
Cross compiler : mipsel-unknown-linux-gnu-gcc version 4.3.2 (由 crosstool-ng-1.4.1 產生)
Linux kernel       : linux-2.6.30.2 (在 Linux MIPS 的 main page 下載)
BusyBox            : 1.10.3

我將 busybox 編譯成 static library 並存放在 initramfs 目錄下


過後在 linux-2.6.30.2 目錄下通過 make menuconfig 將 initramfs source 指到 initramfs 目錄.



這之後再透過 make 產生 vmlinux 檔. 將這檔透過 tftp 載到 target board. 開機訊息如下 :

Linux version 2.6.30.2 (tanks@F10-Server) (gcc version 4.3.2 (crosstool-NG-1.4.9
console [early0] enabled                                                        
CPU revision is: 0002901a (Broadcom BCM3302)         
ssb: Initializing MIPS core...                                                  
ssb: Sonics Silicon Backplane found at address 0x18000000                       
Determined physical RAM map:                                                   
memory: 02000000 @ 00000000 (usable)                                          
User-defined physical RAM map:                                                  
memory: 02000000 @ 00000000 (usable)                                          
Initrd not found or empty - disabling initrd                                    
Zone PFN ranges:                                                               
  Normal   0x00000000 -> 0x00002000                                             
Movable zone start PFN for each node                                            
early_node_map[1] active PFN ranges                                             
    0: 0x00000000 -> 0x00002000                                                
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 8128      
Kernel command line: console=ttyS0,9600 mem=32M                                 
Primary instruction cache 32kB, VIPT, 4-way, linesize 16 bytes.                 
Primary data cache 32kB, 2-way, VIPT, cache aliases, linesize 16 bytes         
NR_IRQS:128                                                                     
PID hash table entries: 128 (order: 7, 512 bytes)                              
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)                  
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)                     
Memory: 28848k/32768k available (1369k kernel code, 3920k reserved, 279k data, )
Calibrating delay loop... 530.43 BogoMIPS (lpj=1060864)                        
Mount-cache hash table entries: 512                                             
Initializing cgroup subsys ns                                                   
Initializing cgroup subsys cpuacct                                             
bio: create slab <bio-0> at 0                                                   
JFFS2 version 2.2. (NAND) &copy; 2001-2006 Red Hat, Inc.                             
io scheduler noop registered                                                   
io scheduler anticipatory registered                                            
io scheduler deadline registered                                                
io scheduler cfq registered (default)                                          
Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled                        
serial8250.0: ttyS0 at MMIO 0xb8000300 (irq = 3) is a 16550A                    
console handover: boot [early0] -> real [ttyS0]ity, n flowcontrol               
Freeing unused kernel memory: 1760k freed                                       
bbKernel panic - not syncing: Attempted to kill init!  <-- 死在這里

一開始我以為是 busybox 編譯出問題, 可是我利用 qemu-mipsel 來跑編譯出來的 busybox 卻可正常運作
我已不知要如何下手了

各位大大可否提供一些建議或方向給我嗎 ?

[ 本帖最后由 tanks 于 24-9-2009 12:42 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 24-9-2009 05:33 PM | 显示全部楼层

回复 1# tanks 的帖子

您好,
我沒遇過這問題, 不過想問您,
1. kernel和busybox都用同一個cross compiler build的嗎
2. 換成3.x的build看看

若不行, 再討論
回复

使用道具 举报

 楼主| 发表于 24-9-2009 06:11 PM | 显示全部楼层
原帖由 詩魂 于 24-9-2009 05:33 PM 发表
您好,
我沒遇過這問題, 不過想問您,
1. kernel和busybox都用同一個cross compiler build的嗎
2. 換成3.x的build看看

若不行, 再討論


嗯 kernel 和 busybox 都是用同一個 Cross Compiler.
可是 crosstool-ng 沒有 3.x 版的選項 , 2.6 版核心不是要 4.1 版以上的 GCC 才能編嗎 ?
不過我會去用 crosstool  build 一個3.x 版的 gcc 來試看看行不行

補充 :
利用 gcc-3.4.5, glibc-2.3.6 編譯出來的 vmlinux 和 busybox 結果還是一樣
不過卻出現新的一行訊息 : Algorithmics/MIPS FPU Emulator v1.5
通常在 kernel panic 時不都會 dump 一些 register 之類的訊息出來嗎 ? 不懂為何這次卻沒有
但是在 kernel panic 的前面卻有一個 b 字, 會不會是因為某種原因而導致無法 dump info ?  怪哉



[ 本帖最后由 tanks 于 25-9-2009 02:25 PM 编辑 ]
回复

使用道具 举报

发表于 24-9-2009 06:24 PM | 显示全部楼层

回复 3# tanks 的帖子

我COMPILE MYRINIX 时也碰过这样的问题。

换机器COMPILE 就OK了
回复

使用道具 举报

发表于 24-9-2009 11:47 PM | 显示全部楼层

回复 4# atchek 的帖子

很好奇,為什麼呢?
兩台機器有哪些不一樣?
回复

使用道具 举报

发表于 24-9-2009 11:59 PM | 显示全部楼层

回复 5# 詩魂 的帖子

我也不懂 。。。 到现在还不知道。
回复

使用道具 举报

Follow Us
发表于 25-9-2009 12:00 AM | 显示全部楼层
原帖由 atchek 于 24-9-2009 11:59 PM 发表
我也不懂 。。。 到现在还不知道。


有可能其中一台机的RAM有问题 ...? 可能吗?
回复

使用道具 举报

发表于 25-9-2009 12:21 AM | 显示全部楼层

回复 7# 斷羽鳥 的帖子

有问题可以COMPILE KERNEL 么?
回复

使用道具 举报


ADVERTISEMENT

发表于 25-9-2009 03:30 AM | 显示全部楼层
原帖由 斷羽鳥 于 25-9-2009 12:00 AM 发表


有可能其中一台机的RAM有问题 ...? 可能吗?


你看到吗??
有一个FC的kaki了
回复

使用道具 举报

发表于 25-9-2009 09:49 AM | 显示全部楼层

回复 9# hackintosh 的帖子

不过这个人好像才來过一兩次 leh
回复

使用道具 举报

发表于 25-9-2009 11:56 AM | 显示全部楼层
之前有试过是filesystem的问题,kernel支援yaffs1,可是我下载到yaffs2的image进去,结果也是出现这种信息。
回复

使用道具 举报

 楼主| 发表于 25-9-2009 02:26 PM | 显示全部楼层

回复 4# atchek 的帖子

我沒有其他 PC 可以拿來 compile 了 Orz...
回复

使用道具 举报

发表于 25-9-2009 02:29 PM | 显示全部楼层

回复 3# tanks 的帖子

可是 crosstool-ng 沒有 3.x 版的選項 , 2.6 版核心不是要 4.1 版以上的 GCC 才能編嗎 ?
不過我會去用 crosstool  build 一個3.x 版的 gcc 來試看看行不行

我以前用過3.X的GCC build過2.6的核心, 沒有問題...
另外, 既然您正好要用crosstool build 3.x的crosscompiler, 可否順便寫一篇教學,
本來是我要寫, 但一直抽不出時間, 就交給您啦
也順便寫用crosstool-ng的使用教學, 因為crosstool沒繼續維護了
回复

使用道具 举报

 楼主| 发表于 25-9-2009 02:32 PM | 显示全部楼层
原帖由 guohui 于 25-9-2009 11:56 AM 发表
之前有试过是filesystem的问题,kernel支援yaffs1,可是我下载到yaffs2的image进去,结果也是出现这种信息。


initramfs 好像是利用 cache 來當 filesystem, 不太懂 = ="
我去試看看把所有 kernel 都 support 的 filesystem 全開好了.
回复

使用道具 举报

 楼主| 发表于 25-9-2009 02:38 PM | 显示全部楼层
原帖由 hackintosh 于 25-9-2009 03:30 AM 发表
你看到吗??
有一个FC的kaki了




原帖由 sktan007 于 25-9-2009 09:49 AM 发表
不过这个人好像才來过一兩次 leh


我是菜鳥 , 請多多包涵, 不要鞭我
回复

使用道具 举报

 楼主| 发表于 25-9-2009 02:43 PM | 显示全部楼层
原帖由 詩魂 于 25-9-2009 02:29 PM 发表

我以前用過3.X的GCC build過2.6的核心, 沒有問題...
另外, 既然您正好要用crosstool build 3.x的crosscompiler, 可否順便寫一篇教學,
本來是我要寫, 但一直抽不出時間, 就交給您啦
也順便寫用crosstool-ng ...


gcc 3.4.5 + glibc 2.3.6 結果還是不行 囧

我文筆很差, 寫文章也是要有天份的啊
回复

使用道具 举报


ADVERTISEMENT

发表于 25-9-2009 02:57 PM | 显示全部楼层

回复 16# tanks 的帖子

那排除compiller的問題.
那您的/etc/inittab是怎麼來的呢?
自已建的還是用busybox的?

懷疑是kernel找不到init...
回复

使用道具 举报

 楼主| 发表于 25-9-2009 03:31 PM | 显示全部楼层

回复 17# 詩魂 的帖子

建出來的 busybox 本身只有 bin, sbin, usr 三個目錄
其他目錄都是自已建的

[tanks@F10-Server etc]$ ls
fstab  group  init.d  inittab  passwd  profile  shadow
[tanks@F10-Server etc]$ cat inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init

tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a
回复

使用道具 举报

发表于 25-9-2009 05:26 PM | 显示全部楼层

回复 18# tanks 的帖子

從kernel panic的地方來看, 像是死在init的時候.
基本上, kernel應該是有執行init行程, 在/init/main.c中有一段:
    if (execute_command) {
        run_init_process(execute_command);
        printk(KERN_WARNING "Failed to execute %s.  Attempting "
                    "defaults...\n", execute_command);
    }
    run_init_process("/sbin/init";
    run_init_process("/etc/init";
    run_init_process("/bin/init";
    run_init_process("/bin/sh";

    panic("No init found.  Try passing init= option to kernel.";

基本上執行run_init_process, 執行的init是第一個行程, 也是所有行程的父行程,
只有在執行init有問題才會return, 進而執行panic("No init found.  Try passing init= option to kernel.";
您的機器沒有這訊息, 判斷init行程沒問題.


init行程執行的第一個文件為inittab, 所以我才請您檢查這個文件. 若這個文件沒問題,
再一一往下track, 往下找下一個可能出現的問題.
這是我的想法, 您認為呢?  我之前沒遇過這問題, 同時, 也沒有機器幫您試.
提供一點看法給您參考, 若同意我的想法, 可依此往下trace下去,
可以的話, 重建root filesystem再試看看
回复

使用道具 举报

发表于 25-9-2009 05:41 PM | 显示全部楼层
btw, 您是李宏的學弟嗎?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-6-2024 11:39 PM , Processed in 0.079039 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表