查看: 6094|回复: 9
收起左侧

[项目方案] 来吧,省点钱,把PI当做无线路由的方法!(制作以及编译步骤教程)

2013-4-24 00:28:41 | 显示全部楼层 |阅读模式
之前发的512,256M基本是通用的系统,因为兼容原因还是比较大的。
这次写个教程,教你如何编译一个只适合自己的小系统,怎样把pi当做路由来用。
【现在把2个玩意合并发出来】
【以下前面带#号的是命令,不带的不是命令,输入命令的时候不要输那个井号】
【交叉编译环境ubuntu 12.04 + 官方提供的工具(可以用自己装的arm-gcc)】
【最重要的一步,确认你的网卡有ap功能,并且你能找到的你网卡的驱动又AP支持】
【使用rtl8192cu驱动的网卡,基本都没问题,其它的我没有查询和测试】
【如果你使用多核心加速编译,有时候会产生错误,出现错误的时候,可以直接make】
【打开终端,先确认CCPREFIX路径是否正确,否则也会出现错误】
【所有软件均编译为动态,否则会出现各种奇怪的问题,令人毛骨悚然!!!这是编译器和libc等库的问题】

--------------------------------------------------------------------------------------------------------------
建立目录比如我的用户为xin,我的用户根目录为/home/xin/
#cd ~
#mkdir raspi_build
#cd raspi_build
现在目录为/home/xin/raspi_build

下载源码和必要工具到raspi_build目录
3.6.y: https://github.com/raspberrypi/linux (内核源码)
tools: https://github.com/raspberrypi/tools (编译工具和制作工具)
boot loader: https://github.com/raspberrypi/firmware (引导)
--------------------------------------------------------------------------------------------------------------
解压tools,解出来应该是tools-master ( 别管它是什么,把解出来的目录改为tools)
设置环境变量,注意你自己的路径(如果手指头痒痒,你认为你是男人中的男人,你可以不射!)
export CCPREFIX="/home/xin/raspi_build/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-"

解压内核源码(用UI的解压,命令的会出个错)
#cd kernel   (注意,解压后我把目录名改为了kernel,你要cd你自己的目录)
--------------------------------------------------------------------------------------------------------------
#make mrproper (清理一下,不必每次都做,如果你需要完全重新编译时才做这个)
--------------------------------------------------------------------------------------------------------------
arch/arm/configs这个目录中有几个pi的配置.
bcmrpi_cutdown_defconfig     (裁剪.选这个,垃圾选项少,重要选项默认都选着呢)
bcmrpi_defconfig                     (原始,一般我们用的都是原始的,垃圾选项一大堆.至少50%是你死之前用不到的)
bcmrpi_emergency_defconfig (紧急,不需要)
bcmrpi_quick_defconfig          (快速,没用过)
--------------------------------------------------------------------------------------------------------------
拷贝那个配置文件
#cp arch/arm/configs/bcmrpi_cutdown_defconfig    .config
(oldconfig这一步只有你完全重新编译的时候才做,否则它会还原到上一次的老配置)
#sudo ARCH=arm CROSS_COMPILE=${CCPREFIX} make oldconfig

(对内核进行配置,这里我不多说,网上有大把的教程,我没必要再重复,即使你不配置也可以)
(我简单的说几点,如果你嫌麻烦,下面带中括号除了第一个,其它都可以跳过)
--------------------------------------------------------------------------------------------------------------
#sudo ARCH=arm CROSS_COMPILE=${CCPREFIX} make menuconfig

【General setup->Cross-compiler里填刚才的环境变量的值/home/xin/raspi_build/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-】
--------------------------------------------------------------------------------------------------------------
【一个是filesystem里的文件系统选项,除了ext2,ext4,dos,vfat,其余都可以不要】
【Cryptographic API 里你能看到的<*> <M>的,全都干掉,{M},*,{*}的不要动】
【Enable the block layer 里2T最好选上,不然做镜像的时候还得去掉ext4的大文件标记】
【Networking support里,除了Wireless全干掉】
【Networking support->Networking options里要选上<*>Network packet filtering framework】
【Network packet filtering framework里Advanced netfilter configuration选上】
【Core Netfilter Configuration里,你就全选上,不一个个的说了,能M的就选M,IPTABLES要用】
【IP: Netfilter Configuration里,一样,能M就M,不能M就*】
【Device Drivers里】
【Network device support->Wireless LAN里只选你无线网卡的驱动和IEEE 802.11 for Host AP (M就行)】
【Network device support->Ethernet driver support里只选SMC (SMSC)/Western Digital devices,要<*>】
【Input device support里除了Event interface,Keyboards,和Hardware I/O ports里带Serial的要选,其余干掉,如果你不想用串口,Serial的也不要选了】
--------------------------------------------------------------------------------------------------------------
如果你不需要显示器以及多媒体,声音之类的,则按下面的设置。
【Multimedia support 直接干掉,我又不需要FM,我也不需要摄像头,有需要的别干】
【Sound card support 直接干掉,我不需要听到PI那恶心的单声道,我也不需要它发出声音】
【Graphics support里,把Bootup logo干掉,那图标占屏幕!Backlight & LCD device support干掉,有用LCD屏的别干】
【USB support里,留以下几个选项
      <*>   Support for Host-side USB
           USB announce new devices
      <M>   USB Monitor
      <*>   Synopsis DWC host support
      <*>   USB Mass Storage support
         The shared table of common (or usual) storage devices】
【MMC/SD/SDIO card support里选上<*>   SDIO UART/GPS class support】
--------------------------------------------------------------------------------------------------------------
齐活,现在可以保存退出编译了。其它选项和需要,可以查阅网上的资料,实在太多,说不过来。
(加-j 2,我是双核,所以我用2个核心加速编译)
#sudo ARCH=arm CROSS_COMPILE=${CCPREFIX} make -j 2
大约12分钟过后....编译完成了!内核完事。(后面还会用到,制作内核镜像和模块安装)
--------------------------------------------------------------------------------------------------------------
这里补充一下512MB和256MB的rootfs制作方法.之前我发的帖子里有网友需要制作过程
最简单的是的是用qemu-debootstrap去下载rootfs,这个方法论坛里有人说过了。
#wget http://archive.raspbian.org/raspbian.public.key -O - | sudo apt-key add -
下面include里填上你需要的软件.--variant=minbase是最小最基本的应用.
#sudo qemu-debootstrap --arch armhf --variant=minbase --no-check-gpg --include=openssh-server,wpasupplicant,net-tools,isc-dhcp-client --keyring /usr/share/keyrings/raspbian-archive-keyring.gpg wheezy rootfs/ http://archive.raspbian.org/raspbian
等待过程完成后,rootfs就做好了。具体方法可以查阅其它网友的帖子,本贴不详细说明。
--------------------------------------------------------------------------------------------------------------
从kernel源码目录出来
#cd ..

下面我们要编译busybox,我们不要拖着qemu-debootstrap这个胖子做出来的rootfs
下载busybox-1.20.2源码,无论你从哪下载。
解压后把busybox-1.20.2目录名称改为 busybox
#cd busybox (当前目录为/home/xin/raspi_build/busybox)

sudo ARCH=arm TARGET_ARCH=arm CROSS_COMPILE=${CCPREFIX} make menuconfig

Busybox Settings  --->  General Configuration  --->Don't use /usr
                        Build Options  --->
                                [ ] Build BusyBox as a static binary (no shared libs)
                               Build shared libbusybox                                                                              │ │  
                                  Produce a binary for each applet, linked against libbusybox                                        │ │  
                                  Produce additional busybox binary linked against libbusybox                                        │ │  
                               Build with Large File Support (for accessing files > 2 GB)

                                Cross Compiler prefix 里输入环境变量里的交叉编译器
                                /home/xin/raspi_build/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin/arm-bcm2708hardfp-linux-gnueabi-

                                Path to sysroot 里输入工具和lib的目录
                                /home/xin/raspi_build/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/arm-bcm2708hardfp-linux-gnueabi/sysroot

Networking Utilities --> [ ] inetd (不干掉编译会出错,而且你也不需要这个玩意)
                        telnet, tftp, ftp选不选都行,都是鸡肋。后面会编译ssh,scp,sftp这样的工具。

Shells  ---> Choose which shell is aliased to 'bash' name
                这项里要选择 ash

保存,退出,编译, 安装
#sudo ARCH=arm TARGET_ARCH=arm CROSS_COMPILE=${CCPREFIX} make -j 2
下面这条命令会在当前目录下生成一个_install文件夹,编译好的东西都安装在这里了
#sudo ARCH=arm make install
出去
#cd ..
--------------------------------------------------------------------------------------------------------------
编译zlib(openssh会用到)
下载zlib-1.2.7,解压改名zlib。
#cd zlib
#mkdir _install
#./configure --prefix=/home/xin/raspi_build/zlib/_install
修改Makefile里的CC,AR,RUNLIB为下面那样。
#vim Makefile
        CC=${CCPREFIX}gcc
        AR=${CCPREFIX}ar
        RUNLIB=${CCPREFIX}runlib

