作者 主題: [問題] kernel從哪取得?  (閱讀 10415 次)

0 會員 與 1 訪客 正在閱讀本文。

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
[問題] kernel從哪取得?
« 於: 2007-11-12 11:43 »
請教各位大大,

假設我有一片 powerpc 的版子,
那要到哪裡下載kernel patch? 如果我已經下載2.4.x for pc的kernel.

不好意思都問一些笨問題.

jeans

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #1 於: 2007-11-12 19:49 »
我看不懂你講的 for pc 的 kernel 是什麼,請問你有沒有看過 kernel source 裡 arch 目錄裡有什麼東西?

再來你也沒講你的板子跟平台是什麼,我想只有神才能知道你想要什麼。

至於 patch 去哪抓,兩個答案。
1. 看你用哪家的 solution,通常會給你一個網址可以抓 patch。
2. 自己改,如果板子是自己做的,有的東西可能要自己改 source,通常是跟 hardware 有關係的部份。

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #2 於: 2007-11-14 09:10 »
引述: "jeans"
我看不懂你講的 for pc 的 kernel 是什麼,請問你有沒有看過 kernel source 裡 arch 目錄裡有什麼東西?

再來你也沒講你的板子跟平台是什麼,我想只有神才能知道你想要什麼。

至於 patch 去哪抓,兩個答案。
1. 看你用哪家的 solution,通常會給你一個網址可以抓 patch。
2. 自己改,如果板子是自己做的,有的東西可能要自己改 source,通常是跟 hardware 有關係的部份。


抱歉沒有寫的很清楚, 我指的 for pc 是 i386,
下載 linux-2.6.19.2.tar.bz2 解開, 但是裏面沒有 arch 目錄,
版子是自己的, powerpc 的 860,
所以我想要 run patch 成支援 ppc 的 kernel, 我才能改, 不知道這樣對不對?

jeans

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #3 於: 2007-11-14 10:33 »
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #4 於: 2007-11-14 10:49 »
引述: "jeans"
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?=


ARCH=ppc
CROSS_COMPILE=ppc_8xx-

jeans

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #5 於: 2007-11-14 13:41 »
那你 make menuconfig 的 CPU 部份應該是 PPC 的選項吧?
還有你的 cross-compiler 是自己做的?或是別人提供的?
我沒弄過 PPC,但是 build 非 i386 CPU 的 kernel 也是用同樣的 source 啊,我想原理應該一樣。
我還特地抓了 2.6.19.2 來看的確是有 arch 目錄...

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #6 於: 2007-11-14 16:39 »
引述: "jeans"
那你 make menuconfig 的 CPU 部份應該是 PPC 的選項吧?
還有你的 cross-compiler 是自己做的?或是別人提供的?
我沒弄過 PPC,但是 build 非 i386 CPU 的 kernel 也是用同樣的 source 啊,我想原理應該一樣。
我還特地抓了 2.6.19.2 來看的確是有 arch 目錄...


jeans大大, 謝謝你這麼耐心的回答!

我去 www.kernel.org 下載來用的 kernel 是有 arch 目錄沒錯(也有ppc子目錄),
但是 CPU 部分卻沒有 PPC 的選項, 所以我沒有辦法繼續下一步..

jeans

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #7 於: 2007-11-14 19:53 »
我沒用過 PowerPC,所以沒辦法知道詳細步驟是怎樣,但是 cross-compile kernel 的方法都大同小異,其實你的問題都不是問題,重點是你觀念有沒有建立起來。

1. 你的板子是哪一張?
2. 你的 cross-compiler 是哪來的,自己 build 的嗎?
3. 你要用 ppc,那 arch/ppc 裡的東西你到底有沒有仔細看過?

我連你板子都不知道是哪一張了,當然不可能回答出你的問題。
我也不可能為了回這個問題自己做一個 ppc cross-compiler,而且我手上也沒 ppc 的板子可以測。
其實答案就在 arch 跟最外層的 Makefile 裡。

make ARCH=ppc 8xx_defconfig
make menuconfig

這不一定是正確的做法,不過是一個很好的提示。
你自己想吧。

此外,我是個新手,可能比你還要菜,我碰 embedded linux 大概兩週。
我的理解跟做法不一定是對的,我的板子 SOC 是 ARM。

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #8 於: 2007-11-15 08:40 »
引述: "jeans"
我沒用過 PowerPC,所以沒辦法知道詳細步驟是怎樣,但是 cross-compile kernel 的方法都大同小異,其實你的問題都不是問題,重點是你觀念有沒有建立起來。

1. 你的板子是哪一張?
2. 你的 cross-compiler 是哪來的,自己 build 的嗎?
3. 你要用 ppc,那 arch/ppc 裡的東西你到底有沒有仔細看過?

我連你板子都不知道是哪一張了,當然不可能回答出你的問題。
我也不可能為了回這個問題自己做一個 ppc cross-compiler,而且我手上也沒 ppc 的板子可以測。
其實答案就在 arch 跟最外層的 Makefile 裡。

make ARCH=ppc 8xx_defconfig
make menuconfig

這不一定是正確的做法,不過是一個很好的提示。
你自己想吧。

此外,我是個新手,可能比你還要菜,我碰 embedded linux 大概兩週。
我的理解跟做法不一定是對的,我的板子 SOC 是 ARM。


1. 板子是我們自己做的(不是市面上的evb).
2. ELDK
3. arch/ppc 裏的東西也不少, 我沒有辦法(功力也不到)很清楚的知道是要修改哪幾個檔案, 目前 trace code 對我來說還很吃力(裏面 include, define marco 搞的暈頭轉向).

其實你看我帳號的註冊日期就知道了, 我也是一個新手...

jeans

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #9 於: 2007-11-15 10:11 »
ELDK  這東西我並沒用過,所以沒辦法給你答案。
但是 ELDK 本身應該有一個 kernel,你可以參考看看是怎樣設定的。
arch 裡的東西,我叫你去看不是叫你去 trace,其實不用每個去看,主要的是 arch/configs 裡的東西,基本上那也是參考用的,讓你知道大概要怎樣玩。
此外我幫你 google 一下,有人提到 eldk 要 4.0 之後才能 build kernel 2.6.x
http://ozlabs.org/pipermail/linuxppc-embedded/2006-January/021650.html
當然這些都是參考用,embedded 沒有絕對的。
針對你們自己家的板子,一定要改一些東西,要怎樣改我也不知道,基本上我改自己家的 kernel 是拿電路圖看然後修改。
我摸 embedded 是新手,但 Linux 不是,早在六年前我就自己 build 過 for i386 kernel 了,那時候是因為要支援公司伺服器上的 SMP 所以才自己研究過一下。
以前要讓 Linux 或 BSD 支援 smp 都要自己 build kernel 的,不過較現代的 Linux 與 BSD 都不用自己編 kernel 了。

happa

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #10 於: 2007-11-15 11:25 »
先找出你ELDK install 在哪裡

之後將你的路徑設好
ex:
export PATH=$PATH:/opt/toolchains/uc/bin/



接著就可以make menuconfig
ex:
make menuconfig ARCH=ppc CROSS_COMPILE=powerpc-linux-

Processor  ---> Processor Type --> ( ) 8xx

裡面就有8xx CPU 的選項了                          
 

希望對你有幫助

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #11 於: 2007-11-15 13:09 »
引述: "happa"
先找出你ELDK install 在哪裡

之後將你的路徑設好
ex:
export PATH=$PATH:/opt/toolchains/uc/bin/



接著就可以make menuconfig
ex:
make menuconfig ARCH=ppc CROSS_COMPILE=powerpc-linux-

Processor  ---> Processor Type --> ( ) 8xx

裡面就有8xx CPU 的選項了                          
 

希望對你有幫助


其實我一直弄不清楚的是, 到 www.kernel.org 下載的 source code,
不用 patch 成 for powerpc 的嗎?
因為我從 DENX 上面下載的 kernel 有分 powerpc, arm, mips 等,
但是只有 2.4.x,  而且 make menuconfig 就有 8xx(我path, env有設),
可是從 www.kernel.org 下載的 2.6.x 的 kernel, 裏面並沒有 8xx,
所以有點搞不懂..

jeans

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #12 於: 2007-11-15 14:00 »
www.kernel.org 是 general kernel。
從剛剛到現在我們講的都是一般狀況,不包含特例,但是 embedded 是一種具有明確目標與針對性的軟體,所以通常都是特例。
至於 DENX 為什麼要這樣分,你要自己去問作者,我沒用過也不知道。

happa

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #13 於: 2007-11-15 15:32 »
引述: pupil
引述: "happa"

但是只有 2.4.x,  而且 make menuconfig 就有 8xx(我path, env有設),
可是從 www.kernel.org 下載的 2.6.x 的 kernel, 裏面並沒有 8xx,
所以有點搞不懂..



www.kernel.org 下載的 2.6.x 的 kernel  並沒有 8xx??

因該有吧!!!

我手邊的kerenl "linux-2.6.14.5"

例如  mpc86x_ads 這塊板子就是用 ppc 86x 的CPU
/arch/ppc/configs/mpc86x_ads_defconfig

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #14 於: 2007-11-15 16:25 »
引述: happa
引述: "pupil"
引述: "happa"

但是只有 2.4.x,  而且 make menuconfig 就有 8xx(我path, env有設),
可是從 www.kernel.org 下載的 2.6.x 的 kernel, 裏面並沒有 8xx,
所以有點搞不懂..



www.kernel.org 下載的 2.6.x 的 kernel  並沒有 8xx??

因該有吧!!!

我手邊的kerenl "linux-2.6.14.5"

例如  mpc86x_ads 這塊板子就是用 ppc 86x 的CPU
/arch/ppc/configs/mpc86x_ads_defconfig


抱歉, 沒寫的很清楚.

