前言
为什么要编译安装?
最近在使用openwrt系统做自己的网盘nas经常出现问题。主要表现在每次断电重启后系统就损坏了,又要重新刷一遍系统,非常麻烦。于是就想着自己动手编译一个比较好的系统。
Linux的软件安装方式
一般来说Linux软件的安装方式有两种。
一种方式是直接下载大神编译好的二进制文件,称为直接安装,常见的安装方法为使用包管理工具:apt、yum、apk等。
而另一种方式则是直接下载软件的源代码,勇源代码在自己的机器上进行编译,称为编译安装,常见的安装方法为使用编译工具make、cmake等。
下面我将从安装nginx的例子给大家说明直接安装和编译安装的不同。
直接安装的优缺点
这是直接安装nginx的Linux命令:
yum install nginx
# 直接通过apt包管理工具安装nginx
这种方式的好处是省力,快速,方便。直接一个命令交给包管理工具,然后你就可以去喝咖啡了,完全不用管。而缺点很明显,就是兼容性不够好,因为源代码编译的机器所使用的环境、处理器架构等都是与你本机有差异的。所以有可能软件在使用的过程中出现各种各样的问题,比如,死机、崩溃、速度慢等……
编译安装的优缺点
这是编译安装nginx的Linux命令:
mkdir -p /opt/data/source
cd /opt/data/source
wget http://nginx.org/download/nginx-1.17.4.tar.gz
tar zxmf nginx-1.17.4.tar.gz
# 获得源码并且解压
yum -y install gcc pcre-devel zlib-devel openssl-devel libxml2-devel \
libxslt-devel gd-devel GeoIP-devel jemalloc-devel libatomic_ops-devel \
perl-devel perl-ExtUtils-Embed
# 安装需要的依赖工具,一般是一些编译器
./configure \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-stream=dynamic \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module=dynamic \
--with-stream_ssl_preread_module \
--with-compat \
--with-pcre-jit
make && make install
# 进行编译,其中前面的--with可以指定需要的功能模块。
显然这么长串的命令对于新手来说确实不太友好。而且中间出现的各种错误也是成为一系列的绊脚石,成了劝退很多人的大坑。但是既然这么费劲,肯定有他的好处。好处就是,编译安装做出来的软件兼容性非常好!你可以理解为,根据你机器进行量身订做了一个软件!
Openwrt是什么?
这部分的内容建议自己百度,因为这边过于冗长,就不展示了。简单来说Openwrt也是一个嵌入式的Linux系统,主要安装在路由器中,用于管理网络,服务器搭建网盘等服务。
开始编译系统
进行编译前的准备
设备说明
开发板:NanoPi-R2S、存储卡8G以上、读卡器、能上网的电脑
编译前的准备
1.下载系统。
我们到Armbian去下载系统。
进入Armbian网站的NanoPi_R2S主页:https://www.armbian.com/nanopi-r2s/
我们下载jammy,所谓jammy就是Ubuntu的最新版发行代号。
直接戳Direct download
进行下载。然后对下载的镜像进行解压。
2.刷写系统。
在电脑上安装balenaEtcher并且打开,通过读卡器连接储存卡到电脑,然后选择flash from file
,选择我们刚刚解压的镜像,选择我们存储下的盘,点击Flash!
然后等待就行了。
3.启动系统。
把刚刚刷好的系统放进我们的开发板,开发板wan口连接好路由器的lan口,启动。
当WAN口灯亮起时,我们到路由器主页查看NanoPi-R2S的ip地址,确保电脑和开发板连接同一个路由器。
然后使用ssh连接到开发板,默认用户名密码为root
、1234
。
4.配置系统。
登录系统后我们先更改root的密码,这边建议复杂一点。接着设置时区Asia/Shanghai,语言默认
然后我们更新系统
apt-get update
apt-get dist-upgrade
经过漫长的等待。系统更新完成。
接着我们下载依赖包
sudo apt install -y ack antlr3 aria2 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip libpython3-dev qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev
然后我们就能够下载源代码并且进行编译的过程了,这里我们使用lean的源码
git clone https://github.com/coolsnowwolf/lede
cd lede
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
我们接着可以看见图形界面了,在这里可以自己选择需要的插件
接着我们使用Save
保存,然后输入以下的命令
make download -j8
# j后面跟着的是线程数量。
make V=s -j1
然后就是漫长的等待环节。当编译完成之后,我们就可以在bin/targets这个目录底下找到编译完成之后的固件了。那么使用同样的方法进行刷写,然后启动就大功告成了!