不知道有沒有感覺搭建linux編譯openwrt困難的,此篇選擇租個雲服務器編譯。
以下我編譯之旅
註冊服務器
- 阿里雲登錄,選擇ECS產品
- 選擇地區美國(硅谷)(其實選國內的也是可以的,這邊為了演示方便,買個海外的,順便測測海外編譯速度),服務器類型選擇共享型(這個類型是最便宜的便宜)
- 選擇服務器版本ubuntu 18.04 64位,時長一週即可
- 最後,支付,我這邊選擇下來,一週共18元。
如果想選擇雲服務編譯,且學習linux知識,可以在每年雙十一看看各大雲服務商有沒有優惠。不一定選擇海外服務器,國內服務器的基本上很便宜。一年100以下的很多。
增加非root用戶
openwrt默認不能用root編譯,所以需要增加非root用戶,並且最好設置sudo權限。
- 添加用戶
useradd test #增加名字為test的用戶
passwd test #修改&添加test的密碼
- 設置用戶信息,在/etc/passwd中,設置工作目錄和shell執行器,如下:
- 增加sudo權限,在/etc/sudoers中,參考root的設置,設置自己新增用戶的sudo權限
- 以新增用戶重新登錄,如果發現工作目錄沒有權限。輸入以下命令修改權限
sudo chown -R test:test ./test/ # test為你新增用戶
- 最後,更新系統和安裝編譯所使用到的包。環境設置結束。
sudo apt-get update
sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint
下載openwrt源碼
這邊建議下載分支版本(不要選擇master),例如目前最新的19.07
git clone -b openwrt-19.07 https://github.com/openwrt/openwrt.git # -b制定分支
下載選裝包
除了以上源碼,還有一些比較有用工具在選裝包中,例如luci,可以用以下方式更新和安裝
./scripts/feeds update -a
./scripts/feeds install -a
配置
- 默認配置命令
make defconfig # 默認配置參數
make menuconfig # 菜單配置,自定義選擇功能。配置結束後按兩次ESC退出。
(建議全部配置完成後,再執行多次make menuconfig然後直接退出,確保配置參數保存成功)
- 菜單配置選擇編譯路由器類型,例如我們編譯K3路由器,如下
- 增加luci,luci是web頁面,方便路由配置
- 其他需要增加工具自行研究
編譯
開始編譯之前,分享一個工具,screen,它可以讓shell命令後臺運行。具體參考如下:
screen -S xxx # 創建xxx工作臺
ctrl+a ctrl+d # 退出工作臺,或者直接關掉ssh客戶端也行,screen一直確保命令後臺運行
screen -d -r xxx # 恢復工作臺
由於服務器內存較小,可能導致編譯失敗,可以增加swap分區解決,具體參考如下
# 增加swap方法
dd if=/dev/zero of=/tmp/swap bs=1M count=1024 # 設置bs*count大小swap文件
mkswap /tmp/swap # swap文件格式化
sudo swapon /tmp/swap # 掛載swap分區,主要要用sudo,輸入free看是否掛載成功
# 卸載swap方法
sudo swapoff /tmp/swap
rm /tmp/swap
# 默認掛載,以上掛載下次機器重啟就還需要重新輸入命令掛載,參考以下方法自動掛載
sudo vi /etc/fstab
在文件末尾(最後一行)加上
/tmp/swap swap swap default 0 0
這樣就算重啟系統,swap分區還是有值
# 系統設置swap使用比例
sudo vi /etc/sysctl.conf
swappiness=60 # 這個是百分比
sudo sysctl -p
在screen中編譯openwrt,執行make V=99即可開始編譯。這個是一個漫長過程。可以先洗洗睡了。
最終編譯下來(此次購買硅谷服務器),使用了兩個小時,是不是很快?
固件燒錄
固件生成bin目錄中,燒錄方法,各個路由器不同,可以自行搜索一下。
閱讀更多 苦苦tt 的文章