uclinux - Linux

Charlie avatar
By Charlie
at 2008-07-11T11:30

Table of Contents

※ 引述《lowvoice (i am sam)》之銘言:
: 想請問一下有沒有會uclinux的前輩可以幫我解答一下
: 我的目的是把邊好的uclinux放入use隨身碟來開機
: 現在做到的部分是已經可以讀入grub
: 然後也可以把kernel讀近來了
: 但是就讀不到file system
: 他會顯示root=.....有錯誤
: 但是我只有一支隨身碟插在主機板上
: 所以我打root =/dev/sda1但不知道是哪裡錯了
: 不知道有誰可以幫幫我
: 謝謝

我想,這主要是因為你的USB storage還沒驅動,
因此kernel還沒法找到/dev/sdxx

你的GRUB有設定initrd嗎?
0)
如果沒有,我還不知如何進行,因為網路上LiveUSB(含一般distrub.)的方式都有使用
主要是因為kernel module的問題以及USB storage需要一點sleep喚醒(step 3)

如果有,你可以修改一下initrd,大致方式如下:
(NOTE:以下所說的是initrd.gz "檔案內" ,不是你的根目錄哦)
1)
你在complier kernel時,USB相關的選項如果是使用module的話
(目前各大distrub. 都使用此方式,如果你是用它們的來修改
;但uclinux 好像(?) 不是,這你可能要自己check一下你make的.config)
在/linuxrc中加入 insmod 將USB相關的module載入(及filesystem如vfat)
(當然你的/lib/module/2.6.xx/....ko要記得copy進去initrd.gz哦)
(要ins那些module,最簡單的方式是在你的host上,接上你的USB,mount完
使用lsmod查有載入的module,直接在linuxrc上全部insmod相同的)

如果你不是使用module的方式則不用insmod,略過本項

2)
如果你是使用2.6.xx的udev,記得驅動它(動作非當多,不寫了)
(一般initrd是沒有使用udev的,大都在進入init時由rc.sysinit啟動)

如果你沒驅動udev則,(大部份如此)
記得在 /dev內加入sdax
(大部部的distrub使用for loop 直接在 /dev內動態加入sd[a-n][1-xx]個
block device)
不然沒有 dev,kernel還是無用武之地


3)
Sleep,就是等.....(這很重要,因為其它的storage不用等,但USB storage一定要)
因為USB需要喚醒,之前系統能載入USB內的vmlinux,initrd.img等.....是bios功能
現在USB才正式交由kernel接管,且要等kernel可以管的動它,
不然它還是不受教的(不給動的)
目前有看到直接sleep 3 秒,有sleep 6秒
上回我在一只LiveUSB上,因為是白牌的,它要Sleep 30秒,
kernel才可以R/W USB (usb STORAGE 好壞,馬上出現)
(一般bios在loading完kernel,initrd後,bios會退出系統,
也就放棄usb的控制權,此時usb就停了,usb上的power燈就off或不閃了,
當kernel載入module後,kernel知道如何control/talk to usb,
usb會在閃數下,如在host上,一插入usb裝置一樣,這是第一次talk,
之後第少許時間,usb 的power燈就會一直on,表是link connected
你sleep的時間一定要比這off/on中間的時間大數倍)

4)
其他注意事項:
1.tempfs , sysfs ,proc 要記得mount
2.系統的/sbin/init記得可以正確啟動
3.如何做initrd.{gz,img}, 你可以參考各家distrub.的mkinitrd指令稿
(KERNEL的make在make install時會試著去呼叫/sbin/mkinitrd等...來產生
除了產生vmlinuz以外的其他工作)
如你的host不是針對在liveUSB可運行的,大部份mkinitrd都不會造出可以
使用USB boot的initrd,
4.系統的啟動,大致上是
poweron & check bios
bios load boot loader(ex.GRUB)
boot loader load kernel
boot loader load initrd if it declare(an image file for temp filesystem)
kernel make initrd can run and run it
release initrd memory and mount root=......
run /sbin/init (read setting save in /etc/inittab) as process 0
exit init
poweroff

以上,是我個人的粗略說明,
如有不足,請再問,
如果離題,請告知
如果錯誤,那就只能說 PI sales(台語) 了

--
Tags: Linux

All Comments

音效卡一問

Regina avatar
By Regina
at 2008-07-11T11:21
新組的電腦,主機板晶片為技嘉78G-S2H 第一次試著安裝雙系統Xp跟Ubuntu Linux 安裝XP一切正常 可是安裝Ubuntu Linux後一直沒有聲音... 請問怎麼去找到驅動程式來安裝? - ...

拖動視窗會留下殘影

Zanna avatar
By Zanna
at 2008-07-11T10:09
我是用ubuntu 8.04 hardy,自己寫一個桌面管理程式 我發現可能compiz window manager的問題。 如果我不把內建的nautilus desktop manager關掉就執行我的桌面管理程式, 那拖動視窗就沒有問題。 但是如果我把nautilus desktop manag ...

請問如何將make所編譯到的檔案,輸出成一個文件

Robert avatar
By Robert
at 2008-07-11T08:57
我在編譯的時候,因為內容很多,所以剛編譯到的檔案會跑到終端機的上面後不見, 有辦法讓他輸出成一個文件,讓我用ctrl+F去搜尋嗎? 我用-h找到-p, --print-data-base Print makeand#39;s internal database. 可是好像也不是,版上有人知道 ...

vsftpd問題(容易斷線)

Delia avatar
By Delia
at 2008-07-11T02:13
我用家用的電腦p4 1.8 弄了一個ftp (vsftpd os是suse10) 我開啟功能後 一開始都可以正常連線 可是過了幾個小時 再去連就連不到了 我跑去主機看 發現網路斷了 就是ip route都不見了(我是固定ip) 沒有辦法連上網路 要重新設定 請問這樣子是發生什麼問題呢? 如何 ...

英文版fedora 9, aMSN+gcin無法輸入中文

Anonymous avatar
By Anonymous
at 2008-07-11T00:27
我在灌fedora 9 時,不小心弄成英文安裝 現在是英文版的,有安裝gcin 但是用aMSN無法輸入中文,但是使用者的暱稱就可以顯示中文 也可以看到別人丟來的中文訊息, 爬文看tcl/tk好像遇到中文會有問題 目前我已經更新到8.5版的了,不曉得還有哪邊該設定沒弄好的 麻煩指教一下,謝謝。 p ...