在CDlinux下编译安装无线网卡驱动
环境
- 主机:ThinkPad T440P
- 系统:CDlinux 9.7.1
概述
本文旨在利用CDlinux来破解周围的WiFi密码以免费上网。由于笔记本是新买的,系统没有自带驱动,所以需要手动下载、编译和安装无线网卡驱动。假设你已经能正常进入CDlinux。
准备
- 新建一个ext3格式分区,用于编译Linux内核、外部模块和驱动。
- 下载devel-cdl.md(编译模块):ftp://distro.ibiblio.org/pub/linux/distributions/cdlinux/releases/0.9.7.1/extra/devel-cdl.md
- 下载devel-0.9.7.1.tar.xz(源代码包):ftp://distro.ibiblio.org/pub/linux/distributions/cdlinux/releases/0.9.7.1/extra/devel-0.9.7.1.tar.xz
- 下载linux-3.2.11cdl0.patches.tar.xz(配置补丁包):ftp://distro.ibiblio.org/pub/linux/distributions/cdlinux/releases/0.9.7.1/patches/linux-3.2.11cdl0.patches.tar.xz
- 下载iwlwifi-7260-ucode-22.1.7.0.tgz(无线网卡驱动,适用于Linux 3.10+系统)
- 下载backports-3.11-rc3-1.tar.bz2(向后移植)
注意:分区必须是ext3格式,否则在编译Linux内核或外部模块时会提示没有权限。由于无线网卡驱动需要在Linux 3.10以上版本才能正常运行,所以需要下载backports进行向后兼容。
步骤
- 将devel-cdl.md复制到CDlinux/extra文件夹,然后启动CDlinux进入系统。
- 在ext3分区上解压devel-0.9.7.1.tar.xz和linux-3.2.11_cdl0.patches.tar.xz:
tar xvf devel-0.9.7.1.tar.xz
tar xvf linux-3.2.11_cdl0.patches.tar.xz
在这里,我将devel-0.9.7.1.tar.xz解压到/media/sda2/devel目录,将linux-3.2.11_cdl0.patches.tar.xz解压到/media/sda2/patche目录;将/media/sda2/patche/.config.i686文件复制到/media/sda2/devel/usr/src/linux目录。由于.config.i686是隐藏文件,需要使用"ls -a"命令才能查看。
- 编译Linux内核:
cd devel-0.9.7.1/usr/src/linux
make mrproper //清除旧的配置
make menuconfig //配置系统
make dep //建立正确关联
make clean //删除无效文件
make bzImage //编译核心文件,仅为了安装驱动,这一步可以省略以节省时间
在配置系统时,选择倒数第二项载入配置文件".config.i686",然后选择倒数第一项保存配置文件为".config"。 注意:如果只是安装驱动而不需要编译内核,则不需要进行编译内核步骤;在我的情况下,我只安装了无线网卡驱动,所以不需要编译内核。
- 编译/安装Linux外部模块:
make modules //编译外部模块
make modules_install //安装外部模块
注意:无论是编译还是安装驱动,都需要编译外部模块。
- 设置Linux源码路径:
ln -s /media/sda2/devel/usr/src /usr/src
ln -s /media/sda2/devel/usr/src/linux /lib/modules/3.2.11_cdl0/build
由于我们是在其他硬盘上编译Linux内核和外部模块,所以需要设置几个链接目录,以便其他程序能够从系统默认路径下找到Linux源码和编译的符号文件。
- 编译/安装backports:
tar xvf backports-3.11-rc3-1.tar.bz2
cd backports-3.11-rc3-1
make defconfig-iwlwifi
make
sudo make install
- 安装无线网卡驱动:
tar xvf iwlwifi-7260-ucode-22.1.7.0.tgz
cd iwlwifi-7260-ucode-22.1.7.0
sudo cp iwlwifi-7260-7.ucode /lib/firmware/
sudo modprobe iwlwifi
- 检查无线网卡驱动是否正常:
modinfo iwlwifi
如果列表中出现iwlwifi-7260,则说明驱动正常。
结尾
如果在从硬盘或U盘启动CDlinux时遇到"can't find out where cdlinux is installed"错误,请按以下步骤解决: 这个问题主要是由于CDLDEV目录不正确引起的。实际上,当出现"can't find out where cdlinux is installed"时,已经进入了Linux系统。可以使用df命令查看当前启动硬盘或U盘挂载的目录,然后设置CDLDEV指向该目录。在我的情况下,硬盘目录是/dev/sda1,编辑menu.lst文件,设置CDL_DEV目录:
kernel /CDlinux/bzImage quiet CDL_DEV=/dev/sda1
参考文章:
- 给CDlinux增添网卡驱动失败的原因和对策
- Debian 7.6 Wheezy安装Intel Wireless 7260 wifi模块驱动和固件的方法
- Ubuntu下使用Intel N7260 wifi
- Debian 7.6安装Intel Wireless 7260 wifi模块驱动和固件的方法
0.内核以及发行版版本信息
- Debian 7.6 Wheezy
- Linux fyp-tp 3.2.0-4-amd64 #1 SMP Debian 3.2.60-1+deb7u3 x86_64 GNU/Linux
1.获得PCI设备编号
使用命令lspci -nn
可以显示设备号和子系统ID,例如:
04:00.0 Network controller [0280]: Intel Corporation Device [8086:08b2] (rev 6b)
根据设备号(0x808)和子系统ID(0x08b2),可以在下面的网站上找到设备型号。
2.使用iwlwifi驱动
根据Google搜索得知,该WiFi模块使用iwlwifi无线驱动。这个驱动包在Debian的非自由软件源中。可以使用Debian的非自由软件源进行安装:
$ sudo echo '# Debian 7 "Wheezy"' >> /etc/apt/sources.list
$ sudo echo 'deb wheezy main contrib non-free' >> /etc/apt/sources.list
安装驱动后,还需要安装相应的固件。可以在这里找到相应的固件包,解压后使用root用户进行安装:
$ cp iwlwifi-*.ucode /lib/firmware
3.使用backports进行驱动编译
Debian提供的iwlwifi驱动模块适用于Linux Kernel 3.2.60版本,并不支持Intel Wireless 7260这个WiFi模块。iwlwifi驱动要求最低Linux Kernel版本为3.10+。然而,在Debian上升级Linux Kernel并不是一个好的解决方案。好消息是可以使用Linux Kernel Backports项目来编译适用于高版本内核的驱动,并在低版本内核上运行,从而支持WiFi模块。
4.下载backports-3.14-1并进行配置和安装,参考如下命令:
# 可以只配置WiFi模块的驱动
$ make defconfig-wifi
# 可以选择只编译iwlwifi
$ make menuconfig
[*] Wireless LAN ---> Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
$ make
$ sudo make install
5.下载iwlwifi-7260-ucode固件包并安装到/lib/firmware目录。如果没有安装固件,dmesg信息中可能会出现找不到iwlwifi-7260-7.ucode等类似的错误信息。
结尾: 你和Linux极客只差一个LFS(Linux From Scratch)。很多同学已经学习了Linux,可能已经在自己的机器上安装过Linux,甚至能够搭建一个简单的个人博客或编译部署邮件服务器等软件。但是,仍然对Linux有些摸不着头脑,感觉有些难以理解。总是好奇Linux内核的工作原理,想知道里面有些什么。总是好奇Linux是如何启动的,GRUB是如何读取引导信息的。总是好奇设备如何被当作文件操作,为什么可以从/proc读取进程信息。总是好奇如何构建一个操作系统,从零开始制作一个可引导的Linux启动盘。
不要羡慕那些自称为Linux极客的人,其实你和他们之间只差一个LFS。那么LFS到底是什么呢?LFS是Linux From Scratch的缩写,中文意为"从零开始构建的Linux"。它不仅仅是一个发行版,更像一本书。这本书教会你如何从零开始构建一个完整的Linux系统,一步一步地指导你打磨出属于自己的Linux系统。你只需要按照书中的指导,一个字母都不要错,就能够在作者的指导下构建自己的Linux系统。
LFS是一本非常好的书,或者说是一本非常好的教材。它具体而微,不仅仅是讲解简单的概念,而是通过一个实际的例子告诉你如何亲手构建自己的Linux系统。它精炼而具体,系统构建出来不臃肿,文字描述也很精炼。尽管文字描述有时显得枯燥,但作为一本教材,作者尽力让你从中学到东西。无论是编译指令下方各个参数的介绍,还是软件包安装小节下方软件包内容的介绍,作者都试图把知识传递给读者。
当然,LFS也有缺点。由于例子过于生动形象,篇幅较长,完成整个系统构建可能需要一两天,甚至一两周,而且一次完成后也不一定能完全消化所学知识。另外,为了让内容更精炼,作者并没有夹杂太多个人思想和经验,看起来可能显得枯燥。此外,很多人并不喜欢阅读教科书。
然而,这本书给我们的学习带来了一定的阻力,但这正是它的优点。它不仅仅讲解简单概念,而是通过实际操作告诉你如何构建一个完整的Linux系统。所以,你准备好成为一名Linux极客了吗?