grub linux rootfs,rootfs文件系統(筆記)(草稿)

文件系統簡介

文件系統就是個軟件,幫用戶來管理一些二進制的信息,管理外存上存儲的這些二進制

各種文件在內存中都是以二進制的形式來存在的,如果沒有文件系統,用戶就需要自己去決定這些二進制的東西是什么,需要自己去和硬件打交道,有了文件系統,就省去了用戶和硬件直接打交道的過程。

linux和windows以及嵌入式linux文件系統的區別?

在pc機上的linux的boot和根文件系統是一起的,不在一起,是掛載看到的,雖然是在根文件系統是能看到boot的,但是物理上是分開的。因為這個的boot是有文件系統的

而在嵌入式linux中,boot和根文件系統是分開的,在根文件下是看不到內核grub等東西的,1.是因為根文件系統沒有去把boot做進來,2.因為嵌入式linux的boot中是沒有文件系統用的。在嵌入式linux中是沒有swap

優盤上的文件系統

掛載機制

基于內存的文件系統

可以把內存中的一塊當成文件系統中的一部分

文件系統就分為:根文件系統和普通的文件系統。比如優盤就有自己的普通的文件系統,是fat32的文件系統

而根文件系統則不一定是fat32的。

還有一種nfs的網絡文件系統

根文件系統為這些文件系統提供了一種框架

VFS

不基于硬件,作用是去識別各個設備上的文件系統,只存在于內存中的

執行的linux.rc這個可執行程序,進程號是1的程序就是這個。

pc機上的內核會通過bootpImage來識別硬盤上的文件系統

101208120444.jpg

用ext3的read讀出來數據,在用ext2的write寫進去,中間就是用VFS這個借口來,調用不同的文件系統的函數來去實現一個cp的命令。

常見的根文件系統有基于flash的jffs2、yaffs、yaffs2、cramfs、基于網絡的nfs等

nfs比較特別

用df來查看自己的根文件系統掛載

看到的就是這樣子

/dev/mapper/VolGroup00-LogVol00

14093368 ? 9200464 ? 4165456 ?69% /

/dev/sda1 ? ? ? ? ? ? ? 101086 ? ? 15783 ? ? 80084 ?17% /boot

tmpfs ? ? ? ? ? ? ? ? ? 257800 ? ? ? ? 0 ? ?257800 ? 0% /dev/shm

.host:/ ? ? ? ? ? ? ?122873120 ?51227228 ?71645892 ?42% /mnt/hgfs

sda1中掛載的就是boot

tmpfs就內存中的根文件系統

69%本來應該是sda1

顯示的是掛載過來的

Linux根文件系統目錄結構

/bin /sbin /dev /etc /lib /usr /var

/proc /tmp /home /root /mnt /sys

/bin /sbin

放的是命令,bin下是常用的

sbin是系統常用的命令

usr/bin 下是用戶的命令

/dev 下是一些設備文件

比如 tty0 touchscreen sound usb 等

一般掛載devfs或udev

這些名字可以自己改,是在內核中去修改的,修改的自己認識就可以的,這些東西都是內核啟動完成后放進去的,做文件系統的只是起個文件夾得名字就可以了,具體放什么,是在內核啟動中去放的

/etc 系統啟動中需要的各種配置文件

比如啟動時自動掛載的文件系統,自動運行的腳本,包括root一般的初始密碼為什么是6個1,boa服務器配置腳本等東西,這是linux做根文件系統特別重要的文件,一般啟動不起來,都是以為這個文件夾中的東西沒有配置好

/lib

存放應從程序所需要的共享庫

如 ls,cp ifconfig等系統明亮以及自己交叉編譯器所用的

/usr/bin

比如qt需要的庫就會放到這里

/usr

一般存放用戶需要的東西,比如用戶自己安裝的東西,總的來說就是不是根文件系統需要的東西會放在這里

/var

