2008年10月17日 星期五

由文字模式自動登入,並執行指令

目的:學弟在嵌入式版子上,希望一開機可以不需要登入的動作,可以馬上執行某一個程式
目前有兩個方法
1. 設定自動由一個帳號登入,再由這一個帳號自動執行程式
2. 把要執行的程式設定成服務

目標,想要一開機執行ifconfig這一個程式

那先來試第一個方法吧~先設定成一個終端機為自動登入

[root@host ~]# vi /etc/inittab


隨便找哪個console下手都可以,在這裡以第3個虛擬控制台為例
把下面這一行
3:2345:respawn:/sbin/getty 38400 tty3
改成下面這樣

3:2345:respawn:/sbin/mingetty --autologin myname tty3
其中的「myname」是指你要自動登入的帳號,請依自己的情形輸入

接下來請到以myname的身份,到這個帳號的家目錄下
找一個叫作.bash_profile的檔案(如果沒有,請自行建立)
在.bash_profile這個檔案裡最下面加你想要輸入的指令ifconfig~

這裡另外提醒一下:

(1) .bashrc
系統啟動後就會自動執行。
(2) .profile
用戶登入後才會執行。
可以參考:shell設定


第二個方法
把要執行的指令設定成服務~
以redhat為例:
在/etc下分別有rc1.d/;rc2.d/;rc3.d/;rc4.d/;rc5.d/;rc6.d/
分別放置登入level所要執行的服務的script,文字登入就是level 3、而視窗登入就是level 5

在/etc/rc.local檔案中(這一個script是所有服務中最後一個被執行的script,預設值是空的)
加入要執行的指令~
當登入時,就會去執行這一個指令啦~
要注意的事,此時還沒有shell,所以,沒有辦法中止正在執行的程式喔~

基本上在rc(i).d中的script有的檔名是有義意的~
S表示start、K表示kill
然後是由數字小執行到數字大的script

或是可以寫一個script然後,例如/etc/init.d/bbsd


[root@host ~]# update-rc.d bbsd defaults 90

90為開機時的執行順序,端看您如何設定.
update-rc.d會自動幫各個rcX.d目錄下建立一link至/etc/init.d/執行檔
或者是

[root@host ~]# update-rc.d iptables start 20 2 3 4 5 . stop 0 1 6 .

它會去找/etc/init.d/iptables這一個檔案,
2.3.4.5是指把該執行檔複製到/etc/rcX.d 複製到底下,當開機run level 2.3.4.5才會執行該執行檔
0.1.6是把該執行檔複製到/etc/rcX.d下,當關機時,會執行讓執行檔

在ubuntu中,rcX.d是放在/etc/event下

參考資料:
Linux自動登入技法
如何使程序開機自動運行?
linux開機啟動腳本的順序
開機自動執行script

沒有留言: