Rate your life

This Is My Life, Rated
Life: 7.1
Mind: 7
Body: 6.9
Spirit: 5.9
Friends/Family: 6.2
Love: 5.4
Finance: 5.2
Take the Rate My Life Quiz

 

看到别人都在测试当前的生活状态,我也赶紧去测试一下,嘻嘻,结果如上图

整体成绩还不错

暑假快乐,目标是在家吃胖点...

Ubuntu: ThinkPad SL400的无线上网问题

话说,前几天跟死党们一起去图书馆准备享受无线上网的乐趣(之前大家说好,拿着四台本,然后一起去图书馆玩QQ游戏,呵呵)。

结果,唯独我的笔记本连无线都开不了,汗...记得刚买笔记本的时候成功使用过无线上网,难道那时还是Vista?

无奈之下,还是只能求助于万能的Google:

于是,找到了 madwifi 这个东东,介绍见: madwifi.org

"This software contains a Linux kernel driver for Atheros-based Wireless LAN devices.  The driver supports station, AP, ad-hoc, and monitor modes
of operation.  The Atheros driver depends on a device-independent implementation of the 802.11 protocols that originated in the BSD
community (NetBSD in particular)."

运行lspci找到如下结果:

Ethernet controller: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter (rev 01)

安装Madwifi(具体内容参考INSTALL):

下载最新的madwifi-hal-0.10.5.6

sudo make clean

sudo make

sudo make install

sudo modprobe ath_pci

sudo gedit /etc/modules文件,在最后加上一行: ath_pci


 

Vim配置

忙活了好几天,终于有点成果了嘻嘻,学习过程中最强烈的感觉就是Vim好好好强大...

一些常用的功能都已经配置OK,例如窗口管理,缓冲区管理,ctags、cscope插件提供的标签跳转,全能补全,自动补全,quickfix等

贴图如下:

.vimrc文件:

Vim 进阶学习

正所谓 ”磨刀不误砍柴工“

当初在Vim与Emacs之间选择了前者(话说当时我连它们是干嘛的都不知道就乱选了,可能就因为才斌用的是Emacs,我就选了Vim哈哈)

目前差不多已经用了半年,却还是只会使用用户手册里前几章的内容进行简单的移动和编辑,尽管一般写程序都已经使用Vim,不过可能只用到它千分之一的功能而已。

再不进阶学习下,就对不起这么强大的工具啦。

另外,昨天在网上找到了一个很不错的Vim教程,相当不错,记录在此:

easwy.com/blog/archives/advanced-vim-skills-catalog/

Firefox 中文乱码

来源: www.3dian9.com/archives/1317.html

如下两步:

(1)备份49-sansserif.conf这个字体配置文件

    sudo cp /etc/fonts/conf.d/49-sansserif.conf /etc/fonts/conf.d/49-sansserif.conf.bak

(2)删除49-sansserif.conf文件做完后重启firefox就可以了。

    sudo rm /etc/fonts/conf.d/49-sansserif.conf

重新启动,在打开就好了,Goolge音乐搜索中个歌曲名字就不是乱码了。

ubuntu 8.10 LaTex + 中文字体

今天刚在机器上安装好LaTex以及中文字体,毕业论文即将开始,不知道用不用的上呵呵呵

参考的文章是:blog.upsuper.org.cn/ubuntu-trip-7-latex-return/

首先是到这里下载最新的TexLive的iso文件,文件很大(1.2G左右),我是在Windows下用迅雷下载的,速度很快,这里以texlive2008-20080822.iso.lzma为例。


unlzma texlive2008-20080822.iso.lzma

sudo mkdir /media/texlive
sudo mount -o loop  texlive2008-20080822.iso /media/texlive
cd /media/texlive
sudo ./install-tl
 

然后按"I"开始安装。安装过程是全自动化的。

另外,具体安装过程也可以参考 www.tug.org/texlive/quickinstall.html

特别注意:

you must add the TeX Live binary directory to your PATH:
  PATH=/usr/local/texlive/2008/bin/i386-linux:/usr/local/texlive/2008/bin/i386-linux:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/Adobe/Adobe/Reader8/bin:/usr/local/emelfm2/bin

编辑/etc/environment,在PATH的最前面加上“/usr/local/texlive/2008/bin/i386-linux:”


中文字体支持

首先字体文件可以在Windows系统的C:/Windows/Fonts文件夹下找到,例如simhei.ttf, simkai.ttf等。

主要使用的是一个脚本文件: mkfont.tar.gz

./mkfont.sh simkai.ttf simkai kai

./mkfont.sh simsun.ttf simsun song

.........类似,注意宋体必须要用Windows 98所带的宋体,不然不支持

最后找到主文件夹下有一个“texmf”文件夹,将里面的东西拷贝到“~/.texlive2007/texmf-var”文件夹下即可。

simhei.ttf ---> hei (黑体)

simsun.ttf ---> song (宋体)

simkai.ttf ---> kai (楷体)

simfang.ttf ---> fang (仿宋)

SIMLI.TTF ---> li (隶书)

SIMYOU.TTF ---> you (幼圆)

以上是我转换成功的字体,测试:

\documentclass{article}
\usepackage{CJKutf8}
\begin{document}
\begin{CJK*}{UTF8}{song}
你好!
\end{CJK*}
\begin{CJK*}{UTF8}{kai}
你好!
\end{CJK*}
\begin{CJK*}{UTF8}{hei}
你好!
\end{CJK*}
\begin{CJK*}{UTF8}{fang}
你好!
\end{CJK*}
\end{document}

 

编译内核操作流程 ──为新手指南

作者:北南南北
来自:LinuxSir.Org
提要: 编译内核主要是通过内核实现某些功能,比如iptables 需要内支持;所有的硬件的支持也是通过内核实现的;本文只是简单的给初学者讲一下编译内核的流程;


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


一、为什么要编译内核;

有时我们为了实现某些功能,比如对iptables的防火墙有些需要内核支持;还有实现一些硬件的支持等,这时我们需要重编内核;


二、内核源码版本的选择;

如果发行版本提供内核源码,最好还是用发行版本提供的;比如Fedora 4.0 提供了很多版本的内核源码;我们安装好后,他自带的配置文件大多能满足我们的需要,对于新手来说,根据自带的内核的配置文件.config ,我们也能学到一点如何配置内核。也没有什么难的,熟能生巧罢了;

如果从 kernel.org 下载最新稳定版本的内核也是可以的;


三、内核源码安装或解压;

对于Fedora Core 4.0 来说,内核源码是放在 /usr/src/kernels 目录中;如果通过在线升级内核,也是放在这个目录中;如果您的系统中的 /usr/src/kernels/ 中没有内容,说明您没有安装内核的源码包 kernel-devel 软件包;

您可以通过软件包管理器来补装 ,请参考 《Fedora / Redhat 软件包管理指南》

如果您用Fedora Core 4.0 ,我建议您在保留老内核的基础上,在线下载最新版本的内核 kerenl-devel 和对应版本的 kernel 或者从 kernel.org 下载,有时可能新的kerenl 已经解决了您所面对的问题,这时就没有必要编译内核了;

如果您是通过在线安装的内核源码包 ,比如通过 apt+synaptic 或者yum 安装的,内核源码会被放到/usr/src/kernel 下的目录中,您要进入相对应的目录进行编译;

在线更新软件包,请参考 《Fedora / Redhat 软件包管理指南》,推荐 apt+synaptic 工具;

如果您是是下载kernel 和kernel-devel 的rpm 包,可以通过来安装;

[root@localhost beinan]# rpm -ivh kernel*.rpm

如果您是从kernel.org 下载的类似 linux-2.6.13.tar.bz2 或者 linux-2.6.13.tar.gz的,您要把下载下来的文件移到 /usr/src 目录中解压; 然后进入解压的目录中进行配置和编译;

[root@localhost beinan]# mv linux-2.6.13.tar.bz2
[root@localhost beinan]# cd /usr/src/
[root@localhost src]# tar jxvf linux-2.6.12.3.tar.bz2

提示:本文以linux-2.6.12.3为例,其实通过发行版的升级版的 kernel-devel 和从kernel.org 下载下来的差不多,大同小异;不同的是通过在线升级的rpm格式的内核源码包,有配置文件.config 可以参考;安装到的目的地是/usr/src/kernel 对FC 4.0来说;如果您要高编译和配置内核,


四、内核的配置;


1、进入目录执行 make mrproper ,对于从 kernel.org 下载而来的tar.bz格式的源码包;

[root@localhost src]# cd linux-2.6.12.3/
[root@localhost linux-2.6.12.3]#
[root@localhost src]# cd linux-2.6.12.3/
[root@localhost linux-2.6.12.3]# make mrproper
[root@localhost linux-2.6.12.3]# make menuconfig

对于Fedora Core 4.0 ,如果您是通过在线安装的 kernel和kernel-devel 新版本的包,比如是2.6.12-1.1398_FC4-i686,你可以直进入 /usr/src/kernel/相应的目录中直接执行 make menuconfig ;利用发行版本提供的 .config 来配置,这样方便点。不要make mrproper ,否则.config 就没有了;这也是为什么要用发行版本提供的内核源码升级包的原因;

其它配置和安装大同小异;模仿总可以吧;


2.简要的配置内核;

进入配置内核的配置模式后,我们可能一无所知,看下面;

内核配置有两种方法,一种是直接置入内核 * ;另一种是编成模块 M ;两种方法各有优点;直接编入内核的,比如设备的启动,不再需要加载模块的这一过程了;而编译成模块,则需要加载设备的内核支持的模块;但直接把所有的东 西都编入内核也不是可行的,内核体积会变大,系统负载也会过重。我们编内核时最好把极为重要的编入内核;其它的如果您不明白的,最好用默认。


1)移动键盘上下左右键,按Enter 进入一个目录。把指针移动到Exit就退出当前目录到上级目录;

2)针对自己机器存在的问题进行修改,比如大内存的支持;

选择自己机器的CPU;

移动键盘到 Processor type and features ---> ,然后按ENTER进入;
找到 Processor family (Pentium-Pro) ---> 按ENTER进入;

进入后我们发现有好多CPU的型号可选;一般的情况下要根据
bash-3.00# cat /proc/cpuinfo 输出的信息来选,比如我们的是Celeron (P4)一代的,应该选如下的,当然默认的 486也是可以正常运行的,既然我们重编一次内核,就得选中对应型号的,也许性能有所提高呢;

Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon)

 

对大内存支持;如果内存是1G或者1G以上,但小于4G的,就要选4G支持;如果超过4G的,要选64G的支持;

High Memory Support (4GB) --->

(X) 4GB
( ) 64GB

还有比如声卡等硬件,需要我们一步一步的查看;如果有不明之处,就要按 [shift]+?的组合键来查看说明。一般的情况下,2.6.x的内核会根据机器的情况自动配出一个文件,只需要我们来查看一下,把重要的地方改改就行了;

再举个例子:比如我现在所用的声卡是intel ac97的,我应该怎么配置呢?

首先要知道自己的声卡的芯片组,我们要通过lspci -v 来查看;

[root@localhost beinan]#lspci -v

 

只查看声卡的,应该用如下的方法:

 

[root@localhost beinan]# lspci -v |grep audio
00:1f.5 Multimedia audio controller: Intel Corp. 82801DB (ICH4) AC'97 Audio Controller (rev 03)

通过上面的输出,我们知道这台机器用的是intel AC97声卡;所以我们要特别注意AC97的配置;

找到 Device Drivers ---> Sound --->
<M> Sound card support 声卡的支持,这个是一定要选中的吧;
<M> Advanced Linux Sound Architecture 对声卡支持的ALSA驱动的支持;
下面有OSS驱动,只是一部份。如果想用OSS的驱动更全的,可以去买;其它的就看如下的选吧;
<M> Sequencer support
<M> Sequencer dummy client
<M> OSS Mixer API
<M> OSS PCM (digital audio) API[*] OSS Sequencer API
<M> RTC Timer support[*] Verbose printk
[ ] Debug

大多是默认的就好,如果您不知道是做什么用的,或者怎么用;

然后我们再向下看有

Generic devices ---> 进入里面
<M> Dummy (/dev/null) soundcard
<M> Virtual MIDI soundcard
<M> MOTU MidiTimePiece AV multiport MIDI
<M> UART16550 serial MIDI driver
<M> Generic MPU-401 UART driver
ISA devices ---> 如果您用ISA声卡就在这里面选;
PCI devices ---> 如果您用PCI声卡,就在这里面选,集成声卡也在这里;
USB devices ---> 这是USB声卡内核支持选项;我有一个这样的声卡,但没有试过;
PCMCIA devices ---> 这是PCMCIA声卡的选项,我还没有看过这样的声卡呢;如果您有,就在这里面动动手吧。

 

因为我用的是Intel 集成的声卡,所以要在PCI中选择,我们在 中可以看到有两个与INTEL有关的;

 

<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller 这个才是Intel AC97声卡的;
< > Intel/SiS/nVidia/AMD MC97 Modem (EXPERIMENTAL) 这个是机器集成的INTEL猫的蜂鸣器的;

 

因为我发现如果把猫的蜂鸣器的驱动也选上,可能造成两个冲突。所以只能选上面的那个;

我们再回到 Open Sound System ---> 中看看,与我用的声卡是不是有关的?

<M> Open Sound System (DEPRECATED)
<M> Intel ICH (i8xx) audio support
<M> OSS sound modules
<M> Loopback MIDI device support
<M> Microsoft Sound System support

 

我们也可以看到Open Sound System中也有好多的声卡驱动,大家根据前面的lspci -v 来选择吧。


3)对于操作系统所采用的文件系统的支持要编入内核,最好不要编成模块;(重要)

比如我的Fedora core 4.0 所采用的文件系统用的是ext3 ,所以我要把它直接编入内核;好处是不受模块丢失或者损坏而不能启动系统;而有时您把系统所采用的文件系统编译成模块,出现VFS错误,也有这方面的事, 可能是您没有把ext3加入到相应的加载模块的配置文件中,所以我们为了减少麻烦,把风险降到最低,还是要直接置入内模的好;

File systems --->
<*> Ext3 journalling file system support
[*] Ext3 extended attributes
[*] Ext3 POSIX Access Control Lists
[*] Ext3 Security Labels

 

如果您还有其它的硬盘分区要读取,比如是reiserfs、ext2、fat、fat32、ntfs等,这样的可以编成模块来支持;

再举一例:如果您的的操作系统用的是reiserfs的文件系统,当然就要把reiserfs的直接编入内核,其它的可以编成模块来支持了;


4)对于硬盘及RAID的支持,要直接编入内核;

比如ATA、SATA、SCSI及RAID的支持直接内核支持;有时编完内核后,启动时不能识别硬盘和RAID,大多事情出在这里;Slackware中 在这方面有的是模块支持,我们可以把它由模块M改成内核*来支持; 如果您不明白,就按默认进行;SATA的硬盘的支持除了选中SATA的支持、IDE设备的支持以外,还要选中SCSI的支持;

5)对于咱们所没有的设备,可以在内核中不选,熟能生巧罢了;

比如我没有ISDN设备 ,所以就把ISDN去掉;

ISDN subsystem --->
< > Linux telephony support

如果您没有1394的设备 ,当然可以把1394的支持也去掉;等等。。。。。。。

如果您有USB的设备,要把USB方面好好看看;比如大家常用的移动硬盘;USB猫等,还有扫描仪等;

内核配置就说这么多吧,太多了,我也说不清楚,水平有限啊;

配置好后先要保存

Save Configuration to an Alternate File

出来一个

Enter a filename to which this configuration ,should be saved as an alternate. Leave blank to abort.
.config

按回车就行了,这样就保存住了;

然后退出 Exit ,这时也会出现保存 ;

如果你想把.config保存起来,可以再复制一份到安全一点的目录,以备后用;

五、编译内核;

[root@localhost linux-2.6.12.3]# make
[root@localhost linux-2.6.12.3]# make modules_install

这样就编译好了,并把模块也安装在了 /lib/modules目录中了,请看:

[root@localhost linux-2.6.12.3]# ls /lib/modules/

2.6.11-1.1369_FC4   2.6.12.3


六、安装内核及配置grub或lilo ;


1、复制bzImage等相关文件,并创建initrd文件;

[root@localhost linux-2.6.12.3]# cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.12.3
[root@localhost linux-2.6.12.3]# cp System.map /boot/System.map-2.6.12.3
[root@localhost linux-2.6.12.3]# cd /boot
[root@localhost linux-2.6.12.3]# /sbin/mkinitrd initrd-2.6.12.3.img   2.6.12.3

我们把 编译出来的bzImage,拷入到/boot目录,拷贝成 vmlinuz-2.6.12.3;
并且用 mkinitrd 来创建imitrd-xxx.img 文件,其中xxx为内核的版本号,是通过 查看 /lib/modules来版本来对应的,我们是编译出来的是 2.6.12.3,所以就运行上面的命令创建,创建的出来的是initrd-2.6.12.3.img ;不创建这个文件,有时是启动不起来的,比如提示VFS错误等;


2、查看系统引导管理器grub或者lilo的配置文件。

如果想要让新内核能让系统引导管理器grub和lilo的菜单上能看得到,必须改 grub.conf或者lilo.conf,但我们必须保留老内核的在grub和lilo的启动菜单,毕竟我们编内核不能百分百的成功,对不对??安全第一吧;

我只说grub的,我没有lilo,也不会用。所以咱们还是GRUB吧,FC 4 系统引导管理器是 GRUB,所以我们谈谈GRUB的设置;

查看 /etc/grub.conf;

比如我的grub.conf的内容是这样的;

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,7)
#          kernel /boot/vmlinuz-version ro root=/dev/hda8
#          initrd /boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=5
#splashimage=(hd0,7)/boot/grub/splash.xpm.gz
#hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
        root (hd0,7)
        kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.11-1.1369_FC4.img
title WinXP
        rootnoverify (hd0,0)
        chainloader +1

我们要把老内核的启动保留下来,以防不测,我们只加入新的内核的启动;所以我加上这样一段;

title Fedora Core (2.6.12.3)
root (hd0,7)
kernel /boot/vmlinuz-2.6.12.3 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.12.3.img

咱们再来看一下改过后的配置文件;

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,7)
#          kernel /boot/vmlinuz-version ro root=/dev/hda8
#          initrd /boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=5
#splashimage=(hd0,7)/boot/grub/splash.xpm.gz
#hiddenmenu

title Fedora Core (2.6.12.3)
        root (hd0,7)
        kernel /boot/vmlinuz-2.6.12.3 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.12.3.img


title Fedora Core (2.6.11-1.1369_FC4)
        root (hd0,7)
        kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.11-1.1369_FC4.img
title WinXP
        rootnoverify (hd0,0)
        chainloader +1

然后重新启动机器,如果出现VFS错误,可能就是我写重要的那个地方出了错误;

注意:如果重新启用内核后,原来安装的显示卡驱动,比如 NVIDIA和ATI的驱动还要重新安装;

Linux 硬件管理的基础知识

作者:北南南北
来自:LinuxSir.Org
摘要:本文主要解说在Linux中,硬件设备的表示方法及查看工具等;最主要的目的是当我们遇到硬件问题时,懂得如何根据硬件信息来解决问题;


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++


一、在Linux 系统中,对硬件判别的标识的依据;

在 LinuxSir.Org 讨论区,我们经常看到有些弟兄这样来描述自己的硬件“我的显示卡是XXX牌子的,Linux 不支持怎么办?”。其实这样描述是最差的,大家也根本没有办法提供帮助;因为Linux对硬件的识别是以为芯片组的厂商为依据的,而非硬件的品牌;因为现 在硬件厂商大多是OEM的,也就是说硬件的主芯片是他们生产不了的,但他们会从硬件主芯片厂商拿来,焊接在自己的电路板上,这就是OEM 的过程;

无论什么硬件都是以芯片组的厂商为标识的,而不是什么市场看到的这个品牌,那个品牌的;举个例子,我们在市场上看到有各种各样的显卡,其实看一下他 们的芯片,大多是ATI和 NVIDIA的,所有的ATI和NVIDIA的驱动都是ATI和NVIDIA开发出来的。所以我们提问的时候,要把硬件的芯片说出来,芯片是驱动的唯一标 识,而不是品牌!!!

所以我们要找硬件的驱动时,我们一定要根据硬件主芯片的信息来找相关的驱动;


二、在Linux中查看硬件信息的工具;

在Linux 中,并不是没有工具可以查看硬件的芯片信息,应该说Linux的工具能把硬件信息查看的更清楚;下面介绍几个常用的工具;我们最常用的工具还是lspci ;其它的工具只是了解一下;


1、lspci 列出所有PCI 设备;

lspci - list all PCI devices ,主要是有来列出机器中的PCI 设备,比如声卡、显卡、猫、网卡等,主板集成设备也能列出来;lspci 是读取 hwdata 数据库,hwdata 由软件包 hwdata 提供;大约有如下文件;

[beinan@localhost ~]# rpm -ql hwdata-0.158-1
/etc/hotplug/blacklist
/etc/pcmcia
/etc/pcmcia/config
/usr/X11R6/lib/X11/Cards
/usr/share/doc/hwdata-0.158
/usr/share/doc/hwdata-0.158/COPYING
/usr/share/doc/hwdata-0.158/LICENSE
/usr/share/hwdata
/usr/share/hwdata/CardMonitorCombos
/usr/share/hwdata/Cards
/usr/share/hwdata/MonitorsDB
/usr/share/hwdata/pci.ids
/usr/share/hwdata/pcitable
/usr/share/hwdata/upgradelist
/usr/share/hwdata/usb.ids

lspci 有两个参数是我们常用的,-b 和-v ,lspci 也会把usb接口列出来;

举例:

[root@localhost beinan]# lspci -b
00:00.0 Host bridge: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:00.1 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:00.3 System peripheral: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller (rev 02)
00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 83)
00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 03)
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03)
00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
02:09.0 CardBus bridge: Texas Instruments Texas Instruments PCIxx21/x515 Cardbus Controller
02:09.2 FireWire (IEEE 1394): Texas Instruments Texas Instruments OHCI Compliant IEEE 1394 Host Controller
02:09.3 Unknown mass storage controller: Texas Instruments Texas Instruments PCIxx21 Integrated FlashMedia Controller
02:09.4 Class 0805: Texas Instruments Texas Instruments PCI6411, PCI6421, PCI6611, PCI6621, PCI7411, PCI7421, PCI7611, PCI7621 Secure Digital (SD)

分析一下这台机器中有什么设备,看主要的就行,与我们应用相关的;

00:02.0 VGA compatible controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02) 
00:02.1 Display controller: Intel Corporation 82852/855GM Integrated Graphics Device (rev 02)    注:这是显示卡;

USB Controller  表示的是USB 接口;我们看到有三个这样的设备;我的笔记本上正好有三个USB 接口;

Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 03) 注:这是声卡;

Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 03)  注:这是猫;

Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)  注:这是网卡,芯片是8139的;

FireWire (IEEE 1394): Texas Instruments Texas Instruments OHCI Compliant IEEE 1394 Host Controller   注:这是1394接口的信息;事实上我的笔记本也有这样的接口;



那得到这些信息有什么用处呢?如果机器中有些设备支持的不好,我们就可以根据这些信息在Google 上搜索,比如我感觉我的声卡有问题,就可以根据声卡信息相关的来搜索找解决问题的办法;根据这些信息,我们也可以到硬件芯片组的官方去找答案或者驱动;

如果想知道硬件更为详细的内容,我们可以用 lspci -v 来查看;

[root@localhost beinan]# lspci -v

比如我们可以通过 lspci -v 来查看硬件的irq中断什么的;比如网卡不好用,是不是irq 存在冲突了?如果您不知道怎么解决硬件驱动不了的情况,就要把 lspci -v 相应硬件的信息整段贴出来,这才是解决问题的唯一办法;所以学会提问也是极为重要的;

有的系统发行版本,还有lsusb 的工具,自己尝试一下吧;


2、存储设备查看和操作工具;

我们查看存储设备的工具主要有 fdisk ;parted ;cfdisk 等;最常用也是最方便的就是fdisk ;parted 就当一个补充吧,这个工具目前看来并不是太成熟;

请参考:

《Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍》
《实例解说 fdisk 使用方法》


3、通过查看/proc 目录的相应文件获取一些硬件信息;

我们在查看 /etc/fstab 时,会注意到这样一行;

/dev/proc               /proc                   proc    defaults        0 0

proc 看起来象是一个文件系统,其实他并不是一个真正的文件系统 , 它是“proc - process information pseudo-filesystem”,译成中文大概的意思是“进程信息伪装文件系统”呵呵,这是我翻译的,有可能不对,请多多指正;
“The proc filesystem is a pseudo-filesystem which is used as an interface to kernel data
structures. It is commonly mounted at /proc. Most of it is read-only, but some files allow
kernel variables to be changed.”

我再来乱译一下然后再根据/proc 的内容自己理解理解。proc 文件系统做为内核kernel 数据结构的接口,把kernel 的一些信息(比如硬件信息,包括CPU 、网卡、显示卡、内存、文件系统、SCSI 设备 ....)写到 proc 文件系统中,proc被mont 到 /proc 目录;/proc 目录中有大数据大多文件是只读的,但一些数据是根据内核的变化而变化的;/proc 目录中的数据是经常变动的,对于系统中的每个进程都有一个PID;都可以在/proc 中找到;我们也可以通过 ps -aux |more 来查看进程;

我们可以通过 cat 命令来读取/proc 目录下的文件,比如cpu的信息;

[root@localhost beinan]# cat /proc/cpuinfo

详细的内容还得需要您来慢慢查看;对于 /proc 的了解也是有必要的;


4、dmesg

dmesg 是一个显示内核缓冲区系统控制信息的工具;比如系统在启动时的信息会写到/var/log/

注:dmesg 工具并不是专门用来查看硬件芯片组标识的工具,但通过这个工具能让我们知道机器中的硬件的一些参数;因为系统在启动的时候,会写一些硬件相关的日志到 /var/log/message* 或 /var/log/boot* 文件中;

如果我们用这个工具来查看一些硬件的信息;这个工具信息量太大,的确需要耐心;

[root@localhost beinan]# dmesg
[root@localhost beinan]# dmesg -c  注:清理掉缓冲区,下次开机的时候还会自动生成;


5、 hwbrowser

hwbrowser 是 您当前硬件配置的图形化浏览器 ,这个工具是图形的。可能系统在默认的情况下没有安装。需要您安装才行。在Fedora 4.0 中,如果能用yum 或apt 应该是通过如下的命令来安装;

[root@localhost beinan]# yum  install hwbrowser


[root@localhost beinan]# apt install hwbrowser

[root@localhost beinan]# hwbrowser

当然您也可以通过rpmfind.net 或者freshrpms.net 上寻找rpm 包来安装

[root@localhost beinan]# rpm -ivh hwbrowser*.rpm

我建议您最好是通过软件包更新工具yum 和apt来安装,这样能自动解决依赖关系;


6、lshal 和 hal-device-manager

通过 lshal 和hal-device-manager 也能知道硬件相关信息,不过这个工具对新手操作起来是有点麻烦,但我还是得介绍一下;

[root@localhost beinan]# lshal

hwbrowser 是 lshal 的图形化界;可能系统在默认的情况下没有安装,这个工具包是Fedora 扩展包,需要您安装才行。在Fedora 4.0 中,如果能用yum 或apt 应该是通过如下的命令来安装;

