題:
從只讀文件系統自動啟動X應用程序
doynax
2013-05-08 17:44:11 UTC
view on stackexchange narkive permalink

為了保護可能會突然斷電的應用程序中的SD卡,我試圖以只讀模式安裝根目錄。

在工作(讀寫)系統中我們的全屏應用程序是通過執行LXDE自動啟動腳本的自動X登錄啟動的。

我已經使系統運行了,主要是通過先前建議的 / etc / fstab 表:

  proc / proc proc默認值0 0 / dev / mmcblk0p1 / boot vfat默認值0 2 / dev / mmcblk0p2 / ext4默認值,noatime 0 1tmpfs / tmp tmpfs默認值,noatime,模式= 1777 0 0tmpfs / var / log tmpfs默認值,noatime,模式= 0755 0 0tmpfs / var / lock tmpfs默認值,noatime,模式= 0755 0 0  
.xauthority 文件。所以我添加了以下代碼(請注意訪問模式!):
  tmpfs / var / lib / lightdm tmpfs默認值,noatime,mode = 1777 0 0  

不幸的是,自動啟動仍然無法正常工作,讓我凝視著lightdm-greeter屏幕。嘗試快速登錄實際上使我回到相同的提示,並且奇怪的是,日誌似乎對失敗的原因保持沉默。

我的下一個嘗試是完全通過自定義 .xsession .xinitrc 。雖然在手動執行 startx 時有效,但不會為 pi 用戶自動登錄。我擔心我嘗試擺弄全局 / etc / X11 / xinit / xinitrc 的嘗試也收效甚微。

下一個想法是,通過鏈接到 / usr / share / xgreeters 中的自動啟動腳本並編輯 /,來替換默認的 lightdm-greeter 腳本。 ect / ligthdm / ligthdm.conf 和其他 greeter-user greeter-session 設置。這將失敗,並顯示“ Greeter封閉的通信通道”消息。大概有某種協議可以實現適當的問候。

有什麼建議嗎?我認為這對任何具有Unix管理實際經驗的人來說都是小孩子的遊戲,但這讓我不敢相信。

你成功了嗎?
不,我必須承認我沒有。我最終只是放棄了,並以讀寫文件系統運行了該系統。現在,我只是想知道要花多長時間才能收到崩潰的系統的第一份錯誤報告。
三 答案:
user8925
2013-08-09 08:29:32 UTC
view on stackexchange narkive permalink

我做了幾件事。它使用帳戶信息亭自動啟動

 cat / home / kiosk / kioskstartup#!/ bin / shxset -dpmsxset offofflutter&matchbox-window-manager -use_cursor否-use_titlebar否&midori -e全屏-a http:/ /127.0.0.1:4079/index.htmlcat /home/kiosk/.profile#〜/ .profile:由登錄解釋程序的命令解釋器執行。#如果〜/ .bash_profile或bash(1)不能讀取此文件。 〜/ .bash_login#存在。#參見/ usr / share / doc / bash / examples / startup-files示例。#文件位於bash-doc軟件包中。#默認的umask在/ etc / profile中設置;要為ssh登錄設置umask#,請安裝並配置libpam-umask軟件包。#umask 022#如果運行bashif [-n“ $ BASH_VERSION”];如果[-f“ $ HOME / .bashrc”]存在,則#包括.bashrc。然後    。 “ $ HOME / .bashrc” fifi#設置了PATH,因此如果存在[-d“ $ HOME / bin”],則它包括用戶的專用bin。然後PATH =“ $ HOME / bin:$ PATH” fixinit ./kioskstartupcat /usr/share/xsessions/matchbox.desktop[Desktop Entry] Encoding = UTF-8Name = MatchboxComment =此會話將您登錄到MatchboxExec = matchbox-sessionTerminal = FalseIcon = Type = Application 

除此之外,我還修改了受影響的啟動腳本,以便它們不會寫入/ var,而是創建了/ tmp目錄並將數據放置在其中...

 chmod 777 / tmp / runfiif [! -d / tmp / cache],然後mkdir / tmp / cache chmod 777 / tmp / cachefiif [! -d / tmp / cache / lighttpd]然後mkdir / tmp / cache / lighttpd chmod 777 / tmp / cache / lighttpdfiif [! -d / tmp / log]然後mkdir / tmp / log chmod 777 / tmp / logfiif [! -d / tmp / log / lighttpd]然後mkdir / tmp / log / lighttpd chmod 777 / tmp / log / lighttpdfiPATH = / sbin:/ bin:/ usr / sbin:/ usr / binDAEMON = / usr / sbin / lighttpdNAME = lighttpdDESC =“網絡服務器” PIDFILE = / tmp / run / $ NAME.pidSCRIPTNAME = / etc / init.d / $ NAMEDAEMON_OPTS =“-f /etc/lighttpd/lighttpd.conf”測試-x $ DAEMON ||退出0set -echeck_syntax(){$ DAEMON -t $ DAEMON_OPTS> / dev / null ||退出$?}如果[[$ 1“!= status];然後
#即使使用tmpfs,也要確保有一個/ tmp / run / lighttpd。#該目錄被定義為易失性,因此在引導後可能不存在。 dpkg-statoverride --list / tmp / run / lighttpd> / dev / null 2>&1;然後安裝-d -o www-data -g www-data -m 0750“ / tmp / run / lighttpd” fifi。 / lib / lsb / init-functionscase“ $ 1” in start)check_syntax log_daemon_msg“正在啟動$ DESC” $ NAME如果! start-stop-daemon --start --oknodo --quiet \ --pidfile $ PIDFILE --exec $ DAEMON-$ DAEMON_OPTS然後log_end_msg 1 else log_end_msg 0 fi ;; stop)log_daemon_msg“ stopped $ DESC” $ NAME if start-stop-daemon --stop --retry 30 --oknodo --quiet \ --pidfile $ PIDFILE --exec $ DAEMON然後rm -f $ PIDFILE log_end_msg 0否則log_end_msg 1 fi ;; reload | force-reload)check_syntax log_daemon_msg“正在重新加載$ DESC配置” $ NAME,如果start-stop-daemon --stop --signal INT --quiet \ --pidfile $ PIDFILE --exec $ DAEMON然後rm $ PIDFILE,如果start-停止守護程序--start --quiet \ --pidfile $ PIDFILE --exec $ DAEMON-$ DAEMON_OPTS;然後log_end_msg 0 else log_end_msg 1 fi else log_end_msg 1 fi ;;重新打開日誌)log_daemon_msg“重新打開$ DESC日誌” $ NAME,如果start-stop-daemon --stop-信號HUP --oknodo --quiet \ --pidfile $ PIDFILE --exec $ DAEMON然後log_end_msg 0否則log_end_msg 1 fi ;;重新啟動)check_syntax $ 0停止$ 0開始;; status)status_of_proc -p“ $ PIDFILE”“ $ DAEMON” lighttpd &&退出0 ||退出$? ;; *)echo“用法:$ SCRIPTNAME {start | stop | restart | reload | force-reload | status}”>&2 exit 1 ;; esacexit 0 

最後,我完全擺脫了LXDE並轉到上方的窗口管理器。我使用lighttpd代替Monkey作為Web服務器,因為它正確支持別名。我的瀏覽器是midori。

此配置需要一點點工作,但確實可以工作!

user221931
2013-07-20 05:21:29 UTC
view on stackexchange narkive permalink

如果出現其他問題,也嘗試 sudo chmod 777 / tmp 以及 / var

在我看來,這是唯一的額外事情需要做。

Dmitry Grigoryev
2017-03-15 17:23:31 UTC
view on stackexchange narkive permalink

需要了解的一件事是,崩潰時文件系統不會因 rw 而損壞。它由於崩潰時未完成的寫操作而損壞。如果沒有正在進行的寫操作,則您的 rw 文件系統與 ro 一樣安全。

因此,我建議您離開文件系統 rw ,啟用日記功能,並不再為此擔心。如果仍然唯一的寫操作是在引導時創建 .xauthority 文件,那麼恰好在那一刻發生崩潰的可能性已經很小,即使在這種情況下,日記也很可能會處理這個問題甚至沒有引起您的注意。

個人軼事:

我有一個SBC沒頭沒腦地跑了(不完全是您的情況,但是仍然),作為無線路由器。我媽媽對電力很著迷,每天晚上都要把插頭拔掉,早上要把插頭插回去。根文件系統是 rw ,但是該文件已經運行了幾個月,沒有任何問題。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...