Ubuntu安裝新內核
在ubuntu12.10和ubuntu11.04上分別驗證通過,安裝升級成功。
1.下載deb包
在http://kernel.ubuntu.com/~kernel-ppa/mainline/上下載所需升級包。此處下載的是64位的3.5.4版本的3個deb包:
linux-headers-3.5.4-030504_3.5.4-030504.201209142010_all.deb
linux-headers-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
linux-image-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
2.安裝deb包
首先安裝架構無關的即帶all的headers包
sudo dpkg -i linux-headers-3.5.4-030504_3.5.4-030504.201209142010_all.deb
sudo dpkg -i linux-headers-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
sudo dpkg -i linux-image-3.5.4-030504-generic_3.5.4-030504.201209142010_amd64.deb
安裝後,/boot目錄下會生成新的內核的相關文件,/lib/modules目下也生成了相應模塊,grub也自動更新。
3.重啓
wget -q "http://deb.playonlinux.com/public.gpg" -O- | sudo apt-key add -
sudo wget http://deb.playonlinux.com/playonlinux_trusty.list -O /etc/apt/sources.list.d/playonlinux.list
sudo apt-get update
sudo apt-get install playonlinux
首先介紹下背景,Linux 音頻系統非常不完全簡史:–#happyaron兄原創
- OSS3 是 Linux 內核中比較老的聲音系統,目前已逐漸廢棄
- OSS4 開發的時候是閉源軟件,所以 2002 年 ALSA 被用來替代 OSS3 作爲 Linux 內核中的聲音構架
- 2007 年的時候 4Front Technologies 發佈了 GPL 版本的 OSS4,此時 ALSA 已成氣候
關於 ALSA,OSS4,PulseAudio 和 Jack 一知半解版介紹(Esd 等就此省略一萬字):
- ALSA 目前是 Linux 內核上標準的音頻框架,但是僅支持 Linux 系統,沒有軟件混響。對各種設備的支持非常全面。
- OSS4 由於錯過時機而沒能成爲官方內核的一部分,但是它的跨平臺性遠好於 ALSA,支持 Windows、BSD 和許多 UNIX,其 API 據說也更適合開發。OSS4 有實時、低延時的特性,支持軟件混響,所有操作在內核層實現。但是對 USB 設備的支持明顯薄弱許多。
- PulseAudio 是爲 POSIX 兼容環境設計的一個聲音代理程序,內置軟件混響。PulseAudio 可以將程序對聲音系統的請求代理到 ALSA、OSS 等多種後端,甚至可以通過網絡傳輸這些訊息。
- Jack 是一個專業級的聲音服務系統,跨平臺性強,其表現對內核的實時性要求較 PulseAudio 高一些,在一般的操作系統上 Jack 沒有前者流行。
- Ubuntu 默認使用 ALSA 作爲底層聲音驅動,程序則與 PulseAudio 交互,這是一個很不錯的方案。然而作者偶爾會遇到 ALSA 被獨佔其他軟件無法發聲的問題,才隨着 #ubuntu-cn 上的 OSS4 熱潮趕了把時髦。
換 OSS4 是要折騰的,折騰就是有風險的,以下爲折騰的理由:
- 默認的 ALSA 在你的電腦上不能正常工作
- 純粹喜歡 OSS4,不喜歡 ALSA
- 想要跟風折騰
換 OSS4 的具體好處:
- 某些情況下音質更好
- 低延遲,低 CPU 佔用
- 自帶軟件混響
- 文檔更全面
換 OSS4 的具體壞處:
- 有些硬件不被支持
- 對 midi 支持很差
- USB 聲音設備支持仍處於試驗性階段
- 自己折騰可能會把系統聲音系統搞跨
開始說安裝 OSS4 的具體方法。
方法一:
到 OSS4 官方網站下載免費商業版, 下載頁面。
選擇相應的版本,比如 Linux 2.6 (x86) (DEB),點 Submit 獲得下載鏈接。注意這個版本按許可證僅可以使用一年。
得到 deb 文件後雙擊安裝(或者 sudo dpkg -i oss-linux*.deb)。
方法二:
Ubuntu 10.10 可以直接從軟件倉庫安裝版本略舊的 OSS4:
sudo apt-get install oss4-base oss4-dkms oss4-gtk
Ubuntu 10.04 和 11.04 不可以使用這個方法,10.04 倉庫中的 oss4-dkms 存在打包問題無法正確構建內核模塊,11.04 因爲內核新(linux >= 2.6.36)而 oss4 版本太老而無法成功構建內核模塊。
方法三:
如果你像我一樣喜歡開源版,又喜歡折騰,那麼我們一起來編譯最新版的。
首先安裝 mercurial 以便取回最新版代碼:
sudo apt-get install mercurial
取出代碼:
cd ~
hg clone http://opensound.hg.sourceforge.net:8000/hgroot/opensound/opensound oss-devel
創建編譯目錄,OSS4 需要在空目錄編譯:
cd ~/
sudo rm -rf oss42build
mkdir oss42build
編譯並安裝,假設你的主目錄是 /home/aron:
cd oss42build/
NO_WARNING_CHECKS=yes /home/aron/oss-devel/configure –enable-libsalsa=NO
make
sudo make deb
sudo dpkg -i oss*.deb
安裝結束,如果沒有遇到錯誤接下來開始配置:
1. 儘管 OSS4 內建了軟件混響,我還是沒有刪除 PulseAudio,因爲 Ubuntu 的桌面環境很多部件僅設置了 PulseAudio 後端。我不想一一折騰,而只是儘量讓程序使用 OSS4,畢竟主要的播放器等都支持自定義音頻輸出。如果你也這樣想,照下面做;如果你不想,跳過這段。
A. 修改 PulseAudio 設置使其默認使用 OSS4 輸出:
gksu gedit /etc/pulse/default.pa
添加一行:
load-module module-oss device=”/dev/dsp” sink_name=output source_name=input mmap=0
B. 配置 gstreamer 使用 OSS4 作爲後端:
安裝 gstreamer0.10-plugins-bad
sudo apt-get install gstreamer0.10-plugins-bad
運行命令:
gstreamer-properties
將輸入和輸出均設置爲 OSS。
C. 設置 libasound 將傳遞給 ALSA 的聲音請求轉至給 OSS4:
gksu gedit /etc/asound.conf
添加以下內容:
pcm.oss {
type oss
device /dev/dsp
}
pcm.!default {
type oss
device /dev/dsp
}
ctl.oss {
type oss
device /dev/mixer
}
ctl.!default {
type oss
device /dev/mixer
}
D. 配置啓動時默認啓用 OSS4 而非 ALSA:
sudo dpkg-reconfigure linux-sound-base
選擇 OSS 而非 ALSA 或 default。
然後重啓電腦,系統級配置基本完成。然後可以給支持自定義音頻系統的軟件配置成使用 OSS4,比如 Audacious,Wine,Audacity,VLC,(s)mplayer,clementine。
2. 如果你想刪除 PulseAudio,也有辦法,但是不保證所有程序都能正確輸出聲音。首先是按照前一種配置方法裏的 B、C、D 調整設置,然後按照 E 和 F 對 PulseAudio 開刀。
E. 使用 GStreamer 接管 GNOME 聲音系統,安裝爲 GStreamer 後端編譯的 libcanberra:
sudo add-apt-repository ppa:dtl131/ppa
sudo apt-get update
sudo apt-get purge pulseaudio
sudo apt-get upgrade
F. 配置 Rhythmbox 等程序使用 Gstreamer (沒錯,還需要配置)
運行:
gconf-editor
找到 system/gstreamer/0.10/audio/default,將其中所有仍被設置爲 pulsesink 的鍵(如 musicaudiosink 和 chataudiosink)都改爲 osssink。
系統默認的音量控制插件會失效,因爲它是基於 PulseAudio 的,可以在面板上單擊右鍵,添加一個 GNOME 的聲音控制。
然後重啓,應該絕大部分聲音系統都沒有問題了。可能存在的問題:
- Flash,需要安裝 flashplugin-nonfree-extrasound 來獲得支持 oss4 的 libflashsupport。
- Firefox,xulrunner 無法編譯成同時支持 Alsa 和 OSS4,所以可能有問題。
FAQ
1. 聲音輸入不能用,或者有噪音
運行命令:
ossxmix
在顯示的界面裏把 pink 下拉菜單中選成 input,勾選界面裏所有的 input-mix 和 input-mix-mute,然後在 pink 處拖動滑塊減小音量,一般以 80% 上下爲宜,否則會有噪音。
2. 如何查看是否已經加載了 OSS4 內核模塊,以及我的聲卡用了什麼模塊?
運行命令:
lsmod | grep -i oss
比如我是 HD Audio,輸出如下:
oss_usb 104136 1
oss_hdaudio 144219 3
osscore 545146 2 oss_usb,oss_hdaudio
3. 如何查看我的聲卡型號?
lspci | grep -i audio
4. 64 位系統能用嗎?
能,沒問題。
5. KDE4 用 Phonon,能用嗎?
Phonon 默認應該可以直接檢測到 OSS4。KDE 4.0.x 用 Xine 後端時可能無法使用。
6. 用什麼調節音量?
如果保留了 PulseAuido,則使用它的程序可以用原來的音量控制,如果是用 Gstreamer,則可以使用 GNOME 的音量控制程序。
當然,也可以直接使用 ossxmix 工具調整,或者例如 xfce-oss、kmix 這樣的工具。
不想用 OSS4 了,怎麼復原?
我針對上面的 A B C D E F 分別說需要的操作。
A. 恢復 PulseAudio 默認的硬件檢測
gksu gedit /etc/pulse/default.pa
刪除添加的行。
B. 配置 gstreamer 使用 PulseAudio 作爲後端
運行命令:
gstreamer-properties
將輸入和輸出均設置爲 PulseAuido。
如果你不想要 gstreamer0.10-plugins-bad,可以刪除它:
sudo apt-get purge gstreamer0.10-plugins-bad
C. 設置 libasound 使用 ALSA:
刪除 /etc/asound.conf 中增加的所有行。如果你開始折騰 OSS4 之前沒有對它做過修改,直接刪除就行:
sudo rm /etc/asound.conf
D. 配置啓動時默認啓用 ALSA:
sudo dpkg-reconfigure linux-sound-base
選擇 ALSA。
E. 換回支持 Gstreamer 和 PulseAudio 的 libcanberra 後端:
安裝必須的軟件:
sudo apt-get install pulseaudio indicator-sound libcanberra-pulse libcanberra-gstreamer pulseaudio-esound-compat pulseaudio-module-bluetooth pulseaudio-module-gconf pulseaudio-module-x11 ppa-purge
刪除添加的 PPA:
sudo ppa-purge ppa:dtl131/ppa
sudo apt-get update
如果還不能正常,就手工降級所有相關軟件包(是挺噁心的,但是沒別的辦法),可以在新立得裏用“本地的或陳舊的”過濾器幫你確定是哪些包。
F. 配置 Rhythmbox 等程序使用 PulseAudio
運行:
gconf-editor
找到 system/gstreamer/0.10/audio/default,將其中所有仍被設置爲 osssink 的鍵都改爲 pulsesink。
然後把所有前面修改過使用 OSS4 的程序都換回使用 PulseAudio,重啓系統。
有用的資料:
- 爲常見應用程序配置 OSS4:Configuring Applications for OSSv4
- 故障處理:OSSv4 Troubleshooting
- Archlinux Wiki 上的 OSS 頁面:英文 中文