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 連線的方法,而且兩個方向的傳輸都可建立。步驟說明如下:

2014年3月11日 星期二

解決「YUM 更新時,出現套件版本衝突」的問題

最近在更新一台電腦的作業系統時,覺得更新的過程怪怪的,出現版本衝突的問題。可是檢查該版本套件又實際已安裝在系統中。想說是某次正新更新時,不小心把電腦關了,造成更新不正常結束。就試著將之前可能的未完成更新繼續完成,
[root@M2400 ~]# yum-complete-transaction
No unfinished transactions left.
由結果訊息判斷,應該是沒有未完成的更新才對。可是,明明更新過程就覺得不太正常,有時還會出現套件版本衝突的錯誤訊息(忘了將訊息複製、就不貼上來)。試著用其它方法查看看,是否有其它原因造成這種現像,
[root@M2400 ~]# yum list | grep installed
abrt.i6862.1.12-2.fc20installed
abrt-addon-ccpp.i6862.1.12-2.fc20installed
abrt-addon-kerneloops.i686    2.1.12-2.fc20    installed
abrt-addon-pstoreoops.i6862.1.12-2.fc20installed
abrt-addon-python.i6862.1.12-2.fc20installed
abrt-addon-vmcore.i6862.1.12-2.fc20installed
abrt-addon-xorg.i6862.1.12-2.fc20installed
 . . . . .
赫然發現了許多出現『installed』狀態的套件,找了一下前面提過出現版本衝突的套件也在其中。分析『yum update』的更新過程,有『下載套件差異檔(.drpm)』、『重建安裝檔(.rpm)』、『下載完整套件(無套件差異檔者)』、『套件完整性檢查』、『更新』、『清除舊版本套件』及最後的『驗證』。上述的『install』狀態,應該是 YUM 在最後的『清除舊版本套件』或『驗證』階段被中斷所致,所以出現『installed』,但是之後的更新卻找不到最後完整安裝的資訊紀錄。
  有線索就試試看,將有問題的套件(:特定版本)一一移除,
[root@M2400 ~]# yum remove abrt-2.1.12-2.fc20.i686 abrt-addon-ccpp-2.1.12-2.fc20.i686 abrt-addon-kerneloops-2.1.12-2.fc20.i686 abrt-addon-pstoreoops-2.1.12-2.fc20.i686 abrt-addon-python-2.1.12-2.fc20.i686 abrt-addon-vmcore-2.1.12-2.fc20.i686 abrt-addon-xorg-2.1.12-2.fc20.i686 . . . . .
將有問題的套件移除後,再下一般更新命令,
[root@M2400 ~]# yum update
就一切恢復正常了。

移除套件時,只能移除出問題的特定版本。未指定套件版本時,會將整個套件的各版本全部移除,可能造成系統無法正常開機。

  有關 YUM 命令的其它相關發文請自行參考:

已測試版本:

  • Fedora: 20

2014年3月5日 星期三

在 Fedora 19 (3.13.5) 安裝 NVIDIA FX 5200 驅動程式

Fedora 19 系統安裝好後,曾經試過安裝 NVIDIA GeForce FX 5200 的驅動程式,當時測的版本是 173.14.37,好像 173.14.38 時也測過一次,不過沒有成功。因為有其它事情正在忙,就先改用 Fedora 隨附的 NVIDIA 驅動程式 nouveau 先撐著用。去年底 NVIDIA 釋出 173.14.39 版的驅動程式,又因忙著安裝一台 FreeBSD 伺服器,也擱置未測。
  最近成功地將 173.14.39 版驅動程式安裝在 Fedora 19 (kernel 3.12.11-201),想說應該可以用原廠的驅動程式了。想不到 Fedora 又更新核心到 3.13.5-101 版,剛裝沒多久的驅動程式又再重新編譯一次了。不過,這次沒有那麼成功,一直卡在一個 ACPI 的函式。到網路上搜尋許久,都沒有 173.14.39 版的修正資料。猜想這又是一個 Linux 核心改寫的問題,就往這方向去找。結果,就間接地找到修正的方法,不然怎麼會有這次的發文。修改的地方很簡單,只有一個位置,完整步驟(節錄部份前文步驟,方便讀者操作)的說明如下:

2014年3月2日 星期日

解決「Fedora 19 的 Rhythmbox 不能聽 “網路電台”」的問題

前一版 Fedora 19 安裝後,只有測試原有的『網路電台』是否可以加入,一直沒有時間用 Rhythmbox 聽『網路電台』。今天想說點個網路電台聽聽。結果,跳出這個訊息
這是因某個套件未安裝所致。依照之前的慣例,點了【搜尋】按鈕,一如往常開始尋找。
但是,卻又跳出一個找不到的訊息。

2014年2月24日 星期一

在 Fedora 20 (3.13.3~3.14.8) 安裝「EDIMAX EW-7811Un」驅動程式

Fedora 20 的系統核心升級到 3.13.2-201 後,依前文『在 Fedora 20 安裝「EDIMAX EW-7811Un」驅動』步驟編譯新的驅動程式,會出現
.....
  CC [M]  /home/SiB/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/driver/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/os_intfs.o
/home/SiB/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/driver/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/os_intfs.c:1006:2: 警告:永遠不相容的指標類型初始化 [enabled by default]
  .ndo_select_queue = rtw_select_queue,
  ^
/home/SiB/RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/driver/rtl8188C_8192C_usb_linux_v4.0.2_9000.20130911/os_dep/linux/os_intfs.c:1006:2: 警告:(在 「rtw_netdev_ops.ndo_select_queue」的初始化附近) [enabled by default]
.....
的錯誤訊息。
  看樣子,又得修改『驅動程式原始碼』了,順便將需要 root 權限的部分減少些。修改後的新步驟如下:

2014年2月23日 星期日

安裝 Fedora 方法(一):以 DVD 或 CD-ROM 開機、安裝(F20 補充)

在前文『安裝 Fedora 方法(一):以 DVD 或 CD-ROM 開機、安裝』以 CD-ROM 開機,再由儲存在『USB 隨身碟』中的 ISO 檔案安裝,的確可以增快直接 DVD 或 CD-ROM 安裝的速度。但是,最近在舊筆電『Asus M2400』安裝 Fedora 20 時卻發生問題。
  趕緊找找看是哪裏出問題,測了一下只是舊的修改方法在 Fedora 20 不認得而已。新修訂如下:
放入『網路安裝 CD (netinst.iso)』由 DVD-/CD-ROM 開機,當安裝 Fedora 20 時,光碟啟動後,出現這個畫面
在倒數至 0 秒前,選擇『Install Fedora 20』,再按【Tab】鍵,進入 Linux 啟動命令編輯畫面。將命令列參數中的
inst.stage2=hd:LABEL=Fedora\x2020\x20i386 quiet
改為
repo=hd:LABEL=FedoraUISO quiet
其中,『FedoraUISO』為 USB 隨身碟的『名稱』,不用加雙引號(" "),命令列前頭的『vmlinuz initrd=initrd.img』不用動它。按【Enter】後,接下來的操作就和用 DVD.iso 開機、安裝相同,就不再贅述。

注意:上例中『USB 隨身碟』的為依『適用 Fedora 20 的「可選版本 USB 安裝隨身碟」』所述步驟製做而成。

已測試版本:

  • Fedora: 20

2014年2月16日 星期日

更改「主機名稱(host name)」

前幾天在 AUSU M2400 筆電安裝 Fedora 20,因為不能用 USB 開機,使用『網路安裝光碟』安裝。每次一按個滑鼠鍵後,就得等其從『官方的 Fedora 伺服器』下載相關的程式執行。等著…等著…竟然,忘了修改主機的名稱,所以安裝後的預設「主機名稱」為『localhost.localdoamin』。
  一開始測試時也沒發現,直到在測試 synergy 時才發現到「主機名稱」不對。在 Fedora 14 時曾改過一次「主機名稱」,印象中相當麻煩,所以後來的安裝都很小心。就趁這個機會試試,看最新的 Fedora 版本在這方面是否有更方便的作法。
  在網路上有人提及『hostnamectl』這個命令,似乎不錯用。就拿來試試看,並做個記錄。如果只是要修改「主機名稱」,命令如下:
[root@localhost ~]# hostnamectl set-hostname M2400
上例中,『M2400』是新設定的「主機名稱」。接著要將網路重新啟動一次,剛才的設定才會生效
[root@localhost ~]# systemctl restart network.service
眼尖的讀者會發現,登入中帳號的「終端機」之「主機名稱」並沒有改變,仍為『localhost』,要先登出帳號再重新登入才會改成新的名稱。

註一:將電腦重新開機一次也可以。
註二:當時只想快安裝、測試,應該用『安裝 Fedora 方法(一):以 DVD 或 CD-ROM 開機、安裝』中的方法,先用 CD-ROM 開機再由 USB 安裝才對。

已測試版本:

  • Fedora: 20

參考資料: