① arm板linux下文件系統啟動項不能運行
你 ARM 跑的 Linux 是 Fedora 還是 RHEL ?
-----------------------
rc.local 是一個腳本,是要被運行才能被運行裡面的東西的,這個腳本並不是被內核肯定運行,而是看你的 Linux 啟動腳本。
這個 rc.local 是桌面 Linux 的習慣,但也不是所有 Linux 都會去執行的習慣。你的 ARM 系統如果不是完全和 Linux 系統相同的啟動腳本,那麼這里運行肯定有問題。
與其你來問 rc.local 裡面的東西為什麼不被運行,我覺得還不如去看看你的 Linux 系統啟動腳本到底是如何啟動的。
② linux文件系統的組成和作用
/bin 見截圖中的解釋
/boot 是系統啟動時所需文件的存放處。
/dev 顧名思義就是存放設備文件的地方。包括滑鼠,鍵盤等設備的驅動文件等
/etc見截圖中的解釋
/home ..
/lib 包括其他一些目錄下的lib文件夾存放的是 函數運行時所調用的函數庫
/mnt 是軟盤和光碟的掛載點
/opt 是安裝軟體的目錄
/proc 虛擬文件系統,目錄中的文件存放在內存中。包括可以查看CPU的信息。
/sbin ..
/srv 存放網頁的文件夾 支持www等服務
/temp是存放臨時文件的(所以重要文件不要放在這里)
/user 存放與用戶相關的信息
/var 用來管理系統運行期間的信息
③ Linux基本配置和管理---- Linux系統啟動詳解
linux基本配置和管理----
linux系統啟動詳解1
系統啟動的流程
BIOS
->
MBR+boot
code
->
執行引導程序:
GRUB
->
載入內核
->
執行init
->
運行runlevel2
啟動詳解
1
BIOS
1
BIOS
指的是基本的輸入輸出系統(basic
input
output
system),一般保存在主板上的BIOS晶元中
2
計算機啟動的第一步一般都是先啟動BIOS,然後BIOS去檢查硬體以及查找可啟動的設備
3
可啟動的設備可以在BIOS中進行設置,包括USB
,
CDROM
,
HD等
2
MBR
1
MBR是512位元組的,前446位元組為引導代碼
2
BIOS通過第一個扇區的512位元組中最後兩個位元組為55aa來判斷設備為啟動設備
3
MBR只是去載入引導程序GURB
3
GRUB
1
GRUB是現在linux使用的主流的引導程序
2
GRUB可以引導幾乎所有的操作系統
3
GRUB的相關文件保存在/boot/grub中
4
KERNEL
1
MBR的引導代碼將負責找到並載入linux的內核
2
linux內核保存在
/boot/vmlinuz......
3
一般還會載入內核模塊的打包文件
/boot/init.....
4
linux為了保持內核的精簡會將一些不常用的驅動,功能編譯為模塊,然後在要用的時候動態的載入,而這些模塊被保存為initrmfs文件
5
早期的linux是使用initrd文件,但是現在的絕大多數的linux版本都是使用initrmfs,這樣能夠更節省空間,更加靈活
6
命令dmesg可以用來查看被次啟動內核的輸出信息
5
INIT
1
init
是linux運行的第一個進程,init是所有進程的父進程,編號為1
2
調用/etc/rc.d/rc.sysinit來對系統進行初始化,掛載文件系統,並且根據運行級別啟動相應的程序
3
linux的運行級別
0
關機
1
單用戶模式
2
不帶網路的多用戶模式
3
命令行的多用戶模式
4
未使用
5
圖形界面多用戶模式
6
重啟
4
我們可以通過runlevel查看之前和當前的運行級別
5
命令init可以用來查看改變當前的運行級別
6
單用戶修改root密碼
1
為內核傳遞參數1或者是single可使系統進入單用戶模式
2
單用戶模式不啟動任何的服務
3
單用戶模式直接以root登錄,不需要密碼
4
我們可以通過passwd來修改root的密碼
5
由於任何接近我們這個物理機的人都有可能修改我們的root密碼,因此我們可以通過GRUB加密來防止密碼被修改
6
我們在grub.conf中的啟動設置裡面添加一行password
--md5
加密後的串
密碼我們可以通過grub-md5-crypt
生成
④ 如何設置linux文件系統開機啟動進入其他目錄
這里說的是用戶登錄進來的目錄吧, 只要修改 /etc/passwd 中相應用戶第六個欄位(家目錄)即可
⑤ linux如何重啟文件系統
執行命令
hostname,修改當前系統的主機名
#
hostname
newhost
修改
/etc/sysconfig/network,使得下次啟動時使用新的主機名
hostname=newhost
修改
/etc/hosts。不修改的話,apache等需要解析主機名的服務將不能啟動
127.0.0.1
newhost
localhost
最後就是命令行提示符中的主機名還沒有改變,如果很在意的話,重新登錄一下就行了
⑥ linux文件系統錯誤啟動不了
檢查磁碟命令e2fsck
e2fsck -f /dev/mapper/你具體需要檢查的路徑
弄磁碟最快捷的恢復方式是重裝,如果是在虛擬機上,最好弄個快照,否則,有得你麻煩!但這些方式都學不到東西
⑦ linux啟動盤製作 文件系統怎麼選
下載好你想安裝的Linux系統的boot.iso(用於製作啟動)和System.iso(用於系統安裝)
具體的步驟以下:
[*]用UltraISO 打開xiaopanOS.iso
[*]啟動 - 寫入硬碟映像,選擇u盤-啟動類型-格式化 - 寫入 。
[*]寫在最後,完成
[*]在電腦BIOS中設置為啟動盤
[*]開始安裝系統。
問題:
用U盤安裝時,出現如下錯誤: Could not find kernel image: linux
最終方法:
1、確保U盤中存在syslinux.cfg文件。隨著所安裝的版本的不同,該文件的位置可能不同,通常在/boot/syslinux目錄下或者/syslinux目錄下。
2、如果在U盤中存在isolinux.cfg文件但卻不存在syslinux.cfg文件,那麼就把isolinux.cfg文件重命名成syslinux.cfg。
3、如果isolinux.cfg和syslinux.cfg都有,請刪除isolinux.cfg這個文件即可。
⑧ Linux文件系統特點
類似於 Windows下的C、D、E等各個盤,Linux系統也可以將磁碟、Flash等存儲設備劃分為若干個分區,在不同分區存放不同類別的文件。與Windows的C盤類似,Linux一樣要在一個分區上存放系統啟動所必需的文件,比如內核映象文件(在嵌入式系統中,內核一般單獨存放在一個分區中)內核啟動後運行的第一-個程序( init)給用戶提供操作界面的 shell程序、應用程序所依賴的庫等。這些必需、基本的文件合稱為根文件系統,它們存放在一個分區中。Linux 系統啟動後首先掛接這個分區,稱為掛接( mount)根文件系統。其他分區上所有目錄、文件的集合,也稱為文件系統。Linux 中並沒有C、D、E等盤符的概念,它以樹狀結構管理所有目錄、文件,其他分區掛接在某個目錄上,這個目錄被稱為掛接點或安裝點(mount point),然後就可以通過這個目錄來訪問這個分區上的文件了。比如根文件系統被掛接在根目錄「I」上後,在根目錄下就有根文件系統的各個目錄、文件:/bin、/sbin、/mnt等;再將其他分區掛接到/mnt目錄上,/mnt目錄下就有這個分區.的各個目錄、文件。在一個分區上存儲文件時,需要遵循一定的格式,這種格式稱為文件系統類型,比如fat16、fat32、ntfs、ext2、ext3、jffs2、yaffs 等。除這些擁有實實在在的存儲分區的文件系統類型外,Linux還有幾種虛擬的文件系統類型,比如proc、sysfs 等,它們的文件並不存儲在實際的設備上,而是在訪問它們時由內核臨時生成。比如 proc文件系統下的uptime文件,讀取它時可以得到兩個時間值(用來表示系統啟動後運行的秒數、空閑的秒數),每次讀取時都由內核即刻生成,每次讀取結果都不一樣。「文件系統類型」常被簡稱為「文件系統」,比如「硬碟第二個分區上的文件系統是EXT2」指的就是文件系統類型。所以「文件系統」這個術語,有時候指的是分區上的文件集合,有時候指的是文件系統類型,需要根據語境分辨,在閱讀各類文獻時需要注意這點。
⑨ linux文件系統怎樣初始化步驟
System V init啟動過程
概括地講,Linux/Unix系統一般有兩種不同的初始化啟動方式.
1) BSD system init
2) System V init
大多數發行套件的Linux使用了與System V init相仿的init也就是Sys V init,它比傳統的BSD system init更容易且更加靈活。
System V init的主要思想是定義了不同的"運行級別(runlevel)"。通過配置文件/etc/inittab定義了系統引導時的運行級別, 進入或者切換到一個運行級別時做什麼。每個運行級別對應於一個子目錄/etc/rc.d/rcX.d。
每個rcX.d目錄中都是一些以S或K開頭的文件鏈接。這些鏈接指向的腳本都 可以接收start和stop參數,S開頭的鏈接會傳入start參數,一般是開啟一項服務,K會傳入stop參數,一般是停止某服務。
以下是一個大致的System V init過程:
(1)init 過程執行的第一個腳本是 /etc/rc.d/rc.sysinit,它主要做在各個運行級別中進行初始化工作,包括: 啟動交換分區;檢查磁碟;設置主機名;檢查並掛載文件系統;載入並初始化硬體模塊.
(2)執行預設的運行級別模式。 這一步的內容主要在/etc/inittab中體現, inittab文件會告訴init進程要進入什麼運行級別,以及在哪裡可以找到該運行級別的配置文件.
(3)執行/etc/rc.d/rc.local腳本文件。 這也是init過程中執行的最後一個腳本文件,所以用戶可以在這個文件中添加一些需要在登錄之前執行的命令.
(4)執行/bin/login程序
注意:
System V init只是一種模式,每個系統初始化都有差異,但大體上不會相差太多。如busybox執行的第一個啟動腳本就是/etc/init.d/rcS,而且不可以改變,與上面講的不同。
LFS文件系統初始化示例
inittab文件
由下內容可以看出,最先執行的是/etc/rc.d/init.d/rc文件,給這個文件傳入的參數是一個數字,rc會由傳入的數字合成rcX.d目錄的路徑,然後執行其中的所有腳本鏈接。當然這只是一部分功能。
# Begin /etc/inittab
id:3:initdefault:
<em><strong>si::sysinit:/etc/rc.d/init.d/rc sysinit</strong></em> #可以設定初始化腳本
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
...
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S016:once:/sbin/sulogin
1:2345:respawn:/sbin/agetty tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
...
# End /etc/inittab
etc目錄結構
只是一部分,有刪減。
.
├── fstab
├── <em>inittab</em>
├── inputrc
├── profile
├── rc.d
│ ├── init.d
│ │ ├── checkfs
│ │ ├── cleanfs
...
│ │ ├── moles
│ │ ├── mountfs
│ │ ├── mountkernfs
│ │ ├── network
│ │ ├── rc #when boot, run.
│ │ ├── reboot
...
│ ├── rc0.d
│ │ ├── K80network -> ../init.d/network
│ │ ├── K90sysklogd -> ../init.d/sysklogd
│ │ ├── S60sendsignals -> ../init.d/sendsignals
│ │ ├── S70mountfs -> ../init.d/mountfs
│ │ ├── S80swap -> ../init.d/swap
│ │ ├── S90localnet -> ../init.d/localnet
│ │ └── S99halt -> ../init.d/halt
│ ├── rc1.d
│ │ ├── K80network -> ../init.d/network
│ │ └── K90sysklogd -> ../init.d/sysklogd
│ ├── rc2.d
│ │ ├── K80network -> ../init.d/network
│ │ └── K90sysklogd -> ../init.d/sysklogd
│ ├── rc3.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc4.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc5.d
│ │ ├── S10sysklogd -> ../init.d/sysklogd
│ │ └── S20network -> ../init.d/network
│ ├── rc6.d
│ │ ├── K80network -> ../init.d/network
│ │ ├── K90sysklogd -> ../init.d/sysklogd
│ │ ├── S60sendsignals -> ../init.d/sendsignals
│ │ ├── S70mountfs -> ../init.d/mountfs
│ │ ├── S80swap -> ../init.d/swap
│ │ ├── S90localnet -> ../init.d/localnet
│ │ └── S99reboot -> ../init.d/reboot
│ └── rcsysinit.d
│ ├── S00mountkernfs -> ../init.d/mountkernfs
│ ├── S02consolelog -> ../init.d/consolelog
│ ├── S05moles -> ../init.d/moles
...
├── udev
│ ├── rules.d
│ │ └── 55-lfs.rules
│ └── udev.conf
└── vimrc
network腳本
#!/bin/sh
. /etc/sysconfig/rc
. ${rc_functions}
. /etc/sysconfig/network
case "${1}" in
start)
# Start all network interfaces
for file in ${network_devices}/ifconfig.*
do
interface=${file##*/ifconfig.}
# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi
IN_BOOT=1 ${network_devices}/ifup ${interface}
done
;;
stop)
# Reverse list
FILES=""
for file in ${network_devices}/ifconfig.*
do
FILES="${file} ${FILES}"
done
# Stop all network interfaces
for file in ${FILES}
do
interface=${file##*/ifconfig.}
# skip if $file is * (because nothing was found)
if [ "${interface}" = "*" ]
then
continue
fi
IN_BOOT=1 ${network_devices}/ifdown ${interface}
done
;;
restart)
${0} stop
sleep 1
${0} start
;;
*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
esac
# End /etc/rc.d/init.d/network
⑩ 2440 linux 如何在文件系統啟動後自動運行我的程序
開機後自動運行用戶的應用程序或啟動系統服務的命令保存在開發板根文件系統的/usr/etc/rc.local文件中。有的開發板開機後自動運行圖形界面程序,需要按住ctrl+c讓開發板進入到linux的SHELL提示符界面。其實可通過注釋掉rc.local文件中調用圖形界面的命令,增加運行用戶應用程序的命令,達到開機自動運行用戶應用程序的目的。
下面以我做的實驗為例,描述具體的實現步驟。該方法源於網路,我加以驗證,稍做修改,此文相當於轉載。
1.進入pc機的Linux 操作系統,在/nfs/usr/下通過mkdir lz 命令新建一個名為lz的文件夾,進入lz文件夾,通過mkdir hello新建一個hello文件夾用來存放我們將要編寫的hello.c文件和編譯生成的可執行文件。
2.在/nfs/usr/lz/hello下通過vi hello.c命令新建hello.c文件,編輯如下測試程序:
#include <stdio.h>
int main(){
printf("Hello,test arm-linux!\n");
return 0;
}
完成編輯後通過:wq保存後退出。
3.主機通過如下命令交叉編譯環境編譯hello.c:
#arm-linux-gcc –o hello hello.c
4.通過ls 命令可以看到在/nfs/usr/lz/hello/下已經生成了hello可執行文件,我們可以在開發板上通過./hello來測試自己編寫的hello.c執行情況
5.修改rc.local文件,在文件的最後通過『#』釋掉啟動圖形界面的指令,增加執行用戶應用程序hello的指令,具體實現如下:
#export PATH=$QPEDIR/bin:$PATH
#qtopia
#/usr/qtopia/bin/qtopia
/usr/lz/hello/./hello
註:前三行是注釋掉啟動圖形界面,最後一行是添加的執行用戶的hello測試程序。
6.重啟開發板,通過vivi參數配置讓開發板通過nfs掛載主機上的文件系統,這時我們就可以通過超級終端看到開發板已經運行了我們編寫的hello程序。