歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Linux中用ALSA驅動聲卡流程詳解

Linux中用ALSA驅動聲卡流程詳解

日期:2017/2/27 14:25:53   编辑:更多Linux

  一、什麼是ALSA ;

  Advanced Linux Sound Architecture 的簡稱為 ALSA ,譯成中文的意思是 Linux 高級聲音體系(這是我直譯的,可能譯的不對);一談到體系就有點范圍就太大了,所以ALSA不僅僅是包括對聲卡的支持和驅動;

  ALSA具有如下特征:

  代碼:

  1、對所有音頻接口的高效支持,從普通用戶的聲卡到專業級別多路音頻設備;

  2、聲卡驅動完全模塊化設計;

  3、SMP and thread-safe design.

  4、開發庫(alsa-lib) 為程序設計提供了簡單、方便,並且擁有有高級的效果和功能;

  5、支持舊版本的OSS API 結口,能為大多數的OSS應用程序提供兼容;OSS是一個商業性的驅動,OSS有一個簡裝本的代碼已經移入內核和ALSA,其中alsa-oss就是;OSS公司據說目前已經並不存在了;我們沒有必要用OSS 公司提供的商業版本;用ALSA和OSS簡裝版足夠;

  二、關於硬件驅動驅動的必備基礎 ;

  1、如何查看硬件芯片;

  在Linux操作系統中,所有的硬件都是以芯片組來區分的,品牌並不是最重要的;硬件最重要的標識是芯片組;所以您在討論區求助的時候,只說硬件品牌,而不提供芯片組,大家是幫助不了您的,切記;

  我們查看硬件的芯片組是的命令是 lspci -v 或者是dmesg,由於dmesg輸出的信息不太多,不夠直觀;所以經常用的還是lspci -v ;也可以用lshal 獲取;最方便的還是lspci -v;初學者還是用 lspci -v 更好一點;

  代碼:
  [root@localhost beinan]# lspci -v

  我們運行lspci -v 後,如果查看聲卡芯片組,發會現有類似下面的一段;

  代碼:
  [root@localhost beinan]# lspci -v

Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M)
AC'97 Audio Controller (rev 03)
Subsystem: Hewlett-Packard Company: Unknown device 3080
Flags: bus master, medium devsel, latency 0, IRQ 5
I/O ports at 1c00 size=256
I/O ports at 18c0 size=64
Memory at e0100c00 (32-bit, non-prefetchable) size=512
Memory at e0100800 (32-bit, non-prefetchable) size=256
Capabilities: [50] Power Management version 2

  2、系統內核版本;

  代碼:
  [root@localhost beinan]# uname -r -m -p -i
  2.6.11-1.1369_FC4 i686 i686 i386

  上面的表示的是系統的內核版本,處理器架構等;

  提示:如果您自己編譯內核,還要安裝kernel-devel (或 kernel-source), 這個是在系統光盤或者映像文件中有帶;如果您想自己用 kernel.org 下載內核,自己編譯,然後再來驅動聲卡,也可以到 kernel.org 上下載最新的內核源碼;

  一般情況下,如果系統默認的內核不能驅動聲卡,大多得更換內核,我們建議您先從發行版所提供的升級包來升級內核及源碼;比如Fedora 的擴展項目軟件包更新速度極快,我們能通過apt和yum進行kernel的升級;在啟用新內核時,我們不建議您刪除老內核;因為現在Fedora / Redhat 引入apt和yum 更新工具,系統的完整性極為重要;如果系統被破壞,用更新工具變得極為困難;

  比如Fedora 的apt和yum升級源升級的內核也解決不了您的問題,我們可能需要自己通過 kernel.org 下載內核來編譯;但也不能刪除以前的內核包及源碼包;一是為了安全,畢竟我們自己編譯內核不是百分之百的成功;另外系統自帶的內核及源碼包被系統很多軟件依賴;apt和yum 每次更新軟件包的時候都要檢查系統的完整性;

  對於有些發行版,可以直接從從 kernel.org 下載最新的內核;如果從系統提供的內核源碼(kernel-devel或kernel-source)編譯,可能解決不了您的問題;

  3、modprobe.conf的內容;

  在Fedora Core 4.0 中,內核模塊的添加或定義別名是在 /etc/modprobe.conf 文件;在其它版本可能是 modules.conf ;如果您的系統中存在modprobe.conf ,我們就以這個文件為准;不同發行版有不同的定義文件,比如 slackware 是定義在/etc/modules.conf 中,但也要在 /etc/rc.d/rc.modules 打開相關驅動模塊;

  modprobe.conf 或者module.conf就是對系統已經加載的模塊進行相應的配置,比如設置別名等;這些一般都是自通過工具自動生成的,我們也可以通過查看硬件的文檔和站點,也可以自己添加。為什麼這樣添加,而不是那樣的呢?我也不懂了,因為人家文檔那樣說的,我不會開發,如果懂的開發的,可能會明白;請理解理解我;

  比如我用的是855的主板,系統驅動用的是 snd-intel8x0,在/etc/modprobe.conf的配置是如下的內容; 下面這段內容是通過 alsaconf 配置工具自動生成的;

  代碼:
alias snd-card-0 snd-intel8x0
options snd-card-0 index=0
options snd-intel8x0 index=0
remove snd-intel8x0 { /usr/sbin/alsactl store 0 >/dev/null 2>&1 : ; }; /sbin/modprobe -r --ignore-remove snd-intel8x0

  4、lsmod 查看已經加載的內核模塊;

  如果一個設備在內核的編譯中是以模塊方式加載的,主要是通過lsmod 來查看;

  代碼:
  [root@localhost beinan]# lsmod

  可能初學Linux的弟兄會問,內核的module存放在哪裡,我們能不能自己來手工加載模塊;內核的模塊放在 /lib/modules/內核的版本/kernel/ ,比如在Fedora 4.0 中,我們可以看到如下的:

  代碼:
  [root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/kernel/
  arch/ crypto/ drivers/ fs/ lib/ net/ sound/其中,sound 就是聲卡模塊存放目錄,大多數的硬件驅動放在 drivers目錄,fs 是文件系統模塊的目錄;net是與網絡有關的存放目錄,比如一些網絡協議支持的模塊、防火牆支持的模塊等;arch 是cpu方面 ... ...

  如果我們想自己加載模塊,就到這些目錄中查看相應模塊的信息,然後用 modprobe 來加載;

  代碼:
  [root@localhost beinan]# modinfo snd-intel8x0

  查看一個模塊的信息,我們用 modinfo 來查看,所要查看的模塊不要帶 .ko 或者.o 之類的;比如查看到類似下面的信息;

  description: Intel 82801AA,82901AB,i810,i820,i830,i840,i845,MX440; SiS 7012; Ali 5455

  通過這個我們足可以知道這是Intel 集成聲卡,通過lspci -v 得到的聲卡信息,感覺他們很相近;所以就能嘗試用這個模塊來驅動;

  代碼:
  [root@localhost beinan]# modprobe snd-intel8x0

  用 modprobe 加載了模塊,然後我們通過 lsmod 就能看到了;對於聲卡模塊是這麼加載的,其它設備的驅動模塊也是如此;

  <font color=red>注意:[/b][/size]這些只是教您一點基礎知識,遇到什麼問題,知道怎麼去查看解決;如果您在論壇求助的時候,是必須把 lsmod 輸入內容以及 /etc/modprobe.conf 或 modules.conf 的內容帖出來。這樣能節省很多時間,否則大家不會明白問題出在哪裡;

  三、針對自己系統的聲卡不發聲,我是否有必要來升級內核解決;

  可能存在這樣的情況,比如有時我在Mandriva Linux時,聲卡是有聲音的,但安裝好Fedora 系統後卻沒有聲音了;所以我們有必要弄清楚如下的幾個問題;可能聲卡已經驅動起來了,只是我們不太了解系統的原因所致;下面我們以Fedora 為例;

  1、聲卡是不是被系統識別支持了;

  我們可以用Fedora 提供的配置工具 system-config-soundcard 來測試;

  代碼:
  [beinan@localhost ~]# system-config-soundcard

  通過測試,如果能聽到聲音,證明聲卡已經驅動好了;如果聽不到聲音,但反應在也不遲鈍,不是打開 system-config-soundcard ,按測試播放聲音時會出現假死的情況;可能是聲量沒有打開;

  2、是否把聲卡的音量打開了,比如PCM 和MASTER等;

  我們可以用下面幾個工具;

  代碼:
  [beinan@localhost ~]# gnome-volume-control
  [beinan@localhost ~]# kmix
  [beinan@localhost ~]# alsamixer
  [beinan@localhost ~]# aumix

  上面的四個工具,可以嘗試一下,有時這幾個工具存在BUG的事;所以我們還要引入一個工具 aumix ,目前已經被Fedora 刪除了;我們自己安裝上就行了;

  3、我的聲卡是測試時是有聲音的,但我為什麼不能播放CD和聽mp3呢?

  自從Redhat 8.0以後,也就是說 Redhat 9.0 ,Fedora 1.0,Fedora 2.0,Fedora 3.0 ,Fedora 4.0的媒體播放軟件不再對mp3提供支持;究其原因是版權方面的原因;但這不是意味著我們不能在Fedora 系統中讓播放軟件支持 mp3;我們可以安裝mp3支持補丁或者下載全新的播放器;而這一切都離不開在線安裝工具 apt或yum ;

  至於CD為什麼不能播放的問題,在論壇上已經說過多次了;首先要保證CDROM的音頻線和主板相連接;有的弟兄會問,Windows為什麼就能直接播放,我也沒有把CDROM的音頻線接在主板上;我答復您的是:咱們得轉換觀念,咱們是在用Linux,而不是Windows;

  4、查看聲卡是否有模塊沖突;

  比如Intel 主板集成了貓和聲卡、網卡等,這時可能貓的蜂鳴器會被系統識別為聲卡,所以要通過 lsmod 來查看,是否有 snd-intel8x0m;如果有則要處理一下;把在/lib/modules/內核的版本/kernel/sound/pci 中或 /lib/modules/內核的版本/kernel/drviers/sound/pci中的 snd-intel8x0m.ko改名為 snd-intel8x0m.koBAK ;

  還有類似的主板,比如 VIA 主板集成了聲卡和貓的, 如果聲卡不發聲,大多也與這有關,比如內核模塊有snd-via82xx.ko 和snd-via82xx-modem.ko,可能系統會把 snd-via82xx-modem.ko模塊當成是聲卡的驅動。如果您出現這樣的情況,也要改名;

  5、通過 alsaconf 來配置聲卡;

  一般的情況下,系統在安裝的時候,會自動把聲卡配好;如果能識別的,就基本沒有問題了;但如果出現識別了,但還是不發聲;或者識別成貓的蜂鳴器;所以我們除了要把前面所說的貓的蜂鳴器模塊改名後,還要重新運行一下聲卡配置工具 alsaconf ;可能我們還需要前面的一點知識,比如 modprobe 、lsmod等;有必要的時候還要啟新啟動機器;

  如果我沒有alsaconf 這個命令怎麼辦?

  代碼:
  [root@localhost beinan]# /usr/sbin/alsaconf

  比如在Fedora Core 4.0 中,可能您不能發現這個命令;您采取的辦法只能是重新編譯 alsa-utils ;但也要保守編譯;不能把alsa相關的包全都刪除,只能是選擇對應版本來編譯;現在的Fedora 通過yum和apt升級,如果系統所依賴的包出被移除,比較重要的,alsa 就是其中的一個;會導致一些程序不能用;因為有版本對應關系;我們不能把系統整體的依賴關系打破;當然無關緊要的,比如這個軟件包是依賴於其它包,而這個包不為其它包提供依賴的包,這樣的包是可以移除的;

  自己編譯alsa-utils 的辦法是:

  首先,確認系統alsa軟件包的版本;

  代碼:
  [root@localhost alsa]# rpm -qa grep alsa
  alsa-utils-1.0.9rf-2.FC4
  alsa-lib-1.0.9rf-2.FC4
  alsa-tools-1.0.9-1.fc4

  我們要到 alsa-project.org 中下載 1.0.9的源碼包;主要下載alsa-lib-1.0.9 和 alsa-utils-1.0.9a;不要卸載原來的RPM包;先安裝 alsa-lib-1.0.9,然後再安裝alsa-utils-1.0.9a ;編譯方法無非是 tar zxvf file.tar.gz 或者 tar jxvf file.tar.bz2 ,然後是進入相應的解壓目錄 ./configure;make;make install ;

  當然您要有安裝開發工具、開發庫等;如果不能進行源碼包安裝alsa等,所以我們要補裝系統所缺少的軟件;請參考 《Fedora / Redhat 軟件包管理指南》

  這樣我們就有 alsaconf 工具可用了;這樣編譯 alsa也不會對系統造成破壞;

  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  中場休息:我已經精疲力盡,上面所提到的我都嘗試了,但還是不能驅動聲卡;我該怎麼辦?
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  如果上面的的內容您都明白了,那我得為您祝賀,說明您對硬件的驅動方法已經有所了解了;雖然聲卡的問題還是沒有解決,但您把基本的必備知識掌握,解決聲卡的發聲還不是什麼難事;

  您看到這裡已經是很疲憊,呵,我寫到這裡也有點累;但為了初學者在Linux能聽到音樂,我還得接著努力,直到把您的問題解決為止;

  四、安裝新版本的ALSA;

  1、對ALSA軟件包的說明;

  通過上面的一系列工程,可能您發現還不能解決您的問題,這時我們有必要升級ALSA;至於是否升級內核,我們還得等完成這步,看是否有必要;比如在Fedora 4.0 中,我們通過 rpm -qa grep alsa 查詢時會發現沒有 alsa-driver 這個包,這是怎麼回事?

  代碼:
  [root@localhost alsa]# rpm -qa grep alsa
  alsa-utils-1.0.9rf-2.FC4
  alsa-lib-1.0.9rf-2.FC4

  現就ALSA 相關的軟件包做一說明(在alsa-project.org 上有列出);

  alsa-lib 是alsa-driver 或者alsa其它包的時候,必須先安裝這個包;

  alsa-driver 是音頻設備的驅動;一般內核都集成在裡面,大多是以模塊的方式,安裝在了 /lib/modules/內核的版本/kernel/sound 或 /lib/modules/內核的版本/kernel/drviers/sound/ 中了;每個版本的內核都是如此;這也是我們沒有在 Fedora Core 4.0 中沒有發現 alsa-driver的原因 ;如果我們自己編譯升級 alsa,其中 alsa-driver 也是被安裝在 /lib/modules/內核的版本/kernel/sound 中或 /lib/modules/內核的版本/kernel/drviers/sound 中 ;明白了吧;

  alsa-utils 這個包主要是一些聲卡配置工具,比如 alsaconf 、 alsamixer等;

  alsa-oss 這個包和alsa-driver 一樣,也沒有以獨立的包出現在 Fedora Core 4.0 中,原因和alsa-driver 一樣,是集成在內核了,這個包極有必要的;如果我們升級ALSA的話,有些聲卡用ALSA是驅動不起來的,是必須用alsa-oss才行;alsa-oss 包括了oss驅動庫;alsa-oss,我們自己安裝一般是默認放在了 /usr目錄中;

  alsa-tools 這個是額外的工具包,不是必須的;是針對一些特別的聲卡的工具或者解碼器之類,您可以根據自己的聲卡來安裝;不安裝也是可以的;

  其它的包就不說了,到 alsa-project.org 上去看吧;比較重要的就是 alsa-lib 、alsa-driver、alsa-utils 、alsa-oss ;

  2、ALSA的編譯安裝的前期准備;

  編譯安裝ALSA,我們需要什麼環境,就如同我們在Windows中打開一個file.doc文檔一樣,是需要先把Word安裝上一樣;Linux也是如此,我們必須先把軟件包編譯所需要的工具安裝上;另外還要安裝kerenel-devel或者其它一些支持的庫,如果您沒有安裝這些,編譯無法進行;這樣開發工具都在系統安裝盤中;如果您不知道如何安裝,對於Fedora /Redhat 請參見 《Fedora / Redhat 軟件包管理指南》

  您也要在線升級內核及內核的源碼包,以Fedora 4.0為例,必須保證kernel 和kernel-devel 包是同一個版本;可能您看到好多kernel的包,還有什麼smp之類的;如果您只是單處理器的,就不要用smp的;看圖作業(點擊看大圖,升級內核時,請選擇圖中標記的顏色對應的內核和源碼升級,也就是說版本要對應)

  <img src="

  重要:通過在線升級內核可能會解決您的聲卡所存在的問題,要試著用前面所說的來嘗試解決;您還可以通在在線升級alsa-lib ;alsa-tools ;alsa-utils 等包;

  如果通過在線升級內核及alsa-lib;alsa-utils;alsa-tools 等能解決您的問題,請不必看以下的內容;

  為什麼說,通過在線長級內核能解決呢?因為通過內核的升級,內核包內置的alsa-driver 可能也得到了升級,如果打包的人升級了alsa-driver的話;如果是不能解決,說明alsa-driver 還是老版本;起重要作用的是alsa-driver ; 如果在線升級的過程中,alsa-lib沒有新版本,肯定新內核中的alsa-driver 也沒有更新,因為他們是配套的;明白了吧;

  判斷是否有必要重編內核:

  代碼:
[root@localhost beinan]# modinfo soundcore
filename: /lib/modules/2.6.11-1.1369_FC4/kernel/soundBAK/soundcore.ko
description: Core sound module
author: Alan Cox
license: GPL
alias: char-major-14-*
vermagic: 2.6.11-1.1369_FC4 686 REGPARM 4KSTACKS gcc-4.0
depends:
srcversion: E11490DC3F523551C4C2A6D

  如果出現上面類似的信息,則不必編譯內核;

  誤區之一:看到論壇的好多弟兄,總認為只要在線升級了alsa-lib 和alsa-utils 或 alsa-tools 就能解決聲卡不發聲的問題;其實不是這樣的;因為起關健作用的是內核,而內核中的聲卡驅動也是來自alsa-driver ;所以我們要嘗試升級 alsa-driver 才能解決問題,只升級alsa-lib和alsa-utils 有何用?聲卡的驅動並沒有更新;有時升級alsa-lib 和alsa-utils 或許也能讓聲卡發聲;只能說明是alsa-lib或alsa-utils存在了問題才導致聲卡不發聲;

  誤區之二:也有弟兄認為驅動聲卡是一定要重新從 kernel.org 下載內核,然後自己編譯內核來解決聲卡的問題;通過kernel.org 下載的內核,是能解決您的問題;但kernel.org 的內核集成聲卡驅動也是來自於 alsa-project.org ;如果我們為了解決聲卡驅動,沒有在嘗試用 alsa-driver 新版本的情況下,是沒有必要重新編譯內核的;

  正確觀點:只要內核中的soundcore 是以模塊的形式編譯的,並且通過modinfo soundcore查看版本信息輸出,我們就沒有太大必要重編內核;因為系統幾乎對所有的聲卡及設備都有編譯進去;所以我們先不要重編內核;除非做了升級alsa-driver後,還是不能解決問題,這時才能重編譯核;alsa-driver 是和內核配置文件相關聯的;也就是說,alsa-driver 是根據內核的配置文件來進行判斷,對哪些聲卡應該支持等;如果內核的配置文件沒有配置對您的聲卡進行支持;這時才需要我們來配置內核;另外內核中對聲卡的支持的驅動也是來自於 alsa-driver ;

  3、嘗試編譯安裝ALSA ;

  比如我下載了alsa 1.0.10rc1 版本,要下載配套的,比如 alsa-driver、alsa-lib、alsa-oss、alsa-utils 要下載同一系列的版本;我們先要安裝alsa-lib;然後再安裝其它的包;

  警告: 在編譯alsa所有包的時候,對於Fedora Core ,請不要卸載系統自帶的alsa-lib 及alsa-utils 等;這樣能欺騙系統,說明系統完整的;alsa是基礎包之一,不是隨便可以卸載的,因為有很多的包依賴這幾個舊的包;比如xmms,如果您把alsa-lib系統自帶的包卸掉了,xmms就不能用 alsa驅動,只能用oss驅動了,除非您在升級alsa-lib後重新編譯xmms;另外最嚴重的後果,如果卸掉了這幾個包,會破壞系統整體的依賴關系,yum和apt升級系統將無關正常運行;

  代碼:
[root@localhost alsa]# tar jxvf alsa-lib-1.0.10rc1.tar.bz2
[root@localhost alsa]# cd alsa-lib-1.0.10rc1
[root@localhost alsa-lib-1.0.10rc1]# ./configure ;make ;make install

[root@localhost alsa]# tar jxvf alsa-utils-1.0.10rc1.tar.bz2
[root@localhost alsa]# cd alsa-utils-1.0.10rc1
[root@localhost alsa-utils-1.0.10rc1]# ./configure ;make ;make install

[root@localhost alsa]# tar jxvf alsa-driver-1.0.10rc1.tar.bz2
[root@localhost alsa]# cd alsa-driver-1.0.10rc1
[root@localhost alsa-driver-1.0.10rc1]# ./configure ;make ;make install

[root@localhost alsa]# tar zxvf alsa-oss-1.0.10rc1.tar.bz2
[root@localhost alsa]# cd alsa-oss-1.0.10rc1
[root@localhost alsa-oss-1.0.10rc1]# ./configure ;make;make install

  提示:其中alsa-driver 可以定義聲卡來編譯,這個對於老手還比較適用,如果您還不太會查看alsa的文檔的話,就直接用通用的./configure;make;make install 來安裝;這樣所有的聲卡都安裝進去了;

  4、嘗試通過用新的ALSA驅動來配置聲卡 ;

  在這個時候,我們才用到前面講的基礎知識;呵。。。。。書到用時方恨少;不學習怎麼也不行;

  1)通過alsaconf 來配置聲卡;

  我們要通過alsaconf 來配置,看能否找到聲卡;在運行alsaconf的時候,對於FC4請修改/etc/modprobe.conf 對其它的版本按前面的說,可能是 /etc/modules.conf ,把所有關於聲卡的項目前面加#注掉,或者刪除;

  在選行alsaconf時,我們有必要運行一下如下的兩個命令;目的是更新文件的索引數據庫;

  代碼:
  [root@localhost beinan]# rpm -rebuilddb 這個是針對RPM包的系統的;
  [root@localhost beinan]# updatedb然後再來運行alsaconf

  代碼:
  [root@localhost beinan]# /usr/sbin/alsaconf

  我們用過alsaconf後,要查看 /etc/modprobe.conf 或/etc/modules.conf ;還要lsmod ,看聲卡模塊有沒有加載進來。如果沒有加載進來,我們還要會用 modprobe 加載模塊,前面有說,請回頭看看;

  如果運行 alsaconf 後,配置文件 /etc/modprobe.conf 並沒有發生變化,沒有發現聲卡的配置內容;您要到 alsa-project.org 上查看相應的信息,只看關於 /etc/modprobe.conf 的內容就行;比如他在上面說的是modules.conf 的,您可以直接寫到 modprobe.conf (如果是Fedora 的話),各個系統的配置文件都差不多,如果不是modprobe.conf就是modules.conf ;

  請參見:ALSA 聲卡支持列表和文檔

  請根據文檔所說的來加載模塊和配置 modprobe.conf或 modules.conf ;

  2) 調節音量;

  我們可能已經把聲卡驅動起來了,但沒有聲音,所要一定要打開音量;調節工具:kmix 、aumix 、alsamixer及system-config-soundcard等工具;

  3)值得注意是的,如果您播放mp3時,要注意以下系統;

  自從Redhat 8.0以後,也就是說 Redhat 9.0 ,Fedora 1.0,Fedora 2.0,Fedora 3.0 ,Fedora 4.0的媒體播放軟件不再對mp3提供支持;究其原因是版權方面的原因;但這不是意味著我們不能在Fedora 系統中讓播放軟件支持 mp3;我們可以安裝mp3支持補丁或者下載全新的播放器;而這一切都離不開在線安裝工具 apt或yum ;

  提示:測試。。。。能成功嗎? 不成功接著看下面。。。。。。

  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  下半場:前半場下來,您還是不能解決聲卡,只能用最後一招;重新編譯內核~
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  五、重新編譯內核;

  1、為什麼要編譯內核?

  因為您的聲卡沒有被當前所用的內核版本配置進去,所以我們要新編譯內核;

  2、我不會編內核怎麼辦?;

  可能新手弟兄會說,我不會編內核怎麼辦?答曰:不會編內核,就得學習,誰也不是天生就會的;學習改變命運,不是嗎?其實編譯內核目前看來是極為簡單的事,只是我們第一次接觸到Linux,太習慣Windows的點鼠標,不太習慣Linux的命令行操作罷了。只要努力,沒有什麼做不成的;你看北南這水平都會寫教程 。呵。。。坐在電腦前大俠如果認為北南寫的這篇文章或許對你有所幫助的話,那您也能行;加油~~~~

  3、內核的選擇;

  一般的情況下選擇發行版所提供的內核升級包及源碼包要好;您可以通過 apt+synaptic 來選擇裝,但不要把老內核刪除,系統的完整性是很重要的;一般的情況下如果通過新內核的在線升級能解決問題的,我們也沒有必要編譯了;我們前面已經說過了;如果不能用新的內核來驅動,我們可以在新的內核的基礎上進行編譯,當然我們必須要下載kernel-devel 或者 kernel-source 包;

  為什麼要選擇系統提供的內核及源碼升級包呢?

  一是主要是為了方便,對於大多數的選項,我們按默認就好了,我們只是針對比較重要的地方改一改;比如對於Fedora Core 4.0 ,目前在線升級源有很多版本可下載使用;我們要把同一版本的內核包及源碼包都要安裝;

  二是如果我們用新編的內核啟動不了系統,可以用老內核來引導,這是為了系統的安全。對新手和老手都是適用的;

  當然您也能從 kernel.org 上下載最新最穩定的內核;目前最新版本是 2.6.13 ;kernel.org 下載的內核包含的聲卡驅動也是來自 alsa-driver ;

  4、編譯內核參考文檔;

  《編譯內核操作流程 ──為新手指南》

  根據《編譯內核操作流程 ──為新手指南》 中所說的,有針對性的來解決問題;編譯好內核後,用alsaconf 來配置聲卡;或者重新編譯 alsa-lib 、alsa-oss、alsa-utils 等;經過我的測試,一般的情況下重新編譯過內核後,用 alsaconf 配置一下就能用了;

  後記:

  至此,關於聲卡的問題就算解決流程就算完工了;如果您認為我的這篇文檔寫的還不夠詳細,或者不能解決您的問題;問題無非是兩種,一是您的聲卡沒有被ALSA所支持,請查相應的列表;二是如果ALSA已經支持了您的聲卡,您看了我的文檔還是不能解決您的問題(看與不看只是一個假設,就看我的文檔值不值得您一看了);

  對於第二種情況無非又是有兩種原因,一是北南寫的文檔不行,您看不懂;二是您可能是真的初學者,可能需要更多的嘗試和努力;

  如果還是解決不了,或行您靜下心仔細看一下本文檔所提到的流程,或許能找到一點對您有所啟示的內容;最好是... ...

  再解決不了怎麼辦呢,如果您和北南在同一個城市的話,把機器抱到我這裡,我感覺差不多能解決吧;哈哈。。。。。。。。。




Copyright © Linux教程網 All Rights Reserved