2014年4月20日 星期日

Google Chrome 在 32-Bit 的舊電腦不能啟動的原因

在舊的 M2400 筆電中安裝 Fedora 已不記得是多久前的事了,換用「MATE 桌面環境」也有好幾個月,沒注意到何時開始發現 Google 的 Chrome 不能啟動,並出現這個錯誤訊息:
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 已經更新好幾版了,應該不是這問題。
一直沒有找出比較可能的答案,當然也沒辦法解決這問題。只好轉而找出引發這個問題的根本原因,至少確認是否值得再花時間去找解答。

2014年4月1日 星期二

適用 Fedora 20 的「可選版本 USB 安裝隨身碟」(補充)

之前用『USB 安裝隨身碟』安裝 Fedora 時,因為 dvd.iso 檔都只放一個版本(x86_64 或 i386),所以沒發現這個問題。最近一次因為兩個版本都要安裝,同時將兩個版本都放入 USB 隨身碟。出現一個問題:
明明想安裝 x86_64 的版本,安裝選項也正確地選擇 x86_64

可是在開始安裝時,卻是掛載 i386 的安裝光碟 ISO 檔

造成安裝程式要求 x86_64 的套件,卻取得 i386 版的套件,而版本不合

那,為什麼以前沒發現呢?  探討原因有幾個可能:
  • 之前安裝時都只有一個 dvd.iso 檔,當然不會出錯。
  • 之前在製作安裝 USB 隨身碟時,第一個複製的 dvd.iso 檔,恰是欲安裝的版本。
  • Fedora 20 的安裝程式,只掛載找到的第一個 dvd.iso 檔,並沒有檢查版本,或嘗試掛載其它 dvd.iso 檔。
總之,同時有兩個不同版本的 dvd.iso 存放在 FedoraUISO 那個『分割區』的目錄時,能不能正確安裝竟要看運氣。
  查了之前發文的步驟,曾經在 2014-2-23 做過一個修改,當時是為了簡化製作『USB 安裝光碟』的步驟,沒想到反而『可能』是造成另一個問題的原因,已將前文『適用 Fedora 20 的「可選版本 USB 安裝隨身碟」』修改回原樣,若讀者是在 2014-2-23 到 2014-3-31 之間製作的『USB 安裝光碟』可能會有問題,請讀者回前文參考、修改。

2014年3月28日 星期五

Yum 的新參數「只下載不安裝」

前一陣子在解決用 YUM 更新時,可能因『不正常關機』(也可能被其他使用者『不小心關機』),而出現套件版本衝突的問題(詳見:解決「YUM 更新時,出現套件版本衝突」的問題)。在找方法避免這種情形再發生時,發現 YUM 有一個新參數不錯用,這次的發文就介紹它的用法。

:似乎是 YUM 將之前原本需要再安裝外掛的功能,整合到 YUM 的套件中

  YUM 加上這個參數後,會執行下載『差異安裝檔(*.drpm)』,重建『套件安裝檔(*.rpm)』,完成後 YUM 即中止執行。
[root@Celeron-D ~]# yum update --downloadonly
這更新過程只有一半,並沒有進行安裝。待確認不會被『不正常關機』時,再下平時的更新命令,
[root@Celeron-D ~]# yum update -y ; shutdown -h now
整個更新程序會從頭開始執行,不過下載『差異安裝檔(*.drpm)』和重建『套件安裝檔(*.rpm)』這兩個步驟幾乎全被跳過去了,直接進入『套件安裝』步驟。並在安裝後,立即將電腦關閉。
  有關 YUM 命令的相關發文請自行參考:

使用心得、經驗分享

  1. 可隨時下『yum update --downloadonly』命令,即使被『強制關機』也不易因更新中止,而使得系統運作不正常。
  2. 平時還在用電腦時,即下『yum update --downloadonly』命令,系統在背景下載、重建將用於更新的『套件安裝檔』。
      在關機前再下平時用的更新命令,可加速更新過程、減少開機時間,應該可以省一些電費。

已測試版本:

  • Fedora: 19, 20

2014年3月23日 星期日

用「dconf 編輯器」解決「IBus 輸入法的順序錯誤、重覆」問題

解決「開機後 IBus 即預設為新加入的輸入法」的問題

Fedora 預設的輸入法順序的第一個是『英文』,但如果曾增加其它輸入法或刪除不用的輸入法時,登入後所顯示的輸入法不一定是『英文』。通常在輸入密碼、在「終端機」下命令、甚至是輸入文字時,都可能需要輸文『英文』。常常是出現錯誤訊息後,才警覺到預設的輸入法被切換為『英文』輸入。
有時也會如上圖一樣出現重覆的輸入法,應該某個軟體自動加入的。
  前文『解決「開機後 IBus 即預設為新加入的輸入法」的問題』所述的步驟,最近在 Fedora 20 有時會沒有作用。在「MATE 桌面環境」的選單中,有個『dconf 編輯器』。趁著有空試了一下,找到從這裏修改輸入法順序的方法。步驟說明如下:

一、開啟 dconf 編輯器

點選《程式選單》→《應用程式》→《系統工具》→《dconf 編輯器》開啟『dconf 編輯器』。再從左欄點選《desktop》→《ibus》→《general》,這時會出現一個設定畫面如下圖,
在『engines-order』和『preload-engines』這兩項資料多了一些輸入法。

二、修改 IBus 設定

刪除不要的輸入法(例:上圖中的 xkb:us::fox)和修改輸入法的順序,結果如下圖,
接著關閉「dconf 編輯器」,並登出帳號。下次再登入帳號時,預設輸入法就會是『英文』,且多餘的輸入法也會被刪除掉。

注意:未登出帳號前,將『IBus 輸入』程式重新啟動,剛才的修改似乎無效。一定要下次再登入帳號時,才會生效。

已測試版本:

  • Fedora: 20
  • MATE 1.6.2

2014年3月20日 星期四

解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」(三)

最近在安裝 Guest Additions 時,又出現不能自動跳出正常的安裝畫面。回顧過去的發文,僅列出幾個解決這個問題的方法(其它較臨時性的作法未列),就有以下這麼多,
  1. 解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」
  2. VBox 裏 Fedora 安裝 Guest Additions 的準備工作
  3. VirtualBox 的「Guest Additions 成功升級」必勝秘技
  4. 解決「Fedora 18 不能安裝 Guest Additions 4.1.24」
  5. 解決「VBox 虛擬機的 Linux 之核心升級 3.11 後不能用『共用資料夾』」問題
  6. 在以 headless 模式啟動之 VirtualBox VM 安裝 Guest Additions
  7. 解決「VirtualBox 虛擬機的 Fedora 不能自動啟動 Guest Additions 安裝」(二)
這次又出問題,得想個一定可解決這個問題的方法才好。這個解決步驟一定要適用這個要求:
  • DVD 接在『IDE 控制器』或『SATA 控制器』
  • 可安裝與 VirtualBox 同一版本,或其它不同版本的『Guest Additions』
查閱之前的發文,以最近一次的發文最適合,就拿它來整理、修改一下。詳細步驟如下:

2014年3月16日 星期日

在「遠端電腦」開發,以連接「本地電腦」之 Android 裝置測試

前一陣子在開發的 Android Apps 程式需要用 Android 裝置測試,用 VNC 連接「遠端電腦」並在其上開發 Apps。要在 Android 實體機測試時,將在「遠端電腦」編譯後產生的 Android apk 檔案,用 FTP 或 SFTP 下載回「本地電腦」,再利用 Android 的開發工具 ADB 將之下載至 Android 裝置測試。
  覺得其中的『用 FTP 或 SFTP 下載回「本地電腦」』這個步驟有些麻煩,就想再找個方法在每次編譯後都直接下載到 Android 裝置,就像開發、測試都在同一台電腦一樣方便。參考網路上的做法,再加上自己的一些嘗試,終於達成這個目標。
  就將這些步驟記下來,以供將來需要時的參考。整理一下到目前為止的紀錄:
開 發 端測 試 機 (端)發 文 連 結
Eclipse (PC_1)AVD (在 PC_1)預設之開發環境(使用 AVD 模擬器)
Eclipse (PC_1)Android 裝置 (連接 PC_1)預設之開發環境(使用 Android 裝置)
Linux 中,令 ADB 測得以USB連接的 Android設備
Linux 中,令 ADB 測得以USB連接的 Android設備(F19)
Eclipse (PC_1)AVD (在 PC_2)使用另一台電腦的 Android 模擬器 (AVD) 除錯
Eclipse (PC_1)Android-x86 (為 PC_2)用另一台運行 Android-x86 的電腦除錯
Eclipse (PC_1)Android 裝置 (Galaxy SII)用 Wi-Fi 下載 Android 程式到 GALAXY SII 手機
Eclipse (PC_1)Android 裝置 (連接 PC_2)在「遠端電腦」開發,經 SFTP 下載,再由「本地電腦」ADB 載入至 Android 裝置測試
Eclipse (PC_1)Android 裝置 (連接 PC_2)本文

註一:『PC_1』和『PC_2』分別指兩台不同之電腦,『PC_1』為執行開發 Android App 的 Eclipse 之電腦,而『PC_2』是指另一台電腦。
註二:『PC_1』和『PC_2』編號與執行快慢無關,選擇以方便開發為主要考量。

2014年3月15日 星期六

PulseAudio 跨越『不同子網路』的連線設定

在深入研究 PulseAudio 這個『網路聲音伺服』系統,愈覺得它的功能強大,難怪許多『開放原始碼』作業系統都選擇它作為聲音次系統。之前幾篇發文:
都鎖定同一個子網域中兩台電腦的連線,一個『受音端(伺服端)』廣播所提供的 PulseAudio 服務訊息,另一個『音源端(用戶端)』電腦則將音訊經網路送到『受音端』播放。
  最近在試著將不同子網路的兩台電腦建立連線,想知道 PulseAudio 是否仍能夠補償線路的延遲。使用的測試網路架構如下:
  • 兩部電腦 PC_A 及 PC_B 分別位於 A、B 兩個子網路。
  • 子網路 B 是透過分享器接上子網路 A,且分享器無特別設定。
  • PC_A 無法連線 PC_B,而 PC_B 則可以連線 PC_A。
在以上情況下,PC_A 與 PC_B 分別設定為 PulseAudio 之『受音端』或『音源端』,雙向皆無法正常透過前面發文的步驟建立連線。當然,聲音的傳送也不能成功,幾經測試終於找到建立 PulseAudio 連線的方法,而且兩個方向的傳輸都可建立。步驟說明如下: