#1 2008-10-20 12:26:23
開機時啟動程式 /etc/init.d/rcS 發生Read Only
哈囉。
我用的是ASUS WL-500gP的平台,「DD-WRT v23 SP2 std (c) 2006 NewMedia-NET GmbH」
system type : Broadcom BCM4704 chip rev 9
processor : 0
cpu model : BCM3302 V0.6
BogoMIPS : 263.78
wait instruction : no
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : no
hardware watchpoint : no
VCED exceptions : not available
VCEI exceptions : not available
每次要登入到平台中(telnet 192.168.1.1),都要先設定以下的環境才有辦法執行自己所寫的程式:
mount -o bind /jffs/opt /opt
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/jffs/opt/bin
export LD_LIBRARY_PATH=/lib:/usr/lib:/jffs/opt/lib:/jffs/lib:/jffs/usr/lib:/jffs/usr/local/lib
現在考慮要裝置啟動時,可以自己設定以上的環境,所以考慮要將上面寫成一個Script,放置在/etc/init.d/S1檔案裡
#!/bin/sh
mount -o bind /jffs/opt /opt
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/jffs/opt/bin
export LD_LIBRARY_PATH=/lib:/usr/lib:/jffs/opt/lib:/jffs/lib:/jffs/usr/lib:/jffs/usr/local/lib
但存檔的時候,它告訴我READ ONLY~
不曉得該如何達到開動時自己設定環境的功能呢?
謝謝。
離線
#2 2008-10-20 17:13:23
Re: 開機時啟動程式 /etc/init.d/rcS 發生Read Only
離線
#3 2008-10-20 21:44:59
Re: 開機時啟動程式 /etc/init.d/rcS 發生Read Only
先恭喜您找到參考資料. 另外, 以下幾點提供您參考:
1. DD-WRT檯面上最新版本v24 SP1, 檯面下v24 SP2
2. 您要開機啟用的script, 可放在/jffs/etc/config 或系統管理--> 啟動指令內.
3. /etc實際是flash memory, 能寫入的是/tmp及您mount的USB Flash. 您提及的連結URL是撰寫系統啟動指令, 並無解決您read only問題.
4. 您所撰寫的script, 在該shell能引用您設定的變數, 離開該shell, $PATH, $LD_LIBRARY_PATH會恢復. 請參考Study Area
離線
#4 2008-10-20 22:01:40
Re: 開機時啟動程式 /etc/init.d/rcS 發生Read Only
在我的目錄中只有/jffs,/jffs裡面並沒有etc的目錄,於是我建立了etc的目錄,並在etc的目錄建立一個config的目錄,在裡面新增一個shell script,名為myboot.startup
內容為:
#!/bin/sh
mount -o bind /jffs/opt /opt
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/jffs/opt/bin
export LD_LIBRARY_PATH=/lib:/usr/lib:/jffs/opt/lib:/jffs/lib:/jffs/usr/lib:/jffs/usr/local/lib
我重新將ASUS WL-500gP重新開機之後,執行「env」,觀察PATH及LD_LIBRARY_PATH的值都沒有更新,還是原來的舊值。
而我照著:
1. Using the Web Interface, goto the Administration tab.
2. Go to the Command subtab
3. Type the commands you wish to run every startup into the Commands: dialog box
mount -o bind /jffs/opt /opt
export PATH=/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/jffs/opt/bin
export LD_LIBRARY_PATH=/lib:/usr/lib:/jffs/opt/lib:/jffs/lib:/jffs/usr/lib:/jffs/usr/local/lib
4. Click the Save Startup button at the bottom of the page if you'd like the commands to save into the rc_startup variable.
重新開機之後,執行[env],還是一樣沒有變更,而且JFFS2 Support被改成Disable。
關於你說的第4點,這一點是我遇到的狀況,所以我才想開機時就設定環境變數。
不曉得還有那裡要注意的呢?謝謝。
離線
#5 2008-10-20 23:22:28
Re: 開機時啟動程式 /etc/init.d/rcS 發生Read Only
1. jffs2必須啟用
2. 使用系統啟動指令更改變數值, 並非真正更改內建變數值. 想像一下, 系統指令被shell包裹住; 您telnet進入, 又是另一個不同的shell包裹住. 兩個shell繼承相同的父shell變數值, 可覆寫父變數值. 離開自己的shell, 當然就回到父shell的變數值. 例如: 您可開兩個終端機視窗分別telnet, 當您更改其中一個的變數值, 看看是否會連帶更動另一telnet視窗的變數值. 之前提及的Study Area有詳細說明.
3. 反向思考一下, 您更改變數值要作哪些事? 執行指令後的結果, 在離開後, 是否結果不存在或變動? 如果結果是您要的, 而且沒異動, 那開幾層shell, 更改變數值達到您要的, 再回到父shell, 變數值仍是原設定值, 有關係嗎? 因為您已得到您要的結果了.
4. 如果您很在意環境變數, 而想做修改, 或許可從nvram著手. 不過, 要注意是否會影響原DD-WRT的運作.
離線
#8 2008-10-24 11:31:04
Re: 開機時啟動程式 /etc/init.d/rcS 發生Read Only
我想要更改父shell的環境變數值。
~ # nvram set rc_startup="
> mount -o bind /jffs/opt /opt
> PATH=/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/jffs/opt/bin
> LD_LIBRARY_PATH=/lib:/usr/lib:/jffs/opt/lib:/jffs/lib:/jffs/usr/lib:/jffs/usr/local/lib
> "
~ # nvram commit
nvram_commit(): end
~ # reboot
但以上的方式試出來不行,重新登入之後,執行「env」,還是原本的父shell環境變數值。
我無法更改父shell環境變數值?
離線
#9 2008-10-24 12:38:51
Re: 開機時啟動程式 /etc/init.d/rcS 發生Read Only
1. rc_startup是系統管理--> 啟動指令的存放位置. 之前提及的nvram是錯誤方向, 請忽略. 抱歉.
2. 不知您是否注意到每個script前面為何要有"#!/bin/sh", 了解該行的意思嗎?
3. 請您再參考Study Area, 可解決您的疑惑.
離線
#10 2008-10-24 14:39:21
Re: 開機時啟動程式 /etc/init.d/rcS 發生Read Only
在Linux平台上,使用者有一個設定檔.bash_profile,我只要設定過之後,再下一次登入時,設定就會生效,不需要每次Telnet至主機時,都要重新export PATH及LD_LIBRARY_PATH。
而現在我的方式就是想比照辦理,看能不能設定父Shell的環境變數,在每一次登入時就不需要重新export PATH及LD_LIBRARY_PATH。
試了Shell Script Method及NVRAM Method,結果都沒辦法達成預期的結果。
離線
相關討論主題
主題 | 回覆 | 點閱 | 最後發表 |
---|---|---|---|
2 | 15878 | 2013-11-09 01:58:33 作者 Xvon |