Linux使用啟動(dòng)加載中文件系統(tǒng)
出處:互聯(lián)網(wǎng) 發(fā)布于:2011-09-04 12:24:15
Linux 操作系統(tǒng)是UNIX 操作系統(tǒng)的一種克隆系統(tǒng)。它誕生于1991 年的10 月5 日(這是次正式向外公布的時(shí)間)。以后借助于Internet 網(wǎng)絡(luò),并經(jīng)過全世界各地計(jì)算機(jī)愛好者的共同努力下,現(xiàn)已成為今天世界上使用多的一種UNIX 類操作系統(tǒng),并且使用人數(shù)還在迅猛增長.Linux 操作系統(tǒng)的誕生、發(fā)展和成長過程始終依賴著以下五個(gè)重要支柱:UNIX 操作系統(tǒng)、MINIX 操作系統(tǒng)、GNU 計(jì)劃、POSIX 標(biāo)準(zhǔn)和Internet 網(wǎng)絡(luò) 。
Linux是的自由電腦操作系統(tǒng)內(nèi)核。它是一個(gè)用C語言和匯編語言寫成,符合POSIX標(biāo)準(zhǔn)的類Unix操作系統(tǒng)。Linux早是由芬蘭黑客林納斯.托瓦茲(Linus B. Torvalds)為嘗試在英特爾x86架構(gòu)上提供自由的類Unix操作系統(tǒng)而開發(fā)的。該計(jì)劃開始于1991年,林納斯·托瓦茲當(dāng)時(shí)在Usenet新聞組comp.os.minix登載帖子,這份的帖子標(biāo)示著Linux計(jì)劃的正式開始。在計(jì)劃的早期有一些Minix黑客提供了協(xié)助,而今天無數(shù)程序員正在為該計(jì)劃無償提供幫助。 技術(shù)上說Linux是一個(gè)內(nèi)核。“內(nèi)核”指的是一個(gè)提供硬件抽象層、磁盤及文件系統(tǒng)控制、多任務(wù)等功能的系統(tǒng)軟件。一個(gè)內(nèi)核不是一套完整的操作系統(tǒng)。一套基于Linux內(nèi)核的完整操作系統(tǒng)叫作Linux操作系統(tǒng),或是GNU/Linux。
大家看了上面Linux 操作系統(tǒng)應(yīng)該對(duì)它有一定的了解,現(xiàn)在就讓我來介紹Linux啟動(dòng)過程中文件系統(tǒng)的加載是怎樣實(shí)現(xiàn)的。一些初學(xué)者可以看看,這也是我不在嵌入式那個(gè)版上發(fā)文的原因。對(duì)于高手來說,如果你們不吝嗇時(shí)間的話,希望也能幫我看看,指點(diǎn)一下其中的錯(cuò)誤。這也是我到這里來和大家交流的目的。
在完成了模塊驅(qū)動(dòng)后,就要掛載文件系統(tǒng)了。我一直以為 :
我編譯的內(nèi)核是采用了initrd的模式,設(shè)備是在RAM DISK文件系統(tǒng)下的/linuxrc腳本程序加載的,因此在這上面浪費(fèi)了很多時(shí)間。不過對(duì)initrd算是有了比較深的理解,這個(gè)等一下再說。
其實(shí),內(nèi)核掛載的個(gè)文件系統(tǒng)就是nand flash中的root.cramfs,關(guān)于掛載相關(guān)的代碼mount_root()在文件/fs/super.c里面。隨后將devcie文件系統(tǒng)掛載到/dev目錄下面,代碼為mount_devfs_fs()。因?yàn)椴捎昧薾oninitrd的模式,因此文件系統(tǒng)的掛載就完畢了,init進(jìn)程繼續(xù)往下走到一直到運(yùn)行:
if (execute_command)execve(execute_command,argv_init,envp_init);這里init切換成另外一個(gè)線程,運(yùn)行程序在execute_command中定義。execute_command是vivi傳進(jìn)來的命令行,啟動(dòng)過程中可以看到:
Kernel command line: noinitrd root=/dev/bon/2 init=/linuxrc console=ttyS0因此execute_command對(duì)應(yīng)/linuxrc,因此程序運(yùn)行根目錄下的腳本linuxrc,在我的系統(tǒng)中他對(duì)應(yīng):
#!/bin/shecho "mount /etc as ramfs"/bin/mount -n -t ramfs ramfs /etc/bin/cp -a /mnt/etc/* /etcecho "re-create the /etc/mtab entries"/bin/mount -f -t cramfs -o remount,ro /dev/mtdblock/3 //bin/mount -f -t ramfs ramfs /etcexec /sbin/init這個(gè)就不解釋了(是啟動(dòng)bash),大家可以在linux下把root.cramfs掛載到/mnt下面看看內(nèi)容就知道了:
mount –t cramfs –o loop root.cramfs /mnt/cramfs這里其實(shí)想告訴大家,我們?nèi)绾螌?shí)現(xiàn)開機(jī)自動(dòng)加載一些運(yùn)行程序,現(xiàn)在應(yīng)該很明白了吧,寫個(gè)腳本就OK了。(其實(shí)是我以前一直在yy這個(gè)問題)講一下initrd(initail ram disk)原理我就不說了,陳詞濫調(diào)了,網(wǎng)上多的很。我將一點(diǎn)我的理解,initrd包含了部分module的驅(qū)動(dòng),從一定程度上分擔(dān)了內(nèi)核的大小,因?yàn)閱?dòng)的時(shí)候這兩者還是要同時(shí)被load到memory中去的;因此更重要的是它可以保證內(nèi)核的可移植性,對(duì)不同的硬件平臺(tái),只要提供不同的initrd文件系統(tǒng),而內(nèi)核可以保持不變。因此,initrd的主要作用是加載一些復(fù)雜的與平臺(tái)相關(guān)的硬件,如SCSI硬盤驅(qū)動(dòng),網(wǎng)卡驅(qū)動(dòng)(像無盤工作站,使用nfs)等。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場(chǎng)網(wǎng),http://hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- ARM技術(shù)架構(gòu)與應(yīng)用開發(fā)實(shí)踐指南2026/1/6 10:40:19
- 嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)選型與移植技術(shù)指南2025/12/31 10:42:31
- 工業(yè)嵌入式系統(tǒng):通信接口技術(shù)選型與抗干擾設(shè)計(jì)實(shí)踐2025/12/15 14:36:53
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時(shí)代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識(shí)2025/7/14 16:59:04
- 高速PCB阻抗控制核心實(shí)操規(guī)范
- 高速數(shù)字系統(tǒng)(如DDR、SerDes)中的信號(hào)完整性濾波
- MOSFET在UPS電源中的應(yīng)用解析
- 電源管理IC在物聯(lián)網(wǎng)設(shè)備中的應(yīng)用
- SMT連接器焊接缺陷分析
- MOSFET在汽車電子中的應(yīng)用要求
- 通信設(shè)備電源管理IC應(yīng)用解析
- 通信設(shè)備連接器選型與設(shè)計(jì)
- PCB電磁兼容性(EMC)設(shè)計(jì)核心實(shí)操規(guī)范
- 物聯(lián)網(wǎng)節(jié)點(diǎn)低功耗設(shè)計(jì):信號(hào)鏈中的濾波與功耗管理