[root@localhost beinan]# yum  install hal-device-manager


[root@localhost beinan]# apt install hal-device-manager

[root@localhost beinan]# hal-device-manager

当然您也可以通过rpmfind.net 或者freshrpms.net 上寻找rpm 包来安装

[root@localhost beinan]# rpm -ivh hal-device-manager*.rpm

我建议您最好是通过软件包更新工具yum 和apt来安装,这样能自动解决依赖关系;


三、不同的硬件有不同的配置工具和与之相应的配置文件;

不同的硬件有不同的配置工具,也有与之相应的配置文件;比如关于显示器和显示卡的配置文件是/etc/X11/xorg.conf ,对于老的Linux版本应该是/etc/X11/X86Config 或 X86Config-4 ,xorg 或 X86的配置文件还包括鼠标、键盘等在X桌面环境下的配置和控制等;

声卡的配置文件是/etc/modprobe.conf 或 /etc/modules.conf ;

文件系统的配置文件是 /etc/fstab ;

声卡的配置工具,一般情况下是alsaconf

当然不同的发行版也有相应的硬件配置或管理 工具,比如Fedora Core 4.0 有如下的硬件配置或管理工具;

[root@localhost beinan]# system-config-mouse
[root@localhost beinan]# system-config-network-tui
[root@localhost beinan]# gnome-system-monitor
[root@localhost beinan]# system-config-network
[root@localhost beinan]# system-config-printer-gui
[root@localhost beinan]# system-config-soundcard
[root@localhost beinan]# setup

当然这些图形化的工具并不是万能的,他们的功能还是有极大的局限性;所以在硬件配置上,大多还是通过文本模式来操作的;


四、硬件驱动是由内核支持的,但驱动都存放在哪里?

硬件驱动是必须由内核支持的,无论是我们自己安装驱动,还是内核自带的驱动都是如此。硬件驱动如果是以内核模块支持的,驱动目录位于: /lib/modules/内核版本/kernel/目录 或 /lib/modules/内核版本/kernel/drivers 目录中;

[root@localhost beinan]# uname -r
2.6.11-1.1369_FC4
[root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/kernel
arch crypto drivers fs lib net sound

注:只有驱动在内核中以模块的方法支持的,或者我们自己安装的驱动,驱动才位于 /lib/modules/相应的目录;如果是直接置入内核的,不会出现在/lib/modules驱动相关的目录;


五、硬件不被系统支持怎么办?

如果一个Linux 系统不支持您的硬件,解决的办法无非是有两种,一种是下载驱动自己安装,Linux的驱动大多是开源社区开发的,厂商提供的比较少;有时也可能要重编内核,主要看驱动内部的说明文件怎么说了。因为驱动本来是要内核支持的,编译内核也极为正常;

值得注意的是:如果我们要重新编译内核,最好把硬件情况摸清楚了,比如鼠标、光驱、软驱、USB 设备;硬盘、文件系统... ... 都要仔细的查看;

请参考:


后记:

Linux 对硬件的支持目前的情况来看是要比前几年好多了,比如声卡、网卡、显示卡(非3D加速,如果是3D加速的,要下载厂商驱动,如果厂商不提供,那大多是没有 办法了,因为厂商不公开硬件的相关参数,开源社区也没有办法开发,对不对?);对于有些硬件还是需要我们来自己安装驱动或编译内核来解决;

Linux对硬件的驱动的开发,开源社区是相当积极的,但厂商很少提供非Windows的驱动,大多数的Linux的驱动都是开源社区奉献的;有人 可能会说Windows的硬件驱动最容易,但我不是这么认为,我有一声ISA接口的声卡,在windows 98 和winme 中发出怪声,在windows 2000更是没有驱动。但在Linux中却支持的非常好。 呵。。。

Linux 对硬件并不是大家原来所说的,越老越旧的硬件跑起来最好,Linux对新设备的支持,可能厂家刚放出来产品,开源社区就有人研究了。解决办法也会在开源社 区可以找到;但有些硬件厂商不会提供驱动的开发参数、信息之类的,所以开源社区有时对这样的硬件也是无奈,但这样的设备目前看来是比较少;大多硬件都支持 Linux ;

如果您遇到硬件相关的问题,不妨通过我上面所说的来找线索解决,就目前来看也没有太多的问题。只要仔细一点,细点心,学会用Google 搜索,大多问题还是能解决的。


相关文档:

1、《编译内核操作流程 ──为新手指南》
2、《内核管理概述》
3、《用ALSA驱动声卡流程详解》
4、《Fedora Core 4.0 HAL配置即插即用移动存储(USB及1394)的实践》
5、
《存储设备分区操作及文件系统管理概述》
6、《Fedora / Redhat 软件包管理指南》
7、《硬件相关网站收集》

LFS 总结

昨晚终于搞定了自己的LFS系统,当出现login然后输入用户名密码成功进入系统的时刻还是挺有成就感的,

1. 前期准备

    虽然在整个构建系统的过程中,有完整的LFS-BOOK可以参考,而且所有必要的命令也都已经罗列好,不过对Linux的一些常用命令还是需要预先熟悉,比如最基础的mv, cp, tar等,在LFS-BOOK中经常需要用到的还有sed, patch这两个命令,特别是sed这个工具,最好事先了解一下它的用法。

    另外一个问题就是宿主系统的选择,刚开始的时候我用的是自己笔记本安装的ubuntu 8.10,按照LFS-BOOK的指示下载了一堆需要使用到的软件,花费了很多时间,然后一步步前进,分区、格式化、挂载、设置环境等等都做好开始编译安装第一个包Binutils的时候就出现了问题: 安装完之后发现并没有预期中的ld子目录,网上查资料说好像是宿主系统没有安装texinfo,然后就赶紧把texinfo给装好,重新configure, make, make install之后发现还是不行,相当地郁闷.......差点放弃o(∩_∩)o...

    最后,实在是没办法,听说将LFS提供的LiveCD作为宿主系统来构建系统的成功率很高,就一狠心全部重新来过,从官网下载了LFS LiveCD(国内没有找到可以下载的地方,是从美国的网站下载来的,那是相当的需要时间,从中午一直等到晚上十二点才搞定,不过后来证明这还是值得的),另外还安装了VMware,在虚拟机中安装LiveCD来作为宿主系统。

2. 工具链的制作

    可以说LFS的精髓就在这里。

    如何从宿主系统开始,经过pass1, pass2制作出独立于宿主系统的工具链,创造一个可以被chrooted进的临时环境,又如何再从临时环境开始,最终构建出独立于工具链本身的LFS系统。

    关键在于Binutils, GCC, Glibc这三个软件包的安装和调整。

    在LFS-BOOK的第五章刚开始就明确说明了技术要点:   
    (1) The process is similar in principle to cross-compiling, whereby tools installed in the same prefix work in cooperation, and thus utilize a little GNU “magic
          这个过程在原理上与交叉编译类似,通过把工具安装在同一个目录(使用相同的"prefix")中以便协同工作,还利用了一点 GNU 的"魔法"。

    (2) Careful manipulation of the standard linker's library search path ensures programs are linked only against chosen libraries
          小心处理标准连接器的库文件搜索路径,确保程序仅连接到指定的库上。

    (3)Careful manipulation of gcc's specs file tells the compiler which target dynamic linker will be used
         小心处理 gccspecs 文件,告诉编译器要使用哪个动态连接器。

     在整个制作过程中,需要给予特别关注的就是两次工具链的调整,第一次是在5.7节,第二次是在6.10节。
     前者是在pass1编译安装好Binutils, GCC, Glibc的基础上调整标准连接器与GCC的specs文件,目的是将所有的库连接都指定到/tools/bin,从而独立于宿主系统。
     后者是在chroot进入临时环境并且编译安装好Glibc之后,这里需要解释的是Glibc这个包的安装是在工具链的调整之前,因为它本身是自包含的,即使GCC的specs文件与连接器还指定在/tools, Glibc依旧可以顺利地安装。
     "The Glibc build system is self-contained and will install perfectly, even though the compiler specs file and linker are still pointing at /tools."
     后者的工具链调整,目的是将所有的库连接都指定到临时环境的{,/usr}/bin,从而独立于工具链。

3. 引导系统启动

     这里主要需要注意的是内核的编译与Grub的使用,其中内核的编译主要可以参考<手把手教你如何建立自己的Linux系统>。

     我硬盘的分区是这样的:
     /dev/sda1       swap
     /dev/sda2       ext3      mounted on /
     运行grub时输入:
     grub
     root (hd0, 1)      //这里需要注意的是不管是IDE硬盘还是SCSI硬盘,都是用的hd,另外就是root与(hd0,1)之间有空格
     setup (hd0)    // 将grub安装到硬盘的MBR
     quit

     创建/boot/grub/menu.lst文件
     default  0
     timeout  30

     title   LFS 6.3
     root  (hd0,1)
     kernel /boot/lfskernel-2.6.22.5 root=/dev/sda2


    

 

   

   

   

Be counted as an LFS user

(*^__^*) 嘻嘻……

自己的LFS系统终于可以运行了。

有点兴奋,毕竟自己花了很多时间在这个系统上,赶紧去Linux From Scratch网站get counted.