我說的在2.6.x裏沒有, 是指 make menuconfig裏沒有8xx, 可是卻有 arch/ppc/ 的目錄, 但是後來按照你指點的方式用 make menuconfig ARCH=ppc CROSS_COMPILE=powerpc-linux- 就有了!
這裡跟我用DENX 2.4.x的不太一樣, 我是用 make mrproper; make fads_config(假設), 然後 make dep; make menuconfig; make uImage.

可以冒昧請教一下 2.6.x build embedded kernel 的步驟嗎?
是不是都要加上 ARCH=ppc CROSS_COMPILE=powerpc-linux- 才行..
還是我要先去研究 Makefile?

jeans

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #15 於: 2007-11-15 17:31 »
你先 make 一個起來然後設定 uboot 用 tftp 去 load 你的 kernel 來開機試試看啊?
不會動再看 error message 是啥,然後再改啊。
其實我 make kernel 沒像你用那麼多步驟...

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
[問題] kernel從哪取得?
« 回覆 #16 於: 2007-11-16 08:36 »
引述: "jeans"
你先 make 一個起來然後設定 uboot 用 tftp 去 load 你的 kernel 來開機試試看啊?
不會動再看 error message 是啥,然後再改啊。
其實我 make kernel 沒像你用那麼多步驟...

前幾篇有貼過,

## cmdline at 0x007FFF00 ... 0x007FFF26
memstart = 0x00000000
memsize = 0x04000000
flashstart = 0x20000000
flashsize = 0x04000000
flashoffset = 0x00000000
sramstart = 0x00000000
sramsize = 0x00000000
immr_base = 0xFF000000
bootflags = 0x00000001
intfreq = 66.500 MHz
busfreq = 66.500 MHz
ethaddr = 00:01:02:03:04:05
IP addr = 192.168.1.2
baudrate = 38400 bps
No initrd
## Transferring control to Linux (at address 00000000) ...

上面, 就醬..

pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
回覆: [問題] kernel從哪取得?
« 回覆 #17 於: 2007-11-26 09:20 »
引述: jeans
你先 make 一個起來然後設定 uboot 用 tftp 去 load 你的 kernel 來開機試試看啊?
不會動再看 error message 是啥,然後再改啊。
其實我 make kernel 沒像你用那麼多步驟...
前幾篇有貼過,

## cmdline at 0x007FFF00 ... 0x007FFF26
memstart = 0x00000000
memsize = 0x04000000
flashstart = 0x20000000
flashsize = 0x04000000
flashoffset = 0x00000000
sramstart = 0x00000000
sramsize = 0x00000000
immr_base = 0xFF000000
bootflags = 0x00000001
intfreq = 66.500 MHz
busfreq = 66.500 MHz
ethaddr = 00:01:02:03:04:05
IP addr = 192.168.1.2
baudrate = 38400 bps
No initrd
## Transferring control to Linux (at address 00000000) ...

上面, 就醬..

上面的問題是很難回答 還是沒救了 ???
happa跟jeans大大呢?

happa

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
回覆: [問題] kernel從哪取得?
« 回覆 #18 於: 2007-11-27 10:01 »
上面的問題是很難回答 還是沒救了 ???
happa跟jeans大大呢?

有很多種情形:(我列出幾種我以前遇過的問題)
1. boot command 傳錯了,確認一下你的uboot  "bootargs"
2. root fs 沒有正確mount 起來,你的root fs 在哪裡?(nfs,ramdisk,或是在flash上,建議先用NFS,來釐清問題)
3. kernel 的 uart driver 沒有正確啟動(你kernel make 的版子,H/W 與你自己的版子不同)
其中第3點最麻煩,可能要自己修改或是create 屬於你自己版子(先check H/W spec吧!!)



pupil

  • 可愛的小學生
  • *
  • 文章數: 11
    • 檢視個人資料
回覆: [問題] kernel從哪取得?
« 回覆 #19 於: 2007-11-28 09:50 »
上面的問題是很難回答 還是沒救了 ???
happa跟jeans大大呢?

有很多種情形:(我列出幾種我以前遇過的問題)
1. boot command 傳錯了,確認一下你的uboot  "bootargs"
2. root fs 沒有正確mount 起來,你的root fs 在哪裡?(nfs,ramdisk,或是在flash上,建議先用NFS,來釐清問題)
3. kernel 的 uart driver 沒有正確啟動(你kernel make 的版子,H/W 與你自己的版子不同)
其中第3點最麻煩,可能要自己修改或是create 屬於你自己版子(先check H/W spec吧!!)




多謝happa大大, 我太感動了!
以下還請happa多多指點,,

1,2. bootargs=console=/dev/ttyS0,38400 noinitrd
我試過很多種bootargs, 但是不太確定是不是一定要有rootfs, 如果說我只是想要讓console有東西出來就好..

3. 這點我也很困擾, 我完全不知道要改哪裏, 假設我是用MPC的SMC1當console, 我在kernel configuration裏相關的選項都有勾選, 那bootargs裏的console到底要如何設? 我想我用/dev/ttyS0一定是錯的, 但是又沒什麼概念..
您提到kernel 的 uart driver 沒有正確啟動, 如果我要自己修改或create要從何下手?
還請版上各位大大多多幫忙, 我卡在這很久了. :'(