<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[实践OK]centos7 使用lsusb 和lspci 安装 yum install usbutils -y usbutils-0.71-2.i386.rpm －－－可以用lsusb命令查看usb adsl的信息!!!]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 22 Jun 2010 15:35:23 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	yum install usbutils -y<br/>yum install pciutils -y<br/><br/>usbutils-0.71-2.i386.rpm －－－可以用lsusb命令查看usb adsl的信息!!!<br/><br/><br/>安装CentOS5、驱动usb－adsl、安装下载软件、安装多媒体软件、编译内核、适合新手。<br/><br/><br/>在正文开始前我先说两句废话，我喜欢玩电脑但是很菜，所以以下所写的肯定会有很多错误的地方,比如正确的用语等等。希望高手们能多多的指正。以下方法只在CentOS5系统中通过，不保证其它系统也能通过。<br/><br/>第一步：CentOS5系统安装。<br/><br/>－、系统安装<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;介绍基本安装的文章很多，我这里只说一下我的分区情况和GRUB（开机引导程序）安装情况。安装顺序，先安装XP再装CentOS5.<br/>1、分区<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在安装进行到分区这一步时一定要选择自定义分区。建议建立两个主分区。下面是我的分区情况，供参考。<br/>&nbsp;&nbsp; Device Boot&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Blocks&nbsp;&nbsp; Id&nbsp;&nbsp;System<br/>/dev/hdc1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 787&nbsp;&nbsp;&nbsp;&nbsp; 6321546&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;&nbsp;HPFS/NTFS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（第一主分区安装XP，大小看你的习惯）<br/>/dev/hdc2&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 788&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1934&nbsp;&nbsp;&nbsp;&nbsp; 9213277+&nbsp;&nbsp;83&nbsp;&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（第二主分区安装CentOS5，并设为活动分区。大小为8G，最好能在大点）<br/>/dev/hdc3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1935&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9729&nbsp;&nbsp;&nbsp;&nbsp;62613337+&nbsp;&nbsp; f&nbsp;&nbsp;W95 Ext&#039;d (LBA)<br/>/dev/hdc5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1935&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3268&nbsp;&nbsp;&nbsp;&nbsp;10715323+&nbsp;&nbsp; 7&nbsp;&nbsp;HPFS/NTFS<br/>/dev/hdc6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3269&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5563&nbsp;&nbsp;&nbsp;&nbsp;18434556&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;W95 FAT32<br/>/dev/hdc7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5564&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6839&nbsp;&nbsp;&nbsp;&nbsp;10249438+&nbsp;&nbsp; b&nbsp;&nbsp;W95 FAT32<br/>/dev/hdc8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6840&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9602&nbsp;&nbsp;&nbsp;&nbsp;22193766&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;W95 FAT32<br/>/dev/hdc9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9603&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9729&nbsp;&nbsp;&nbsp;&nbsp; 1020096&nbsp;&nbsp; 82&nbsp;&nbsp;Linux swap / Solaris&nbsp;&nbsp;（linux交换分区,大小为你的内存大小或内存大小的两倍。把swap放在最后好像可以提高读写的速度，也不知道有没有道理。）<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在安装结束后重起电脑会进入XP，并不会出现GRUB引导界面，别急，这是因为活动分区还是/dev/hdc1的过。进入XP利用PM之类的工具将活动分区改为/dev/hdc2重启后就出现GRUB引导界面了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样分区的好处是减少一个系统崩溃时对另一个系统的影响。比如XP崩溃需要重新安装时它会覆盖MBR，如果我们把GRUB安装在MBR，这时你就无法进入CentOS5了，你必须用引导盘进入linux的救援模式键入命令从装GRUB。这虽然简单但是对于一个从未接触过linux的新手来说也许是致命的。如果我们把GRUB安装在/dev/hdc2，在重装了XP后只需要改变下活动分区就可以了。再比如linux崩溃了（尽管这不容易，但是对于向我这一类的新手来说还是很有可能的）我们也同样只需利用win98或带有fdisk的DOS引导盘在DOS下把活动分区改为XP就可以进入XP了。（XP引导盘是不是也可以改变活动分区我不知道，如果可以的话还希望高手们教我们这些菜鸟）<br/><br/>2、GRUB引导设置。<br/>我的配置文件:<br/># grub.conf generated by anaconda<br/>#<br/># Note that you do not have to rerun grub after making changes to this file<br/># NOTICE:&nbsp;&nbsp;You do not have a /boot partition.&nbsp;&nbsp;This means that<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all kernel and initrd paths are relative to /, eg.<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root (hd0,1)<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel /boot/vmlinuz-version ro root=/dev/hdc2<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd /boot/initrd-version.img<br/>#boot=/dev/hdc2<br/>default=3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （默认引导系统，第一个为0，这里3代表第四个WinXP系统为默认引导系统）<br/>timeout=8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （默认引导等待时间，单位秒） <br/>splashimage=(hd0,1)/boot/grub/splash.xpm.gz<br/>hiddenmenu<br/>title CentOS (2.6.20.10-02)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root (hd0,1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel /boot/vmlinuz-2.6.20.10-02 ro root=LABEL=/ rhgb quiet<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd /boot/initrd-2.6.20.10-02.img<br/>title CentOS (2.6.18-8.el5)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root (hd0,1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel /boot/vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd /boot/initrd-2.6.18-8.el5.img<br/>title CentOS (2.6.20.10)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root (hd0,1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kernel /boot/vmlinuz-2.6.20.10 ro root=LABEL=/ rhgb quiet<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initrd /boot/initrd-2.6.20.10.img<br/>title WinXP<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rootnoverify (hd0,0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chainloader +1<br/><br/>你可以改变default=后面的数字以选择你要默认引导的系统。改变timeout=后面的数值以改变默认引导时的等待时间，如果为0表示不等待。<br/>如果你在安装过程中遇到其他问题可以多多求助于网络。基本上都能得到解决。<br/><br/>第二步，连接互联网。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这一步非常的重要，现在的linux对互联网的依赖非常强。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我所使用的是usb的adsl。所以这里只介绍usb的adsl的安装方法。<br/>说明：usb adsl芯片是Conexant的。<br/><br/><br/><br/>1、首先安装如下的软件包<br/><br/>usbutils-0.71-2.i386.rpm&nbsp;&nbsp;&nbsp;&nbsp; －－－可以用lsusb命令查看usb adsl的信息<br/><br/>linux-atm-2.5.0-1.20050118cvs.i3886.rpm<br/>linux-atm-libs-2.5.0-0.20050118cvs.i386.rpm&nbsp;&nbsp; －－－编译生成文件br2684ctl必须<br/><br/>linux-atm-libs-devel-2.5.0-0.20050118cvs.i386.rpm&nbsp;&nbsp;－－－编译生成文件br2684ctl必须，安装<br/><br/>后三个包CentOS5光盘中没有，我是用的FC6中。<br/>检查rp－pppoe是否安装：<br/>[root@localhost tmp]# rpm -q rp-pppoe<br/>rp-pppoe-3.5-32.1<br/>如果没有安装CentOS5中就有，安装它。<br/>在没有联网之前我们只能通过在终端下使用rpm来安装、升级、卸载软件包。基本命令如下。<br/>rpm -q filename.rpm&nbsp;&nbsp;&nbsp;&nbsp;查询名为filename的软件包是否安装。<br/>rpm -ivh filename.rpm&nbsp;&nbsp;&nbsp;&nbsp;安装名为filename的软件包。<br/>rpm -e fielname.rpm&nbsp;&nbsp;&nbsp;&nbsp;卸载名为filename的软件包。<br/>rpm -qpl filename.rpm&nbsp;&nbsp; 查询名为filename的软件包都将安装那些文件到系统中。<br/><br/><br/>2、准备要用的文件CnxEtU.sys<br/>[root@localhost tmp]#cp /mnt/hdc1/WINDOWS/system32/drivers/CnxEtU.sys /tmp<br/>如果你使用默认内核不支持ntfs分区，你可以在XP下把CnxEtU.sys先放到一个fat32分区。然后在linux下挂载这个fat32分区。<br/>[root@localhost tmp]#mkdir /mnt/hdc7&nbsp;&nbsp; 新建一个文件夹，以便将一个WIN分区挂载到linux下。<br/>[root@localhost tmp]#mount -t vfat /dev/hdc7 /mnt/hdc7&nbsp;&nbsp; 将/dev/hdc7分区以文件夹方式挂载到/mnt/hdc7。<br/><br/><br/>3、用lsusb命令查看usb adsl连接情况<br/><br/>[root@localhost tmp]# lsusb<br/><br/>Bus 005 Device 001: ID 0000:0000<br/><br/>Bus 004 Device 001: ID 0000:0000<br/><br/>Bus 003 Device 001: ID 0000:0000<br/><br/>Bus 002 Device 002: ID 0572:cb00 Conexant Systems (Rockwell), Inc. E-Tech ADSL Modem v2<br/><br/>Bus 002 Device 001: ID 0000:0000<br/><br/>Bus 001 Device 001: ID 0000:0000<br/><br/><br/><br/><br/>4、生成cxacru-fw.bin文件<br/><br/>需要CnxEtU.sys文件,此文件从windows版驱动而来,在windows下查找此文件。<br/>利用编辑器，比如gedit新建cxacru-fw.c文件，将下面内容粘贴到文件中去。<br/>/*****************************************************************************<br/><br/>*&nbsp;&nbsp;cxacru-fw -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;utility to extract firmware for the USB ADSL modems based on<br/><br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Conexant AccessRunner chipset, from the Conexant driver for<br/><br/>*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Windows(R)<br/><br/>*<br/><br/>*&nbsp;&nbsp;Copyright (C) 2005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Roman Kagan (rkagan % mail ! ru)<br/><br/>*<br/><br/>*&nbsp;&nbsp;This program is free software; you can redistribute it and/or modify<br/><br/>*&nbsp;&nbsp;it under the terms of the GNU General Public License as published by<br/><br/>*&nbsp;&nbsp;the Free Software Foundation; either version 2 of the License, or<br/><br/>*&nbsp;&nbsp;(at your option) any later version.<br/><br/>*<br/><br/>*&nbsp;&nbsp;This program is distributed in the hope that it will be useful,<br/><br/>*&nbsp;&nbsp;but WITHOUT ANY WARRANTY; without even the implied warranty of<br/><br/>*&nbsp;&nbsp;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp;&nbsp;See the<br/><br/>*&nbsp;&nbsp;GNU General Public License for more details.<br/><br/>*<br/><br/>*&nbsp;&nbsp;You should have received a copy of the GNU General Public License<br/><br/>*&nbsp;&nbsp;along with this program; if not, write to the Free Software<br/><br/>*&nbsp;&nbsp;Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA&nbsp;&nbsp;02111-1307&nbsp;&nbsp;USA<br/><br/>*<br/><br/>****************************************************************************/<br/><br/><br/><br/>#include &lt;stdio.h&gt;<br/><br/>#include &lt;fcntl.h&gt;<br/><br/>#include &lt;unistd.h&gt;<br/><br/>#include &lt;error.h&gt;<br/><br/>#include &lt;argp.h&gt;<br/><br/>#include &lt;stdint.h&gt;<br/><br/>#include &lt;sys/stat.h&gt;<br/><br/>#include &lt;sys/mman.h&gt;<br/><br/>#include &lt;endian.h&gt;<br/><br/>#include &lt;byteswap.h&gt;<br/><br/><br/><br/>#if __BYTE_ORDER == __BIG_ENDIAN<br/><br/>static inline uint16_t le16_to_cpup(uint16_t *x) &#123;return bswap_16(*x);&#125;<br/><br/>static inline uint32_t le32_to_cpup(uint32_t *x) &#123;return bswap_32(*x);&#125;<br/><br/>#else<br/><br/>static inline uint16_t le16_to_cpup(uint16_t *x) &#123;return *x;&#125;<br/><br/>static inline uint32_t le32_to_cpup(uint32_t *x) &#123;return *x;&#125;<br/><br/>#endif<br/><br/><br/><br/>uint8_t *findfw(uint8_t *buf, int len, int *fwlen)<br/><br/>&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const static uint8_t fwstart[] = &#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ARM LE asm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x1c, 0x24, 0x9f, 0xe5,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e59f241c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2, [pc, #0x41c]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00, 0x10, 0xa0, 0xe3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e3a01000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1, #0x0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00, 0x10, 0x82, 0xe5,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e5821000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1, [r2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x22, 0x00, 0x00, 0xeb,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eb000022&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x9c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const static uint8_t bpstart[] = &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x78, 0x20, 0x9f, 0xe5,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e59f2078&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2, [pc, #0x78]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x01, 0x10, 0xa0, 0xe3,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e3a01001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1, #0x1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x00, 0x10, 0x82, 0xe5,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e5821000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1, [r2]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x70, 0x20, 0x9f, 0xe5,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e59f2070&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2, [pc, #0x70]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t *fw, *bp, *nt_header, *sect_header;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t tmp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint16_t nsect;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32_t dataoff, datalen;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*fwlen = 0;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* IMAGE_DOS_HEADER size and .Signature */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (len &lt; 0x40 &#124;&#124; memcmp(buf, &quot;MZ&quot;, 2)) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(0, 0, &quot;file is not a DOS executable&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* IMAGE_NT_HEADERS size and .Signature */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp = le32_to_cpup((uint32_t *) (buf + 0x3c));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nt_header = buf + tmp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (len &lt; tmp + 0x18 &#124;&#124; memcmp(nt_header, &quot;E&#92;0&#92;0&quot;, 4)) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(0, 0, &quot;file is not a portable executable (PE)&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* IMAGE_NT_HEADERS.FileHeader.NumberOfSections */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nsect = le16_to_cpup((uint16_t *) (nt_header + 0x04 + 0x2));<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* IMAGE_NT_HEADERS.FileHeader.SizeOfOptionalHeader */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp = le16_to_cpup((uint16_t *) (nt_header + 0x04 + 0x10));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sect_header = nt_header + 0x18 + tmp;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (; nsect; nsect--, sect_header += 0x28) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (sect_header + 0x28 &gt; buf + len) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(0, 0, &quot;file header corrupted&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!memcmp(sect_header, &quot;.data&quot;, 5))<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!nsect) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(0, 0, &quot;`.data&#039; section not found&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* IMAGE_SECTION_HEADER.SizeOfRawData */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datalen = le32_to_cpup((uint32_t *) (sect_header + 0x10));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* IMAGE_SECTION_HEADER.PointerToRawData */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dataoff = le32_to_cpup((uint32_t *) (sect_header + 0x14));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (dataoff + datalen &gt; len) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(0, 0, &quot;`.data&#039; section extends beyond end of file&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* find the starting sequence of the firmware image */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fw = (uint8_t *) memmem(buf + dataoff, datalen, fwstart, sizeof(fwstart));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!fw) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(0, 0, &quot;firmware start sequence not found&quot;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return NULL;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*fwlen = datalen - (fw - (buf + dataoff));<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* find the starting sequence of the boot ROM patch, if present */<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bp = (uint8_t *) memmem(fw, *fwlen, bpstart, sizeof(bpstart));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (bp)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*fwlen = bp - fw;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return fw;<br/><br/>&#125;<br/><br/><br/><br/>const char * argp_program_version = &quot;002&quot;;<br/><br/>const char * argp_program_bug_address =<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&lt;accessrunner-general at lists dot sourceforge dot net&gt;&quot;;<br/><br/>const static char args_doc[] = &quot;INFILE OUTFILE&quot;;<br/><br/>const static char doc[] =<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Firmware extractor for Conexant AccessRunner ADSL USB modems&#92;n&quot;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;INFILE - Windows driver file containing firmware (usually CnxEtU.sys)&#92;n&quot;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;OUTFILE - firmware image (usually cxacru-fw.bin)&quot;;<br/><br/><br/><br/>struct args &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *infile;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char *outfile;<br/><br/>&#125;;<br/><br/><br/><br/>static error_t parse_opts(int key, char *arg, struct argp_state *state)<br/><br/>&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct args *args = state-&gt;input;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch (key) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case ARGP_KEY_ARG:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch (state-&gt;arg_num) &#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 0:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args-&gt;infile = arg;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case 1:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args-&gt;outfile = arg;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argp_usage (state);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case ARGP_KEY_END:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (state-&gt;arg_num &lt; 2)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argp_usage (state);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ARGP_ERR_UNKNOWN;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 0;<br/><br/>&#125;<br/><br/><br/><br/>static struct argp argp = &#123;0, parse_opts, args_doc, doc&#125;;<br/><br/><br/><br/>int main(int argc, char **argv)<br/><br/>&#123;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int ret, fd;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct args args;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;struct stat instat;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8_t *buf, *fw;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int len, fwlen;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;argp_parse(&amp;argp, argc, argv, 0, NULL, &amp;args);<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fd = open(args.infile, O_RDONLY);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (fd &lt; 0)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(1, errno, &quot;failed to open `%s&#039; for reading&quot;, args.infile);<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret = fstat(fd, &amp;instat);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ret)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(1, errno, &quot;failed to obtain the size of `%s&#039;&quot;, args.infile);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len = instat.st_size;<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(fd);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!buf)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(1, errno, &quot;failed to mmap `%s&#039;&quot;, args.infile);<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fw = findfw(buf, len, &amp;fwlen);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!fw)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(1, 0, &quot;can&#039;t find AccessRunner firmware in `%s&#039;&quot;, args.infile);<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fd = open(args.outfile, O_WRONLY &#124; O_CREAT &#124; O_EXCL,<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S_IRUSR &#124; S_IWUSR &#124; S_IRGRP &#124; S_IWGRP &#124; S_IROTH &#124; S_IWOTH);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (fd &lt; 0)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(1, errno, &quot;failed to open `%s&#039; for writing&quot;, args.outfile);<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (write(fd, fw, fwlen) != fwlen)<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error(1, errno, &quot;failed to write firmware to `%s&#039;&quot;, args.outfile);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close(fd);<br/><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;munmap(buf, len);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;found firmware in `%s&#039; at offset %#x&#92;n&quot;, args.infile, fw - buf);<br/><br/>&#125;<br/><br/>新建makefile将下面内容粘贴到文件中。<br/><br/>cxacru-fw:<br/><br/><br/>编译cxacru-fw.c文件生成cxacru-fw可执行文件。<br/><br/>[root@localhost tmp]# make<br/><br/><br/>从CnxEtU.sys提取固件信息生成firmeare文件。<br/><br/>[root@localhost tmp]# ./cxacru-fw cnxetu.sys cxacru-fw.bin<br/><br/><br/>拷贝到/lib/firmware文件夹。<br/><br/>[root@localhost tmp]# cp cxacru-fw.bin /lib/firmware<br/><br/>热插拔一下adsl。<br/><br/><br/><br/>5、运行br2684ctl驱动adsl建立虚拟网卡界面nas0。<br/><br/>[root@localhost tmp]# br2684ctl -b -c 0 -a 0.35 (vpi 0,vci 35 你的vpi和vci的具体数值可以去看XP下的adsl信息或向当地ISP查询。)<br/><br/>RFC1483/2684 bridge: Interface &quot;nas0&quot; created sucessfully<br/><br/>RFC1483/2684 bridge: Communicating over ATM 0.0.33, encapsulation: LLC<br/><br/>RFC1483/2684 bridge: Interface configured<br/><br/>6、激活nas0<br/>［root@localhost tmp]# ifconfig nas0 up<br/>［root@localhost tmp]# ifconfig<br/>lo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link encapocal Loopback&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet addr:127.0.0.1&nbsp;&nbsp;Mask:255.0.0.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet6 addr: ::1/128 Scope:Host<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP LOOPBACK RUNNING&nbsp;&nbsp;MTU:16436&nbsp;&nbsp;Metric:1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX packets:1426 errors:0 dropped:0 overruns:0 frame:0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX packets:1426 errors:0 dropped:0 overruns:0 carrier:0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0 txqueuelen:0 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX bytes:2271757 (2.1 MiB)&nbsp;&nbsp;TX bytes:2271757 (2.1 MiB)<br/><br/>nas0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link encap:Ethernet&nbsp;&nbsp;HWaddr 00:08:5C:08:CB:6F&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet6 addr: fe80::208:5cff:fe08:cb6f/64 Scopeink<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP BROADCAST RUNNING MULTICAST&nbsp;&nbsp;MTU:1500&nbsp;&nbsp;Metric:1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX packets:13114 errors:0 dropped:0 overruns:0 frame:0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX packets:12551 errors:0 dropped:0 overruns:0 carrier:0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0 txqueuelen:1000 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX bytes:10585126 (10.0 MiB)&nbsp;&nbsp;TX bytes:1614057 (1.5 MiB)<br/>如果有nas0出现，那说明操作成功。<br/><br/><br/><br/>7、pppoe的设置<br/><br/>[root@linux root]# adsl-setup<br/><br/>Welcome to the Roaring Penguin PPPoE client setup.&nbsp;&nbsp;First, I will run<br/><br/>some checks on your system to make sure the PPPoE client is installed<br/><br/>properly...<br/><br/>Looks good!&nbsp;&nbsp;Now, please enter some information:<br/><br/>USER NAME<br/><br/>&gt;&gt;&gt; Enter your PPPoE user name (default bxxxnxnx@sympatico.ca):（输入你的adsl帐号）<br/><br/>INTERFACE<br/><br/>&gt;&gt;&gt; Enter the Ethernet interface connected to the DSL modem<br/><br/>For Solaris, this is likely to be something like /dev/hme0.<br/><br/>For Linux, it will be ethn, where &#039;n&#039; is a number.<br/><br/>(default eth0): nas0（就是nas0,不要用别的）<br/><br/>Do you want the link to come up on demand, or stay up continuously?<br/><br/>If you want it to come up on demand, enter the idle time in seconds<br/><br/>after which the link should be dropped.&nbsp;&nbsp;If you want the link to<br/><br/>stay up permanently, enter &#039;no&#039; (two letters, lower-case.)<br/><br/>NOTE: Demand-activated links do not interact well with dynamic IP<br/><br/>addresses.&nbsp;&nbsp;You may have some problems with demand-activated links.<br/><br/>&gt;&gt;&gt; Enter the demand value (default no):（默认就可以）<br/><br/>DNS<br/><br/>Please enter the IP address of your ISP&#039;s primary DNS server.<br/><br/>If your ISP claims that &#039;the server will provide DNS addresses&#039;,<br/><br/>enter &#039;server&#039; (all lower-case) here.<br/><br/>If you just press enter, I will assume you know what you are<br/><br/>doing and not modify your DNS setup.<br/><br/>&gt;&gt;&gt; Enter the DNS information here: （你的域名服务器的主IP地址，根据自己的情况设置）<br/><br/>Please enter the IP address of your ISP&#039;s secondary DNS server.<br/><br/>If you just press enter, I will assume there is only one DNS server.<br/><br/>&gt;&gt;&gt; Enter the secondary DNS server address here: （你的域名服务器的副IP地址，根据自己的情况设置）<br/><br/>PASSWORD<br/><br/>&gt;&gt;&gt; Please enter your PPPoE password:（帐号密码）<br/><br/>&gt;&gt;&gt; Please re-enter your PPPoE password:（确认帐号密码）<br/><br/>FIREWALLING<br/><br/>Please choose the firewall rules to use.&nbsp;&nbsp;Note that these rules are<br/><br/>very basic.&nbsp;&nbsp;You are strongly encouraged to use a more sophisticated<br/><br/>firewall setup; however, these will provide basic security.&nbsp;&nbsp;If you<br/><br/>are running any servers on your machine, you must choose &#039;NONE&#039; and<br/><br/>set up firewalling yourself.&nbsp;&nbsp;Otherwise, the firewall rules will deny<br/><br/>access to all standard servers like Web, e-mail, ftp, etc.&nbsp;&nbsp;If you<br/><br/>are using SSH, the rules will block outgoing SSH connections which<br/><br/>allocate a privileged source port.<br/><br/>The firewall choices are:<br/><br/>0 - NONE: This script will not set any firewall rules.&nbsp;&nbsp;You are responsible<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ensuring the security of your machine.&nbsp;&nbsp;You are STRONGLY<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recommended to use some kind of firewall rules.<br/><br/>1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation<br/><br/>2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for a LAN<br/><br/>&gt;&gt;&gt; Choose a type of firewall (0-2): 1（防火墙设置，自己家用，选1吧）<br/><br/>** Summary of what you entered **<br/><br/>Ethernet Interface: nas0<br/><br/>User name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（自己的adsl用户）<br/><br/>Activate-on-demand: No<br/><br/>Primary DNS:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（自己的设置）<br/><br/>Secondary DNS:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（自己的设置）<br/><br/>Firewalling:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STANDALONE<br/><br/>&gt;&gt;&gt; Accept these settings and adjust configuration files (y/n)? y（不保存怎么能行，当然是“y”）<br/><br/>Adjusting /etc/ppp/pppoe.conf<br/><br/>Adjusting /etc/resolv.conf<br/><br/>&nbsp;&nbsp;(But first backing it up to /etc/resolv.conf-bak)<br/><br/>Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets<br/><br/>&nbsp;&nbsp;(But first backing it up to /etc/ppp/pap-secrets-bak)<br/><br/>&nbsp;&nbsp;(But first backing it up to /etc/ppp/chap-secrets-bak)<br/><br/><br/><br/>Congratulations, it should be all set up!<br/><br/>Type &#039;pppoe-start&#039; to bring up your PPPoE link and &#039;pppoe-stop&#039; to bring<br/><br/>it down.&nbsp;&nbsp;Type &#039;pppoe-status&#039; to see the link status.<br/><br/><br/><br/>8、建立连接。<br/>[root@localhost tmp]# adsl-start<br/><br/>[root@localhost tmp]# ifconfig<br/><br/>lo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link encapocal Loopback<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet addr:127.0.0.1&nbsp;&nbsp;Mask:255.0.0.0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet6 addr: ::1/128 Scope:Host<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP LOOPBACK RUNNING&nbsp;&nbsp;MTU:16436&nbsp;&nbsp;Metric:1<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX packets:2281 errors:0 dropped:0 overruns:0 frame:0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX packets:2281 errors:0 dropped:0 overruns:0 carrier:0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0 txqueuelen:0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX bytes:2415979 (2.3 MiB)&nbsp;&nbsp;TX bytes:2415979 (2.3 MiB)<br/><br/>nas0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link encap:Ethernet&nbsp;&nbsp;HWaddr 00:08:5C:61:75:1A<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet6 addr: fe80::208:5cff:fe61:751a/64 Scopeink<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP BROADCAST RUNNING MULTICAST&nbsp;&nbsp;MTU:1500&nbsp;&nbsp;Metric:1<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX packets:576 errors:0 dropped:0 overruns:0 frame:0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX packets:594 errors:0 dropped:0 overruns:0 carrier:0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0 txqueuelen:1000<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX bytes:350866 (342.6 KiB)&nbsp;&nbsp;TX bytes:78820 (76.9 KiB)<br/><br/>ppp0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link encapoint-to-Point Protocol<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet addr:124.129.83.213&nbsp;&nbsp;P-t-P:221.0.255.157&nbsp;&nbsp;Mask:255.255.255.255<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP POINTOPOINT RUNNING NOARP MULTICAST&nbsp;&nbsp;MTU:1492&nbsp;&nbsp;Metric:1<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX packets:430 errors:0 dropped:0 overruns:0 frame:0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX packets:442 errors:0 dropped:0 overruns:0 carrier:0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0 txqueuelen:3<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX bytes:344960 (336.8 KiB)&nbsp;&nbsp;TX bytes:58169 (56.8 KiB)<br/><br/>如果有ppp0出现，那说明你成功了。<br/><br/>现在你可以去上网冲浪了。<br/><br/>第三步、BT下载工具、amule（电驴）、的安装和使用<br/><br/>1、transmission（BT）<br/>从网上下个transmission-0.72.tar.gz回来然后解压缩。<br/>[root@localhost tmp]#tar -zxvf transmission-0.72.tar.gz<br/><br/>进入解压缩目录<br/>[root@localhost tmp]# cd transmission<br/>[root@localhost transmission]# <br/><br/>接下来执行./configure，这个好像是检查当前系统是否适合安装所要安装的软件，以及所依赖的其它软件是否安装。好像是这个目的，望高手指正。<br/>[root@localhost transmission]# ./configure --prefix=/usr/local/transmission<br/>加入--prefix=/usr/local/transmission是指定安装路经，以便于我们日后删除方便。<br/>注意执行./configure后终端显示的信息，如果报错停止那么要记下出错的信息开始是为什么出错，多数是应为依赖关系得不到满足。如果你解决不了可以把错误信息帖到网上来大家帮你解决。<br/><br/>接下来执行make进行编译。<br/>[root@localhost transmission]# make<br/><br/>如果make也正确结束的话下来就是安装了make install<br/>[root@localhost transmission]# make install<br/><br/>安装完成，进入安装目录<br/>[root@localhost transmission]# cd /usr/local/transmission/bin<br/>[root@localhost bin]#<br/><br/>执行transmission-gtk<br/>[root@localhost bin]# ./transmission-gtk<br/>加入./的意思是执行当前目录中的程序，不然系统会到/bin、/sbin、/usr/bin、/usr/sbin去寻找transmission-gtk,当然就找不到了。你可以在桌面建立快捷方式方便使用。transmission虽然功能简单但是在我这里速度还可以。你还可以尝试Azureus，在我这里Azureus的速度实在没法接受。另外还有BitTorrent，这个我还没试过。<br/>启动transmission后打开首选项在listening port 中填入6881，这是你使用的端口，当然你还可以使用其它端口。然后打开终端使用下面的命令打开6881端口。<br/>[root@localhost ~]# iptables -I INPUT -p tcp --dport 6881 -j ACCEPT<br/>[root@localhost ~]# iptables -I INPUT -p udp --dport 6881 -j ACCEPT<br/>你也可以把这两条命令加入到/etc/ppp/firewall-standalone文件中。在执行adsl-start自动执行这两条命令。　
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]centos7 使用lsusb 和lspci 安装 yum install usbutils -y usbutils-0.71-2.i386.rpm －－－可以用lsusb命令查看usb adsl的信息!!!]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>