ERROR:nacl_helper_linux.cc(233)] NaCl helper process running without a sandbox!這問題找了很久,網路上也有許多討論,
Most likely you need to configure your SUID sandbox correctly
- SELinux 的限制某些子行程的啟動:有試著將它關閉也不能正常啟動。
- Sandbox 的版本問題:用『google-chrome --no-sandbox』命令列啟動,雖說可以啟動,但似乎還是不太正常。
- Google Chrome 的程式碼未更新,建議用 Chromium:Google Chrome 已經更新好幾版了,應該不是這問題。
想說在 M2400 筆電上,也重新安裝 Fedora 好多次了有些麻煩,不如用 VirtualBox 虛擬機試試。把虛擬機的規格設得跟 M2400 最接近,包含 CPU、記憶體、硬碟等。安裝好 Fedora 20 後,立即安裝 Google Chrome 來試試看,想不到可以正確啟動、執行,絲毫沒有任何問題。
規格幾乎都一樣,怎麼一台可以、另一台不行呢?再詳細比較細部規格,並參考錯誤時的訊息,似乎發現了一個可能的問題點,就是:
M2400 的 CPU 沒有 NX (No-eXecute) 功能這是 CPU 的安全機制,會限制某些程式碼不能執行,以保護系統安全。舊的 CPU 常未有這項功能,而 Google Chrome 預設使用這個功能,應該是造成『Google Chrome 在 32-Bit 的舊電腦不能啟動』的原因。
因此,筆者可以暫時歸納得知這個結論:是:
在 32-bit 電腦中,若 Chrome 不能正常啟動,先檢查 CPU 是否支援 NX 功能,至於 CPU 有否支援 NX 功能,在 Linux 可以用這個命令,
若有支援:再細查其它問題。
若不支援:不用試了,等 Chrome 或 sandbox 的開發者修改。
上例是在 VirtualBox 中模擬出的 32-bit 電腦之查詢結果,在『flags:』之後有個『nx』旗標,就是指這部電腦可以正常執行 Chrome。再看下一個例子,
[SiB@F20-32 ~]$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 42 model name : Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz stepping : 7 cpu MHz : 2178.000 . . . . . flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht nx rdtscp constant_tsc pni ssse3 bogomips : 4389.44 . . . . .
在第二個例子中,『flags:』那列中並無『nx』旗標。所以,Chrome 在這部電腦中就不能正常執行。
[SiB@P3-1G ~]$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Pentium III (Coppermine) stepping : 10 microcode : 0x1 cpu MHz : 999.666 . . . . . flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 mmx fxsr sse bogomips : 1999.33 . . . . .
確定了原因,就不需再努力嘗試去解決問題,畢竟修改一個未參與發展的軟體,要花費的時間是很可觀的,而且也不是所有的問題都要參與,大家分工就是「開源碼軟體」發展的精神。
已測試版本:
- Fedora: 19, 20 (32-bit)
- Chrome: ~30, 31~34
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)