1. 下载源码
已有编译环境,直接在ubuntu 中 git openwrt 源码
https://dev.openwrt.org/wiki/GetSource
git clone -b chaos_calmer git://github.com/openwrt/openwrt.git
git clone git://github.com/openwrt/openwrt.git
# 下载较慢
附编译环境的搭建
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install subversion
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install gawk
sudo apt-get install asciidoc
sudo apt-get install libz-dev
sudo apt-get install libssl-dev
sudo apt-get upgrade
sudo apt-get install gcc g++ subversion binutils patch bzip2 flex bison
sudo apt-get install gcc make autoconf gettext texinfo unzip
sudo apt-get install sharutils libncurses5-dev ncurses-term
sudo apt-get install zlib1g-dev gawk asciidoc libz-dev libssl-dev
2. 更新源码
进入源码目录
#cp feeds.conf.default feeds.conf
./scripts/feeds clean -a #清除软件包
./scripts/feeds update -a #更新软件包
./scripts/feeds install -a #安装软件包
./scripts/feeds install xx #安装特定包
//make defconfig #生成通用编译设置,检查编译环境
Target System (x86) #目标平台选择
Target Images --->
[*] ext4 #生成.EXT4.IMG文件
[*] Build VMware image files (VMDK) #生成VMDK虚拟机磁盘文件
Base system --->
<*> block-mount
<*> busybox ---> #用于今后`initramfs`支持,可以将所有lib编译到busybox
#[*] Customize busybox options
Busybox Settings --->
General Configuration --->
[*] Support --install [-s] to install applet links at runtime
[*] Don't use /usr
Linux Module Utilities --->
[*] modinfo
[*] Simplified modutils
[*] Accept module options on modprobe command line
[*] Skip loading of already loaded modules
(/lib/modules) Default directory containing modules
Linux System Utilities --->
[*] mdev
[*] Support /etc/mdev.conf
[*] Support subdirs/symlinks
[*] Support regular expressions substitutions when renaming
[*] Support command execution at device addition/removal
[*] Support loading of firmwares
[*] mount
[*] Support specifying devices by label or UUID
[*] blkid
[*] Print filesystem type
[*] findfs
[*] losetup
[*] lspci
[*] lsusb
Filesystem/Volume identification --->
[*] Ext filesystem
[*] fat filesystem
Networking Utilities --->
[*] wget
[*] ftpd
[*] Enable upload commands
[*] Enable workaround for RFC-violating clients
[*] inetd
[*] tcpsvd
[*] telnetd
[*] Support standalone telnetd (not inetd only)
[*] udpsvd
kernel modules --->
Block Devices --->
<*> kmod-ata-core
<*> kmod-ata-ahci
<*> kmod-loop
-*- kmod-scsi-core
<*> kmod-scsi-generic
Filesystems --->
<*> kmod-fs-ext4
<*> kmod-fs-ntfs
<*> kmod-fs-vfat
Input modules --->#键盘
-*- kmod-hid
<*> kmod-hid-generic
-*- kmod-input-core
-*- kmod-input-evdev
Native Language Support --->
<*> kmod-nls-cp437 #vfat需要这个
<*> kmod-nls-iso8859-1
Netfilter Extensions --->
<*> kmod-nf-nathelper-extra
Network Devices ---> #网卡驱动
<*> kmod-macvlan
Network Support --->
-*- kmod-gre
<*> kmod-gre6
-*- kmod-ppp
<*> kmod-mppe
-*- kmod-pppoe
<*> kmod-pppol2tp
-*- kmod-pppox
<*> kmod-pptp
USB Support --->
-*- kmod-usb-core
<*> kmod-usb-hid #usb键盘
<*> kmod-usb-ohci
<*> kmod-usb-storage
<*> kmod-usb2
<*> kmod-usb3
Wireless Drivers --->#wifi卡驱动
Network --->
Captive Portals -->
#<*> wifidog
Instant Messaging --->
<*> umurmur-openssl
VPN --->
#<*> pptpd
#<*> strongswan-mod-eap-mschapv2
Web Servers/Proxies -->
#<*> nginx
#<*> spawn-fcgi
<*> hostapd #wifi ap模式
<*> hostapd-common
<*> hostapd-utils
<*> ppp
<*> ppp-mod-pppoe
<*> ppp-mod-pppol2tp
<*> ppp-mod-pptp
<*> ppp-mod-radius
<*> wpa-supplicant
Utilities --->#自选 fdisk等
Editors --->
<*> nano
<*> vim-full
database -->
#<*> mysql server
disc --->
<*> fdisk
zoneinfo -->
<*> zoneinfo-asia
<*> zoneinfo-core
<*> shadow-utils
Languages -->
#PHP -->
<*> PHP5
<*> php5-cgi
<*> php5-fastcgi
<*> php5-mod-ctype
<*> php5-mod-curl
<*> php5-mod-exif
<*> php5-mod-ftp
<*> php5-mod-gd
<*> php5-mod-iconv
<*> php5-mod-json
<*> php5-mod-mbstring
<*> php5-mod-mcrypt
<*> php5-mod-mysql
<*> php5-mod-pdo
<*> php5-mod-pdo-mysql
<*> php5-mod-session
<*> php5-mod-sockets
<*> php5-mod-sqlite3
<*> php5-mod-tokenizer
<*> php5-mod-xml
<*> php5-mod-zip
LuCI --->
Collections --->
<*> luci
Modules --->
<*> luci-base
Translations --->
<*> Chinese (zh-cn)
Protocols --->
-*- luci-proto-ppp
Processor type and features --->
[*] Symmetric multi-processing support
Processor family (Core 2/newer Xeon) --->
#选择处理器平台
[*] Supported processor vendors --->
[*] Support Intel processors
(2) Maximum number of CPUs
#支持CPU核心数
[*] SMT (Hyperthreading) scheduler support #超线程支持
[*] Multi-core scheduler support #多核心支持
High Memory Support (4GB) --->
#选择支持最大内存
Device Drivers
#根据硬件情况选择
<*>ATA/ATAPI/MFM/RLL support(DEPRECATED)--->
SCSI device support--->
<*>SCSI generic support
<*>Serial ATA and Parallel ATA drivers--->
<*>AHCI SATA support
<*>Intel ESB,ICH,PIIX3,PIIX4 PATA/SATA support (默认选中)
<*>VIA SATA support
<*>VIA PATA support
[*] Multiple devices driver support (RAID and LVM) --->
[*] Network device support ---> #网卡驱动支持,根据硬件情况选择
[*] Ethernet driver support --->
[*] Intel devices
<*> Intel(R) PRO/100+ support
52545em
5. 编译
make -j 100 download #下载包,openwrt是基于源码+patch形式,下载过程比较慢,最好在墙外
make clean
make -j 5 V=99
6.固件
ls bin/x86
# 会看到有以下一些文件,与官方编译的固件名称完全相同,这里大概解释下:
openwrt-x86-generic-combined-ext4.img.gz
# 包含vmlinuz、rootfs(ext4)、引导信息以及相关分区信息的img,一般是两个分区,可以把它看成是硬盘镜像,直接dd到某个磁盘
openwrt-x86-generic-rootfs-ext4.img.gz
# rootfs分区镜像,可以直接dd到某个分区,或者mount -o到某个目录
openwrt-x86-generic-rootfs-squashfs.img
# 同上
openwrt-x86-generic-vmlinuz
# kernel
openwrt-x86-generic-Generic-rootfs.tar.gz
# rootfs用gz打包后的文件
# 可以看出,要让系统启动,需要引导器(x86是使用grub,好比是路由中的uboot,当然uboot管的内容更多)、kernel、rootfs三者。
7. 安装:
步骤①:准备好img文件以及physdiskwrite这个工具。如果你是CF卡或者硬盘,可以在PE下写入,也可以挂载到其他电脑或多硬盘的环境下。
physdiskwrite工具下载:http://blog.ich8.com/file/53
准备好所需文件
步骤②:通过 Windows徽标键 + R 调出 运行 窗口,输入cmd,回车打开命令行窗口。使用x:命令进入相关盘符 cd为进入相关文件夹。x为驱动器盘符。
运行 窗口
步骤③:使用命令:physdiskwrite.exe -u openwrt-ext4.img,回车
使用physdiskwrite来恢复镜像文件
步骤④:回车后会显示以下内容,让你选择对应的要恢复img文件的驱动器。 非常重要!请确认你选择的磁盘,选错将覆盖掉所有分区,导致所有数据丢失。
选择要恢复的驱动器
步骤⑤:选择y,同意将img文件恢复到该驱动器上。回车后就会进行写入操作了。写入完成后你可以将你的磁盘设备放到需要启动的设备上去。
8. 设置
设置密码
passwd root
设置LuCI端口
#/etc/config/uhttpd
0.0.0.0:80
设置静态IP
#vi /etc/config/network
option proto 'static'
option ipaddr '192.168.11.71'
option netmask '255.255.255.0'
option gateway '192.168.11.1'
option dns ‘114.114.114.114 8.8.8.8’
重启网卡
#ifup wan
设置pppoe
config 'interface' 'wan'
option 'ifname' 'eth1'
option 'proto' 'pppoe'
option 'username' '你的ADSL账号'
option 'password' '密码'
设置DHCP
config interface 'wan'
option ifname 'eth1'
option proto 'dhcp'
设置VPN
config 'interface' 'vpn'
option 'ifname' 'pptp-vpn'
option 'proto' 'pptp'
option 'username' 'vpnusername'
option 'password' 'vpnpassword'
option 'server' 'vpn.example.org or ipaddress'
option 'buffering' '1'
option 'pppd_options' 'mppe required'
修改VPN配置文件
vi /etc/ppp/options.pptp
refuse-eap
refuse-pap
refuse-chap
refuse-mschap
9.修改分区大小
用GParted 修改分区大小
10.问题解决
- make: * [world] Error 2
recipe for target 'world' failed
#make clean
#make dirclean
#make tools/clean
#make defconfig
#make menuconfig