嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt
[9構(gòu)建嵌入式linux系統(tǒng)項(xiàng)目-啟動(dòng)腳本的編寫(xiě)
啟動(dòng)腳本 教學(xué)回顧 shell語(yǔ)法 管道、重定向 變量 結(jié)構(gòu)性語(yǔ)句 教學(xué)內(nèi)容 啟動(dòng)腳本的寫(xiě)法 教學(xué)要求 熟悉掌握啟動(dòng)腳本的寫(xiě)法 shell 函數(shù) 在shell程序中, 常常把完成固定功能、且多次使用的一組命令(語(yǔ)句)封裝在一個(gè)函數(shù)里,每當(dāng)要使用該功能時(shí)只需調(diào)用該函數(shù)名即可。 函數(shù)在調(diào)用前必須先定義,即在順序上函數(shù)說(shuō)明必須放在調(diào)用程序的前面。 調(diào)用程序可傳遞參數(shù)給函數(shù), 函數(shù)可用return語(yǔ)句把運(yùn)行結(jié)果返回給調(diào)用程序。 函數(shù)只在當(dāng)前shell中起作用, 不能輸出到子Shell中。 函數(shù)定義格式: 函數(shù)變量作用域 全局作用域:在腳本的其他任何地方都能夠訪問(wèn)該變量。 局部作用域:只能在聲明變量的作用域內(nèi)訪問(wèn)。 聲明局部變量的格式: local variable_name =value 函數(shù)變量作用域 #! /bin/bash # echo "lclavariable in function1 = $lclvariable" echo "Gblvariable in function1 = $Gblvariable" scope() { local lclvariable=1 Gblvariable=2 echo "lclavariable in function2 = $lclvariable" echo "Gblvariable in function2 = $Gblvariable" } scope echo "lclavariable in function3 = $lclvariable" echo "Gblvariable in function3 = $Gblvariable" 啟動(dòng)腳本 設(shè)計(jì)啟動(dòng)腳本 內(nèi)核掛載根文件系統(tǒng)后,執(zhí)行第一個(gè)用戶(hù)程序(/sbin/init),init進(jìn)程就是1號(hào)進(jìn)程,是所有其他進(jìn)程的祖先進(jìn)程。 init進(jìn)程根據(jù)/etc下的配置文件(inittab等)來(lái)啟動(dòng)其他進(jìn)程,初始化系統(tǒng)。 在嵌入式中,配置文件是要自己編寫(xiě)的。 inittab init進(jìn)程讀取/etc/inittab文件: rcS /etc/init.d/rcS是init進(jìn)程啟動(dòng)的第一個(gè)腳本程序,也叫做系統(tǒng)初始化腳本,該腳本主要完成以下任務(wù): 掛載其他文件系統(tǒng) 啟動(dòng)mdev程序來(lái)管理設(shè)備文件 配置網(wǎng)絡(luò)等 下面給出一個(gè)比較好的rcS腳本寫(xiě)法: fstab /bin/mount -a 的意思是掛載文件/etc/fstab中設(shè)置的所有設(shè)備 mdev mdev是busybox下的udev的精簡(jiǎn)版,適合在嵌入式系統(tǒng)下管理設(shè)備 mdev 有兩個(gè)主要的應(yīng)用 系統(tǒng)啟動(dòng)時(shí)創(chuàng)建設(shè)備文件 動(dòng)態(tài)生成設(shè)備文件 mdev 系統(tǒng)初始化腳本中一個(gè)完整的使用mdev 的代碼片段 配置網(wǎng)絡(luò)腳本 我們將配置網(wǎng)卡eth0的腳本放在/etc/init.d/start/目錄下,文件名為network。 該腳本如下: profile init程序通過(guò)啟動(dòng)/etc/init.d/rcS腳本程序來(lái)進(jìn)行一系列的初始化工作 然后啟動(dòng)一個(gè)shell(/bin/sh)。 啟動(dòng)/bin/sh程序時(shí),sh程序會(huì)讀取/etc/profile作為shell的環(huán)境變量配置文件 啟動(dòng)腳本編寫(xiě)好后,啟動(dòng)的信息如下: 用戶(hù)登陸 在上面的inittab文件中,init啟動(dòng)的最后任務(wù)是啟動(dòng)定一個(gè)shell(/bin/sh)。 我們可以將其改成最后一個(gè)啟動(dòng)的是一個(gè)登陸程序。 bash getty會(huì)啟動(dòng)login啟動(dòng)進(jìn)行登陸 當(dāng)?shù)顷懗晒?huì)啟動(dòng)/bin/bash程序 bash是gun的一個(gè)軟件,也是我們常用的命令行shell,代碼可以在上下載。 從虛擬機(jī)中,拷貝登陸root所需要的相關(guān)文件拷貝到根文件系統(tǒng)中 $ sudo cp /etc/{group,gshadow,passwd,shadow} /home/sice/rootfs/etc 開(kāi)發(fā)板啟動(dòng)信息如下: 課堂小結(jié) 思考題 作業(yè)題 * func2.sh Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2
總結(jié)
以上是生活随笔為你收集整理的嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux抓post命令,Linux 使
- 下一篇: 端口映射工具linux,Linux下端口