存放系統啟動過程會自動保存的一些東西,這里放的一些,日志之類的東西,都是掉電丟失的

一般掛載ramfs

ramfs就是把內存中的一塊拿出來當做文件系統

tmpfs也是用來基于ramfs的文件系統

/tmp

一般是些臨時文件的程序需要的目錄

上面的這兩個都是占的內存的

/proc

dev 是用來放設備節點

而這里是用來放 存放記錄了當前存在多少模塊,還有中斷的使用情況,使用次數,包括當前系統的字符設備

里面存放的那些數字表示的是進程,里面就存放了這些進程所需要的一些東西,實際去做的時候做成空的,去掛載,一般都是需要去寫腳本自動掛載,若不掛載一般系統會出各種奇怪的錯誤

/root

root的家

/home

其他用戶的家目錄

/mnt

臨時文件系統掛載的目錄

/sys

和proc類似,每加載一個驅動,就會記錄這個驅動申請了哪些硬件資源等等,dev中只是存放了設備的名字,而這里面則是具體的東西

/rc(pc 機上的linux沒,在開發板上才有)

是啟動起來的第一個進程

(重要 :根文件系統的構建)

需要了解嵌入linux的啟動過程

"noinitrd ?root=/dev/mtdblock/1 ?init=/linuxrc ?console=ttyS0";

root: ? 指定了根文件系統在FLASH分區中的位置

console:指定了內核啟動后首選的控制臺

init: ? 指定了linux內核啟動完畢后調用的第一個用戶態程序,即進程號為1的進程。

root=/dev/mtdblock/1??表示從這里去找根文件系統 ,看內核中去怎么寫,內核中是2就是2

init=/linuxrc 啟動以后的第一個用戶態的進程

console=ttyS0 啟動信息打印到那里去 ,這個是串口

linuxrc那里來的?linuxrc就是init進程,內核只啟動這一個程序,其他的根文件系統都是由這個進程來啟動的,內核是工作在內核態的,只要啟動用戶態的這個linuxrc這個進程,就表示內核啟動的工作的結束(有系統調用的時候內核還是會工作的)。

其他的用戶進程都是屬于這個進程子進程,因為都是這個進程的子進程

會讀取inittab的配置文件,來按照這個腳本來執行

linuxrc的執行過程

(結合ppt來看)

(后續補充……)

inittab是在etc文件下的

inittab文件的格式

(補圖)

第一個id是表示使用的控制臺,啥也不寫,表示和內核是一樣的,可以和內核不一樣,一般是默認不寫

第二個runlevels是 對嵌入式是沒有意義,對于pc機的linux有意思,從0到5,5代表圖形界面,表示開機的時候是進圖形界面,3是表示字符界面 ,0是啟動不起來了,1是單用戶模式,類似于安全模式,2是多用戶

可以在/etc/inittab 中看到

第三action個是 表示程序是怎么去執行的(補圖)

respawn 啟動的進程是不允許退出的 在嵌入式linux中的bash就是不允許退出的 會不斷的重啟

第四個process是要執行的程序的名字(需要路徑)

init進程只能控制這8個進程

console c 5 1 ?(c是字符 5 是主設備號 1是從設備號)

比如 5 表示是串口,1就是具體com1或者別的com口

什么是設備節點?

就是dev下的一個名字

字符設備

最多可以有0到254,共255個(類)設備,是空的就可以去申請

塊設備

網絡設備

所有的驅動都是工作在內核態的

內核啟動linuxrc就把工作權利交給根文件系統了

在profile中寫

alies vi = ‘vim’ 這樣以后vi就相當于vim了

嵌入式領域中的命令基本上都是從busybox連接過來的

可以在bin下執行ll -h來看

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529332.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529332.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529332.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux 如何查看屬性,linux?下查看系統屬性

linux 下查看系統屬性(2009-06-28 19:01:34)標簽:linux雜談分類:OSlinux下查看系統屬性1、查看cpu信息查看所有cpu信息:cat /proc/cpuinfo查看cpu類型: grep "model name" /proc/cpuinfo2、查看內存信息:查看…

幼兒學數數的c語言程序,【資源學習】c語言程序代碼,登錄幼兒園200個小朋友的數據...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓編寫程序,登錄幼兒園200個小朋友的數據:姓名、性別、年齡、身高、體重、出生日期,分別按年齡排序后輸出。要求:(1)登錄數據用函數input()(2)按身高排序用函數sort()(3)輸出排序結果用…

c語言傳入參數不正確,請高手看看一下程序怎么回事啊?老是提示傳參數錯誤...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#includevoid main(){ void average(float, int);void search(float,int);static float score[][4]{{65,67,70,60},{80,87,90,81},{99,90,100,98}};average(score,12);search(score,2);}void average(float *p,int n){float *p_end…

vs用c語言寫貪吃蛇,熬書幾個月,終于編出簡易的貪吃蛇了,VS2013

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include#include#include#include#define X 30#define Y 15void guozi(int *x, int *y);int main(void){char map[X][Y];int x;int y;//橫縱坐標int i;int j;//標記蛇頭int p, q;//標記蛇尾int t, d;//尋找蛇尾int n 4;//蛇的長度…

中國電信學院c語言題庫,電腦題庫試題精編版.doc

1【單選題】以下關于圖靈機的說法,正確的是( ?)。A、圖靈機是一種計算機理論模型B、圖靈機是用于圖靈測試的計算機C、圖靈機是第一臺機械式計算機D、圖靈機是馮諾依曼體系結構計算機正確答案: A?2【單選題】關于中文信息編碼,以下正確的敘述…

統計c語言中英文字幕,C語言日記——遞歸

C語言日記——遞歸首先,允許我從《c primer plus》中摘一句話:C允許函數調用它自己,這種調用稱為遞歸。有一段時間一直搞不清楚遞歸的實質,直到看到如下代碼:#includeint up_and_down(int n);int main() {up_and_down(…

gnu linux中 使用,在Linux上使用GNU sed的方法

grep 命令grep 在文件(或命令輸出)中搜索指定正則表達式,并且在標準輸出中輸出匹配的行。樣例顯示文件 /etc/passwd 中用戶 gacanepa 的信息,忽略大小寫。#grep-i gacanepa /etc/passwd顯示 /etc 文件夾下所有 rc 開頭并跟隨任意數字的內容。#ls-l /etc …

android開機自動開啟zram,低內存配置 ?|? Android 開源項目 ?|? Android Open Source Project...

Android 支持內存為 512 MB 的設備。本文檔旨在幫助 OEM 優化和配置 Android 內核 4.4,使其能夠在低內存設備上運行。在下文所述的優化措施中,有幾項非常通用,甚至也可應用于以前的版本。Android 內核 4.4 平臺優化改善了內存管理采用了經驗證…

android 自動 鍵盤,關于Android中的軟鍵盤

InputMethodService為我們的輸入法創建了一個Dialog,并且將該Dialog的Window的某些參數(如Gravity)進行了設置,使之能夠在底部或者全屏顯示。當我們點擊輸入框時,系統對活動主窗口進行調整,從而為輸入法騰出相應的空間&#xff0c…

Android渠道包自動發布市場,Android Gradle實現打包指定渠道后自動上傳到fir

fir分三個主要步驟1.獲取fir上傳憑證2.上傳APKAPP logo圖標3.獲取最新的下載地址供別人下載注:python使用的是requests網絡請求庫1.獲取fir上傳憑證image.png代碼如下:# 第一步:獲取fir上傳憑證print("get fir upload certificate"…

android studio vfs,Android Studio:嘗試呈現XML布局的InvalidVirtualFileAccessException

我正在嘗試在我的應用中預覽xml布局(任何xml布局).我正在使用Android Studio 1.5 Preview 2.我一遍又一遍地收到此錯誤:InvalidVirtualFileAccessException:訪問無效的虛擬文件:file:// D:/Scott/Android/Studio/MyApp/app/build/intermediates/classes/debug/com/scott/myapp/…

android 基類fragment,Android DialogFragment 基類的定制

鴻洋博客介紹:DialogFragment的基本使用好處:1:使用DialogFragment來管理對話框,當旋轉屏幕和按下后退鍵時可以更好的管理其聲明周期,它和Fragment有著基本一致的生命周期2.DialogFragment也允許開發者把Dialog作為內嵌…

升級鴻蒙系統無法選擇應用,申請鴻蒙系統有一個應用選擇怎么選擇呢

[分享交流]申請鴻蒙系統有一個應用選擇怎么選擇呢34364電梯直達huafen774590890新學乍練發表于 2020-12-18 22:19:17來自:HUAWEI Mate 30 Pro 5G最新回復 2020-12-19 09:31:55要怎么選擇大家知道嗎?想著你的狼自成一派發表于 2020-12-18 22:22:29來自&am…

html5 網頁游戲論文,JavaScript編寫的網頁小游戲,很給力

以下為游戲代碼:var timerID null;var INT 40;var loadFLG 0;var gameFLG 0;var missFLG 0;var tim 0;var blcol new Array(5); // block colorvar blsta new Array(40); // block statusvar blNO new Array(40); // block Novar blclr 0; // clear block…

c 插件讀取有屬性的html6,廖雪峰的JS教程6-jQuery

jQueryjQuery是JavaScript世界中使用最廣泛的一個庫。jQuery這么流行,肯定是因為它解決了一些很重要的問題。實際上,jQuery能幫我們干這些事情:消除瀏覽器差異:你不需要自己寫冗長的代碼來針對不同的瀏覽器來綁定事件,…

html5中的css特性,淺談HTML5 CSS3的新交互特性

本文標題的這副圖片,是用phosotshop制作的。但是,在搜索引擎中你卻無法搜索到它,搜索引擎還沒有強大到能夠識別圖片里面的文字。并且由于圖片的體積不算太小,可能網速慢的網友在瀏覽的時候不得不耐心的等待圖片的刷新。那么&#…

html表格通過郵件發送,通過html表格發電子郵件

[email protected]>Create this tableThe field "what" is for different categoriesCREATE TABLE email_notify (ID int(11) DEFAULT ‘0‘ NOT NULL,What varchar(60) DEFAULT ‘0‘ NOT NULL,Name varchar(60) DEFAULT ‘0‘ NOT NULL,Email varchar(60) DEFAU…

計算機專業知識多選題證監會,2019年國家公務員考試中國證監會(計算機類)專業科目考試大綱...

2019年國家公務員考試中國證監會(計算機類)專業科目考試大綱由國家公務員考試網公告解讀欄目由提供,更多關于2019國家公務員考試大綱,計算機類國考考試大綱,證監會國考考試大,國家公務員考試公告解讀的內容,請關注國家公務員考試網/廣東公務員考試網&…

計算機和網絡老是斷開,電腦插上網線還是顯示斷開連接怎么辦

在網絡故障處理中遇到過千奇百怪的問題,這里就說一個比較怪異的問題。一個網線插口,有的電腦插上網線可以正常上網,而有的電腦插上就顯示斷開連接。試了好多辦法,換了網線,換了插口,換了路由器,…

計量經濟學第六版計算機答案,伍德里奇計量經濟學導論計算機習題第六章第13題c_6.13...

伍德里奇計量經濟學導論計算機習題第六章第13題,答案和MATLAB代碼clear,clc;% c6.13 by% 打開文字文件和數據文件importdata(meap00_01.des);dataxlsread(meap00_01);% 檢驗所用數據是否為非空Isnanisnan(data(:,[3,5,8,9]));asum(Isnan);bfind(a0);data1data(b,:);% 變量命名m…