官方代码仓库
以下操作基于Ubuntu 20.04 LTS(建议硬盘大于20G)
系统配置
修改root
密码
sudo -i
passwd
创建用户组test
及用户tester
groupadd test
useradd -g test -d /home/tester -s /bin/bash -m test
passwd test
编辑/etc/sudoers
文件
vi /etc/sudoers
tester ALL=(ALL:ALL) ALL #在root ALL=(ALL:ALL) ALL下一行添加
:wq!保存并强制退出
使用ssh
连接
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
/etc/init.d/ssh restart#或重启
su tester
sudo whoami
#若显示root,就有root权限
2021年3月1日编译
替换国内镜像源
sudo sed -i 's/http:\/\/cn.archive.ubuntu.com\/ubuntu/https:\/\/mirrors.ustc.edu.cn\/ubuntu/g' /etc/apt/sources.list
更新源
sudo apt update
sudo apt upgrade
安装编译所需软件包
sudo apt install -y build-essential ccache ecj fastjar file g++ gawk \
gettext git java-propose-classpath libelf-dev libncurses5-dev \
libncursesw5-dev libssl-dev python python2.7-dev python3 unzip wget \
python3-distutils python3-setuptools rsync subversion swig time \
xsltproc zlib1g-dev \
screen
sudo timedatectl set-timezone 'Asia/Shanghai' #设置时间零点
#可选,生成iso需要
sudo apt install -y genisoimage
sudo ln -s genisoimage /usr/bin/mkisofs
新建一个虚拟终端
screen -S openwrt_build
#进入虚拟终端
screen -r openwrt_build
#挂起终端
Ctrl+A+D
#列出虚拟终端
screen -ls
#退出(杀死)虚拟终端
exit
克隆openwrt
代码到本机
git clone https://hub.fastgit.org/openwrt/openwrt.git
更新并安装feeds
cd openwrt
sed -i 's/github.com/hub.fastgit.org/g' feeds.conf.default
./scripts/feeds update -a
./scripts/feeds install -a
配置
make menuconfig
下载编译所需的代码
make -j$(nproc) download V=s
开始编译
不要用root
用户编译否则,要设置环境变量
export FORCE_UNSAFE_CONFIGURE=1
第一次推荐单线程编译
time make -j1 V=s
首次编译用时
real 135m51.157s
user 246m10.528s
sys 55m30.574s
编译完成后输出路径:~/openwrt/bin/
第二次及以后推荐多线程编译
git pull
./scripts/feeds update -a && ./scripts/feeds install -a
make defconfig
make -j$(nproc) download V=s
time make -j$(nproc) V=s
第二次及以后编译用时很短
重新配置并编译
rm -rf ./tmp && rm -rf .config
make menuconfig
time make -j$(nproc) V=s
可能出现的问题
1.编译x86 固件报如下错误 bash: /home/adam/lede/staging_dir/host/bin/python: No such file or directory #6224
bash: /home/adam/lede/staging_dir/host/bin/python: No such file or directory
make[3]: *** [Makefile:107: /home/adam/lede/build_dir/target-x86_64_musl/zstd-1.4.5/.configured_68b329da9893e34099c7d8ad5cb9c940] Error 127
make[3]: Leaving directory ‘/home/adam/lede/feeds/packages/utils/zstd’
time: package/feeds/packages/zstd/compile#0.11#0.06#0.17
make[2]: *** [package/Makefile:113: package/feeds/packages/zstd/compile] Error 2
make[2]: Leaving directory ‘/home/adam/lede’
make[1]: *** [package/Makefile:107: /home/adam/lede/staging_dir/target-x86_64_musl/stamp/.package_compile] Error 2
make[1]: Leaving directory ‘/home/adam/lede’
make: *** [/home/adam/lede/include/toplevel.mk:224: world] Error 2
#软链接错误
rm /home/$USER/openwrt/staging_dir/host/bin/python
rm /home/$USER/openwrt/staging_dir/host/bin/python3
ln -s /usr/bin/python3.8 /home/$USER/openwrt/staging_dir/host/bin/python
ln -s /usr/bin/python3.8 /home/$USER/openwrt/staging_dir/host/bin/python3