概述
OpenWrt 可以被描述为一个嵌入式的 Linux 发行版,(主流路由器固件有 dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的、静态的系统。OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。对于开发人员,OpenWrt 是使用框架来构建应用程序,而无需建立一个完整的固件来支持;对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备。
如果对Linux系统有一定的认识, 并想学习或接触嵌入式 Linux 的话, OpenWRT很适合。 而且OpenWRT支持各种处理器架构,无论是对ARM,X86,PowerPC或者MIPS都有很好的支持。 其多达3000多种软件包,囊括从工具链(toolchain),到内核(linux kernel),到软件包(packages),再到根文件系统(rootfs)整个体系,使得用户只需简单的一个make命令即可方便快速地定制一个具有特定功能的嵌入式系统来制作固件。
一般嵌入式 Linux 的开发过程, 无论是 ARM, PowerPC 或 MIPS 的处理器, 都必需经过以下的开发过程:
1、 创建 Linux 交叉编译环境;
2、建立 Bootloader;
3、移植 Linux 内核;
4、建立 Rootfs (根文件系统);
5、安装驱动程序;
6、安装软件;
熟悉这些嵌入式 Linux 的基本开发流程后,不再局限于 MIPS 处理器和无线路由器, 可以尝试在其它处理器, 或者非无线路由器的系统移植嵌入式 Linux, 定制合适自己的应用软件, 并建立一个完整的嵌入式产品。
编译openwrt
下载openwrt
下面是我个人拉的一个openwrt分支,项目通过repo(Repo工具使用 - whilewell - 博客园)进行管理下载,代码均放在码云上面。整套代码编译完成后占用16G左右的空间。
也可以下载openwrt官方的tags代码, 该代码中不包含组件源码,所以在第一次编译的时候需要从外网下载源码包,编译的时间会特别特别的久。
mkdir openwrt && cd openwrt
repo init -u https://gitee.com/whilewell/manifest.git -b master -m openwrt.xml --no-repo-verify --repo-url=https://gitee.com/whilewell/git-repo.git --repo-branch=master
repo sync -c -j4
下载完成后,代码结构:其中dl
,feeds_dl
,topdir
,.repo
非原生,个人添加
编译openwrt
1. 下载feeds
./scripts/feeds update -a
./scripts/feeds install -a
2. 进行配置
make menuconfig
执行下面编译命令后,会弹出交互窗口来进行配置,选择需要修改的编译选项:Target Systme
:X86Target Images
:vmdkluci
:开启
配置完成后,在代码根目录会生成一个.config
文件,这就是所有代码的配置参数。
4. 然后执行下面命令,下载开源组件【过程可选】:该过程默认包含在make -j4 V=s
过程中,单独执行可以确认下载过程中的问题
- 如果使用官方源码,下载时间会比较久,个人拉的分支可以节省很多时间
- 也可以复制我分支中dl目录下的源码到个人项目中
- 如果
make menuconfig
中选择了其它特性, 可能会存在下载新开源组件的可能
make download -j4 V=s
5. 开始编译:也可以通过make -j4 V=s 2>&1 | tee build_log
来记录编译过程的日志
make -j4 V=s
编译完成后的目录结构:其中bin
,build_dir
,feeds
,staging_dir
,tmp
目录为编译新增
6. 取出编译生成的openwrt镜像文件:openwrt-x86-generic-generic-squashfs-combined.vmdk
wsk@wsk:~/openwrt$ find ./ -name "*vmdk"
./bin/targets/x86/generic/openwrt-x86-generic-generic-squashfs-combined.vmdk
./bin/targets/x86/generic/openwrt-x86-generic-generic-squashfs-combined-efi.vmdk
./build_dir/target-i386_pentium4_musl/linux-x86_generic/tmp/openwrt-x86-generic-generic-squashfs-combined.vmdk
./build_dir/target-i386_pentium4_musl/linux-x86_generic/tmp/openwrt-x86-generic-generic-ext4-combined.vmdk
./build_dir/target-i386_pentium4_musl/linux-x86_generic/tmp/openwrt-x86-generic-generic-squashfs-combined-efi.vmdk
./build_dir/target-i386_pentium4_musl/linux-x86_generic/tmp/openwrt-x86-generic-generic-ext4-combined-efi.vmdk
安装openwrt
1. 创建openwrt虚拟机
2. 加载openwrt虚拟机
配置openwrt
配置地址
vm配置
选择Nat模式后,在openwrt中还可以上网
openwrt配置
uci set network.lan.proto=dhcp
uci commit network
/etc/init.d/network restart (此过程可选)
reboot
查看ip地址
终端中输入ip addr
后,br-lan端口下面显示的192.168.83.130
就是ip地址,后面可以通过该地址进行访问
访问openwrt
webui访问
访问http://192.168.83.130
地址(其中的ip地址是通过上面过程获取),然后可以在里面做一些配置操作。
终端访问
链接192.168.83.130
地址22
端口即可登录(密码是webui首次登录的passwd)