开发环境:
openwrt版本:21.02.3
编译环境:ubuntu20.04 64位
vmware:16
1.下载openwrt代码编译
// 安装依赖
sudo apt-get install subversion g++ flex patch libncurses5-dev zlib1g-dev libssl-dev gawk unzip git
// 下载openwrt
git clone git@github.com:openwrt/openwrt.git
// 更新并安装包
cd openwrt
./scripts/feeds update
./scripts/feeds install -a
// 配置平台为x86
make menuconfig
在Target Images中选择生成vmdk镜像,这个镜像可以直接在vmware中启动
// 开始编译
make -j4
// 如果编译出错,使用下面指令编译看错误原因
make -j1 V=s
第一次编译可能需要几个小时,编译完成后在bin/x86目录下会生成镜像文件。
2.使用vmware启动openwrt
把bin/targets/x86/generic/openwrt-x86-generic-generic-squashfs-combined.vmdk文件复制到PC上,打开vmware新建虚拟机
完成后启动虚拟机,到下面的界面后按回车即可进入系统
3.网络配置
装好的虚拟机不能上网,ifconfig发现eth0没有获取到ip,查看网络配置:
cat /etc/config/network
查看openwrt的网络配置发现eth0是静态,改为dhcp。
uci set network.lan.proto=dhcp
uci commit network
/etc/init.d/network restart
重启后发现eth0获取到ip,并可以上网了。
有个一劳永逸的方法是修改源码package/base-files/files/bin/config_generate,修改lan口为dhcp。
4.安装luci
在menuconfig中选中luci,如果没有的话更新一下包。
然后在浏览器中访问eht0,打开登入页面 ,不输入密码,点login显示下面的页面:
5.设置root密码
在system->administration页面设置root密码:
在网页中设置root密码后,在/etc/shadow文件中可以看到设置的密,将root开头的那一行复制到源码中的 package/base-files/files/etc/shadow中,编译出的固件就默认设置了密码。
6.开启ssh
openwrt默认使用Dropbear,如果要使用openssh,请在Base system中取消Dropbear,然后在Network->SSH中选择openssh。
问题:
1. configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
export FORCE_UNSAFE_CONFIGURE=1
然后再编译