#make -j 2
#make install
出去
#cd ..
--------------------------------------------------------------------------------------------------------------
编译libnl
下载libnl-3.2.7.tar.gz,解压改名,libnl
#cd libnl
#mkdir _install
#CC=${CCPREFIX}gcc NM=${CCPREFIX}nm AR=${CCPREFIX}ar LD=${CCPREFIX}ld OBJDUMP=${CCPREFIX}objdump RANLIB=${CCPREFIX}ranlib STRIP=${CCPREFIX}strip ./configure --build=i386-linux --host=arm-linux --prefix=/home/xin/raspi_build/libnl/_install
make -j 2
make install
--------------------------------------------------------------------------------------------------------------
编译openssl
下载openssl-1.0.1d.tar.gz,解压改名, openssl
#cd openssl
#mkdir _install
#NM=${CCPREFIX}nm AR=${CCPREFIX}ar LD=${CCPREFIX}ld OBJDUMP=${CCPREFIX}objdump RANLIB=${CCPREFIX}ranlib STRIP=${CCPREFIX}strip ./Configure --prefix=/home/xin/raspi_build/openssl/_install -lcrypto shared no-asm os/compiler{CCPREFIX}gcc
#vim Makefile
    进去确认NM,AR,LD,OBJDUMP,RANLIB,STRIP都是我们的交叉编译器路径
#make -j 2
#make install
出去
#cd ..
--------------------------------------------------------------------------------------------------------------
编译openssh
下载openssh-6.2p1.tar.gz,解压改名,openssh
#cd openssh
./configure --host=arm-linux --prefix=/usr/local/openssh --with-zlib=/home/xin/raspi_build/zlib/_install --with-ssl-dir=/home/xin/raspi_build/openssl/_install --disable-etc-default-login --disable-strip CC=${CCPREFIX}gcc AR=${CCPREFIX}ar RANLIB=${CCPREFIX}ranlib
#vim Makefile
    进去确认NM,AR,LD,OBJDUMP,RANLIB,STRIP都是我们的交叉编译器路径
#make
【千万别make install,将下列命令保存成脚本,直接执行也行】
--------------------------------------------------------------------------------------------------------------
mkdir -pv _install/usr/local/openssh
mkdir -pv _install/usr/local/openssh/{etc,bin}
mkdir -pv _install/{sbin,bin}
mkdir -pv _install/var/run/sshd
mkdir -pv _install/var/empty/sshd
chmod 755 _install/var/empty
mkdir -pv _install/usr/local/openssh/libexec
mkdir -pv _install/etc/ssh

cp scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan _install/usr/local/openssh/bin/
cp sshd_config ssh_config _install/usr/local/openssh/etc/
cp sshd _install/sbin/

cd _install/bin
ln -s ../usr/local/openssh/bin/scp
ln -s ../usr/local/openssh/bin/sftp
ln -s ../usr/local/openssh/bin/ssh
ln -s ../usr/local/openssh/bin/ssh-add
ln -s ../usr/local/openssh/bin/ssh-agent
ln -s ../usr/local/openssh/bin/ssh-keygen
ln -s ../usr/local/openssh/bin/ssh-keyscan
cd ../../


cp sftp-server ssh-keysign _install/usr/local/openssh/libexec/
--------------------------------------------------------------------------------------------------------------
脚本头加上 #!/bin/bash,保存退出。执行。
完事后会出现 _install文件夹。
出去
#cd ..

--------------------------------------------------------------------------------------------------------------
最重要的一步,确认你的网卡有ap功能,并且你这个网卡的驱动支持AP。
#sudo apt-get install iw
#iw list
会出现 support interface mode的字样,这个下面如果有* AP,表示你的网卡支持AP。
然后查询你的网卡驱动是否支持AP,这个你只能到网上去查了。
不过大部分人的网卡都是rtl芯片rtl的驱动,这里就以rtl8192cu为例。(wn725n,nw362都是这个驱动)
如果你不知道你的网卡要用什么驱动
则 #sudo apt-get install ethtool
   #ethtool -i wlan0   (wlan0,后面数字具体是几,用ifconfig -a查询)
   会显示你当前无线网卡所用的驱动叫什么。或者你lsmod一下,也可以发现。

【这里要特别注意,rtl的驱动已经不再使用nl80211这接口了,我废了好久,都没找到文档】
【这个需要到realtek下载对应的linux驱动,下载下来以后,里面有RTL专用hostapd和wpa】
【如果你不用这里面的hostapd, 你无论怎么弄,都不会成功,我吃了大亏好几天。。。】
【我的网卡使用8192cu的驱动,我从官方下载RTL8192xC_USB_linux_v3.4.4_4749.20121105】
--------------------------------------------------------------------------------------------------------------
将RTL官方的驱动包里的hostapd解压出来,改名。
编译hostapd, 改名,hostapd
#cd hostapd
#cp defconfig .config
如果不加libnl32,会提示找不到libnl的错误.
#echo "CONFIG_LIBNL32=y" >> .config


在MakeFile中加入
原CC的下面:
CC=${CCPREFIX}gcc -L/home/xin/raspi_build/openssl/_install/lib -L/home/xin/raspi_build/libnl/_install/lib

原CFLAGS的下面:
CFLAGS += -I/home/xin/raspi_build/openssl/_install/include
CFLAGS += -I/home/xin/raspi_build/libnl/_install/include/libnl3
LIBS += -L/home/xin/raspi_build/openssl/_install/lib
LIBS += -L/home/xin/raspi_build/libnl/_install/lib

#make -j 2
【千万别make install】
出去
#cd ..
--------------------------------------------------------------------------------------------------------------
编译iptables
下载iptables-1.4.18.tar.bz2,解压改名,iptables
#cd iptables
#mkdir _install
#CC=${CCPREFIX}gcc NM=${CCPREFIX}nm AR=${CCPREFIX}ar LD=${CCPREFIX}ld OBJDUMP=${CCPREFIX}objdump RANLIB=${CCPREFIX}ranlib STRIP=${CCPREFIX}strip ./configure --host=arm-linux --disable-ipv6 --prefix=/usr/local/iptables --with-ksource=/home/xin/raspi_build/kernel
#vim Makefile
    进去确认NM,AR,LD,OBJDUMP,RANLIB,STRIP都是我们的交叉编译器路径
make -j 2
【千万不要make install,将下面的命令保存成脚本,或者直接执行】

--------------------------------------------------------------------------------------------------------------
mkdir _install
mkdir _install/{bin,sbin,lib,libexec}
mkdir _install/lib/xtables
mkdir _install/libexec/xtables
cp -d libiptc/.libs/*.so* _install/libexec/xtables/
cp -d libxtables/.libs/libxtables.so* _install/libexec/xtables/

cp -d extensions/.libs/*.so* _install/lib/xtables
cp iptables/.libs/xtables-multi _install/sbin/
cd _install/bin/
ln -s ../sbin/xtables-multi iptables-xml
cd ../sbin/
ln -s xtables-multi iptables
ln -s xtables-multi iptables-restore
ln -s xtables-multi iptables-save
cd ../../

出去
cd ..
--------------------------------------------------------------------------------------------------------------
到此,所有需要的软件就都编译完成了。
开始安装。
给SD卡分区。我不详细说了,你可以直接用UBUNTU自带的磁盘工具进行分区。
第一个分区为vfat  (16MB足以)
第二个分区为ext2 (128MB足以)(可以是ext4,但是ext4有日志机制,如果你想让你的SD卡多活几天,你就别用ext4)

fdisk -l查看下你SD卡的设备文件是什么。
我的是/dev/sdb
分2个区之后会多出2个分区的设备文件。数量是跟你分区有关系
/dev/sdb /dev/sdb1 /dev/sdb2
如果你用UBUNTU的工具,直接点挂载就行了。

如果你用命令,那就mount -o offset=,sizelimit= ...


把下载来的firmware解压,会出现firmware-master文件夹,里面有个boot文件夹,里面的文件全部拷贝到第一分区
修改cmdline.txt启动参数里的ext4,改为ext2

进入tools/mkimage
#./imagetool-uncompressed.py /home/xin/raspi_build/kernel/arch/arm/boot/zImage
当前目录下回出现 kernel.img,把它拷贝到第一分区(确切的说是覆盖).

提出官方镜像的mbr。
dd if=rasbian.img of=mbr bs=446 count=1
写入到SD卡
dd if=mbr of=/dev/sdb bs=446 count=1
--------------------------------------------------------------------------------------------------------------
我挂载的第二分区为 /mnt/sd_part2, 你得进入你挂载的目录
cd /mnt/sd_part2

mkdir var run mnt dev etc bin sbin home root boot lib sys tmp
mkdir var/{log,run}

dev目录下的东西,可以拷贝官方镜像里的.也可以一条条的敲。。。
其实都一样,没必要再敲了,直接拷贝进来。
拷贝你/etc/目录下的 shadow group passwd文件到/mnt/sd_part2/etc/下

建立/mnt/sd_part2/etc/fstab, 内容为
proc    /proc   proc    defaults                        0   0
sysfs   /sys    sysfs   defaults                        0   0

建立/mnt/sd_part2/etc/inittab, 内容为
::sysinit:/etc/init.d/rcS
tty1::respawn:/sbin/getty 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::respawn:/sbin/getty -L ttyAMA0 115200 vt100

建立/mnt/sd_part2/etc/mdev.conf, 内容为
mmcblk0p1 0:0 660 @/bin/mount -t vfat /dev/mmcblk0p1 /boot
mmcblk0p2 0:0 660 @/bin/mount -t ext2 /dev/mmcblk0p2 /

建立/mnt/sd_part2/etc/hostname, 内容为 (主机名,自己随便改)
raspi

建立/mnt/sd_part2/etc/profile, 内容为
if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin"
fi

u=`whoami`

if [ "$PS1" ]; then
  if [ "$BASH" ]; then
    PS1='[$u@\h \W]\$ '
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

export PATH

alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'

umask 022



建立init.d文件夹
建立/mnt/sd_part2/etc/init.d/rcS, 内容为

mkdir /dev/pts
/bin/mknod /dev/pts/0 c 136 0
/bin/mknod /dev/pts/1 c 136 1
/bin/mknod /dev/pts/2 c 136 2
/bin/mknod /dev/pts/3 c 136 3
/bin/mknod /dev/pts/4 c 136 4
/bin/mknod /dev/pts/5 c 136 5
/bin/mount -t devpts devpts /dev/pts

/bin/mount -av
echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/hostname -F /etc/hostname

建立/mnt/sd_part2/etc/hosts, 内容为
127.0.0.1 localhost

建立/mnt/sd_part2/etc/network目录
建立/mnt/sd_part2/etc/network/interfaces, 内容为
auto lo
iface lo inet loopback

建立/mnt/sd_part2/etc/resolv.conf, 内容是DNS服务器地址,填你自己的
nameserver 202.106.195.68
nameserver 202.106.46.151

建立/mnt/sd_part2/etc/udhcpd.conf, 内容为
start 192.168.0.10
end 192.168.0.254
interface wlan0
option subnet 255.255.255.0
opt router 192.168.0.1
option dns 202.106.195.68
option domain local
option lease 864000

建立/mnt/sd_part2/etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 1


到busybox目录的_install目录下。拷贝所有文件到你第二分区(覆盖)
注意cp的时候要加-d,否则链接会被拷贝成目标文件。
cp -d _install/* /mnt/sd_part2/
cp examples/udhcp/simple.script /mnt/sd_part2/usr/share/udhcpc/default.script (没有目录,自己创建)

到内核源码目录(安装目录为你挂载的第二分区)
sudo make ARCH=arm INSTALL_MOD_PATH=/mnt/sd_part2 modules_install

到zlib目录, 拷贝_install/lib/下的库到第二分区/lib下
cp -d _install/lib/libz.so* /mnt/sd_part2/lib/

拷贝libc等库。到交叉编译器目录里(其实里面有些是不需要的,如果嫌多,自己用readelf去读你每个编译过的软件,
反正我全拷贝,万一以后编译个新软件少了个库,还得去找)
cd /home/xin/raspi_build/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/arm-bcm2708hardfp-linux-gnueabi/sysroot/lib
cp -d ./* /mnt/sd_part2/lib/

到libnl目录里 拷贝 _install/lib 下的2个库就够了。
cp -d _install/lib/libnl-3.so* /mnt/sd_part2/lib/
cp -d _install/lib/libnl-genl-3.so* /mnt/sd_part2/lib/

到openssh目录下拷贝_install所有到第二分区(覆盖)
cp -d -r _install/* /mnt/sd_part2/

到hostapd目录,hostapd下的hostapd和hostapd_cli拷贝到第二分区的/sbin/里
cp hostapd hostapd_cli /mnt/sd_part2/sbin/

拷贝官方驱动里的rtl_hostapd_2G.conf这个文件到/mnt/sd_part2/etc/hostapd/下 (没有这个目录自己创建)
具体修改方法,看你怎么配置,查网上配置方法,这里不做详细介绍。
改里面的interface为wlan0
ssid你自己起个名
channel=6 (这个频道数根据你无线网卡而定,一般是6~11,也有6~13)
wpa=2
wpa_passphrase=密码


到iptables目录, _install
cp -d _install/bin/* /mnt/sd_part2/bin/
cp -d _install/sbin/* /mnt/sd_part2/sbin/
cp -d _install/libexec/xtables/* /mnt/sd_part2/lib/
cp -d -r _install /mnt/sd_part2/usr/local/
mv /mnt/sd_part2/usr/local/_install /mnt/sd_part2/usr/local/iptables
--------------------------------------------------------------------------------------------------------------
sync,让缓存的内容全部刷新。
安全移除SD卡。插到PI上运行吧。

第一次需要进入/usr/local/openssh/etc/下进行key的创建
cd /usr/local/openssh/etc/
ssh-keygen -t rsa1 -f ssh_host_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""

如果想启动ssh服务,/sbin/sshd, 可以加入到/etc/init.d/rcS中.


打开无线AP
ifconfig wlan0 192.168.0.1 up
udhcpd -fS &
/sbin/hostapd -d -B -P /var/run/hostapd.pid /etc/hostapd/rtl_hostapd_2G.conf

把eth0打开。自动获取IP。
udhcpc -f -i eth0 -p /var/run/udhcpc.pid -s /usr/share/udhcpc/default.script

开启NAT功能, 让wlan0的数据转发到eth0
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward



最后用IPTABLES的NAT功能转发到有线我还没测试,
理论上可行,我定的网线快到货了,到货了就测试。
前面的我都已经配置好了,测试是成功的。可以创建热点。
测试完,它就是一个无线路由了。

市面上3,5百块钱的路由,CPU是500Mhz, 内存16M~32M, FLASH 4MB~16MB。
它们使用的是openwrt,也是linux+iptables+hostapd+dhcp+busybox

但是PI的性能要远远超过市面上500块钱的路由,你把它弄成路由,何乐而不为呢。
主要是找一款可以穿墙的无线网卡,不带天线的基本免谈。

我的nw362,在一个室内,信号全满。只要一关门,信号全无。
不过我买了一款带5DBI增益天线的网卡,和网线一起到货,希望它能给点面子。。。



补充内容 (2013-4-24 12:05):
我的微薄 http://pgdhh.blog.163.com/
回复

使用道具 举报

2013-4-24 10:48:30 | 显示全部楼层
楼主这么给力
回复 支持 反对

使用道具 举报

2013-4-24 11:10:41 | 显示全部楼层
强贴,强力支持。希望看到无线网卡实测
回复 支持 反对

使用道具 举报

2013-4-24 11:21:12 | 显示全部楼层
建议把 dnsmasq带进去  他带 dns + dhcp
回复 支持 反对

使用道具 举报

2013-4-24 12:22:04 | 显示全部楼层
希望出个简单易懂的如何在raspbian上将无线网卡当路由这样的教程
回复 支持 反对

使用道具 举报

2013-4-24 13:39:53 | 显示全部楼层
好东西,帮顶一下
回复 支持 反对

使用道具 举报

2013-4-24 15:06:18 | 显示全部楼层
其实这个可以用来做编译的教程看。哈哈
回复 支持 反对

使用道具 举报

2013-4-24 16:53:55 | 显示全部楼层
此文技术含量和价值极高,非常感谢作者的贡献。

LFS、交叉编译等,是Linux世界里高境界的本事。据说,Linux本身,就是剪裁Unix的产物。

很想学学这方面的技术,更想在RPi上试试。于是,到一专业LFS论坛请教。十几天过去了,无人回应,估计是因为没人懂RPi。

请问作者老师,本文提及的技术操作,是在RPi上进行,还是在另一台PC上进行的?
回复 支持 反对

使用道具 举报

 楼主| 2013-4-24 17:04:37 | 显示全部楼层
lawme 发表于 2013-4-24 16:53
此文技术含量和价值极高,非常感谢作者的贡献。

LFS、交叉编译等,是Linux世界里高境界的本事。据说,Li ...

交叉编译,在PC上进行。最后上机是在PI上
回复 支持 反对

使用道具 举报

2013-4-26 22:25:10 | 显示全部楼层
真是太给力了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们,了解更多

官方微信

服务时间:10:00-16:00

13714503811

公司地址:深圳市龙岗区南湾街道东门头路8号

Copyright © 2012-2020 Powered by 树莓派论坛 2019.4  粤ICP备15075382号-1
快速回复 返回列表 返回顶部