OpenMoko Booting Process — Upstart

Upstart是為了要替換傳統/sbin/init daemon處理在開機過程中的tasks和services, 或是在關機過程中. 原本Upstart是為了在Ubuntu上開發, 後來是用於all linux distribution上也能使用

特色:

  • Tasks或是Services都是被Events所觸發
  • Events是被tasks所產生, Services是被叫起或結束
  • 可接收別的process所發出Events
  • 若是服務因不正常被中止, 是可再生
  • 可與init daemon雙向溝通, 便即時得知什麼工作還在runing, 什麼工作已經死掉

* Job Definitions/Writing

Jobs都是定義在/etc/event.d, Job的名稱就是檔案名稱

* exec 和 script

可利用這兩個commands來指定的所需要的jobs

  • exec 是執行binary commands來指定所需jobs, 下面有個簡單例子
			exec /bin/foo --opt -xyz foo bar
  • script是給定一些shell script code, 會利用/ bin/sh去執行, 最後用end script當作結束字元,下面有簡單例子
			script
   			 # describe here
  			  if [ ... ]; then
    			    ...
 			   fi
			end script

* pre-start script 和 post-stop script

可在exec或script所定義的jobs之前或是之後, 執行一些所定義的shell script code,下面有些例子

		pre-start script
   		 # prepare environment
   	 	mkdir -p /var/run/foo
		end script

* start on 和 stop on

是方便給系統管理者去使用的, 可手動叫某個jobs起來或停住, 或是因為某個events所以要被叫起或是停住

	start on startup

	start on runlevel 2
	start on runlevel 3

	start on stopped rcS

	start on started tty1

上面例子start on後面就是都是定義過後的events

* console

可變更此job要output到那邊, 若是output即為input 和 output 都是到 /dev/console, owner是 control-c會送到process, none是input 和output都是/dev/null

*start 和 stop (Job control)

利用這兩個commands控制jobs

# start tty1
tty1 (start) running, process 7490 active

# stop tty1
tty1 (stop) running, process 7490 killed

* status

利用status command來觀察job的status

# status tty1
tty1 (stop) waiting

# start tty1
tty1 (start) running, process 4418

# status tty1
tty1 (start) running, process 4418

* initctl list

這個command會將所有jobs列出來

* initctl emit

是可以註冊妳自訂的event

參考

1. Upstart

Advertisements

2 Responses to OpenMoko Booting Process — Upstart

  1. 樹雄 says:

    網上閒逛到來,好奇一問︰

    (1) 這個網站,與手提電話 OpenMoko (Neo1973) 有關的嗎?還是只是名字相似?
    (2) 要是這網站與 OpenMoko 電話有關,我想問問︰OpenMoko 是用 upstart 的嗎?

  2. williechen says:

    Hello 樹雄

    是的, 我們是在Neo1973這隻手機上開發.
    目前是用upstart.

    Free your phone!
    🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: