自定义内核的设置
# 修改官方AX86U预设的内核配置,其他设备自测
vi ~/asuswrt/release/src-rt-5.02p1axhnd.675x/kernel/linux-4.1/config_base.6a.62118
# 例如将USB转串口驱动option模块编进内核,将以下默认的值设置为y
CONFIG_USB=m
CONFIG_USB_SUPPORT=y
CONFIG_USB_COMMON=m
CONFIG_USB_SERIAL=m
CONFIG_USB_SERIAL_WWAN=m
CONFIG_USB_SERIAL_OPTION=m
CONFIG_USB_SERIAL_CONSOLE=m
# 也可通过字符界面配置内核, config_rt-ax86u需要编译一次才会出现,因为它是几个文件合成的
cd ~/asuswrt/release/src-rt-5.02p1axhnd.675x/kernel/linux-4.1/
make ARCH=arm64 menuconfig config_rt-ax86u
更改软件编译配置
# 例如为默认BUSYBOX添加MICROCOM支持
vi ~/asuswrt/release/src/router/busybox-1.24.1/busybox-1.24.1/config_base
CONFIG_MICROCOM=y # 修改或添加该行
# 编译完成后可使用microcom操作模块,Ctrl + Z 退出
microcom -s 115200 /dev/ttyUSB2
单独编译某个软件
# 软件包的编译在 ~/asuswrt/release/src/router/Makefile 中定义
cd ~/asuswrt/release/src-rt-5.02p1axhnd.675x
make file-5.43
make htop-3.2.1-clean
make quectel-CM-install
编译添加file命令
#####################################################################
# 编译file需要指定版本的magic.mgc数据,可先从其他编译好的包中提取:/usr/share/file/misc/magic.mgc
# http://mirrors.ustc.edu.cn/archlinuxarm/aarch64/core/file-5.43-1-aarch64.pkg.tar.xz
# wget https://astron.com/pub/file/file-5.43.tar.gz -P ~/prebuilt
# tar -xzvf ~/prebuilt/file-5.43.tar.gz -C ~/asuswrt/release/src/router/
# cp /home/leux/prebuilt/magic.mgc /home/leux/asuswrt/release/src/router/file-5.43/magic/magic.mgc
#####################################################################
# 在 ~/asuswrt/release/src/router/Makefile 中1684行后面添加如下:
obj-y += file-5.43
# 在 ~/asuswrt/release/src/router/Makefile 中8842行后面添加如下:
file-5.43/Makefile: file-5.43/configure
cd file-5.43 && $(CONFIGURE) \
--prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib \
--sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man \
--disable-shared --enable-static
file-5.43: file-5.43/Makefile
@$(SEP)
cd file-5.43 && $(MAKE)
file-5.43-clean:
[ ! -f file-5.43/Makefile ] || $(MAKE) -C file-5.43 distclean
file-5.43-install: file-5.43
install -D file-5.43/src/file $(INSTALLDIR)/file-5.43/usr/bin/file
install -D -m 644 file-5.43/magic/magic.mgc $(INSTALLDIR)/file-5.43/usr/share/misc/magic.mgc
$(STRIP) $(INSTALLDIR)/file-5.43/usr/bin/file
添加移远拨号工具
# 添加quectel-CM到固件内,解压quectel-CM源码到指定路径
# wget https://forums.quectel.com/uploads/short-url/v9dGj5GFz9BVjaAS4s3hMEIQLUO.zip -P ~/prebuilt
# unzip -d ~/asuswrt/release/src/router ~/prebuilt/QConnectManager_Linux_V1.6.1.zip
# 在 ~/asuswrt/release/src/router/Makefile 中1684行后面添加如下:
obj-y += quectel-CM
# 在 ~/asuswrt/release/src/router/Makefile 中8842行后面添加如下:
quectel-CM:
$(MAKE) -C $@
quectel-CM-install: quectel-CM
install -D quectel-CM/quectel-CM $(INSTALLDIR)/usr/sbin/quectel-CM
install -D -m 755 busybox-1.24.1/busybox-1.24.1/examples/udhcp/simple.script $(INSTALLDIR)/usr/share/udhcpc/default.script
@$(STRIP) $(INSTALLDIR)/usr/sbin/quectel-CM
quectel-CM-clean:
$(MAKE) -C quectel-CM clean
将预编译拷到固件
# 交叉编译htop的依赖ncurses库
wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.3.tar.gz
tar -xzvf ncurses-6.3.tar.gz && cd ncurses-6.3
../configure --host=arm-buildroot-linux-gnueabi \
--prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib \
--sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man \
--without-normal --without-tests --without-progs --without-manpages \
--disable-home-terminfo --disable-termcap --disable-database \
--with-fallbacks="xterm,vt100,vt200,linux,ansi,xterm-256color"
make && make DESTDIR=/home/leux install
# 交叉编译htop
wget https://github.com/htop-dev/htop/releases/download/3.2.1/htop-3.2.1.tar.xz
xz -d htop-3.2.1.tar.xz && tar -xvf htop-3.2.1.tar && cd htop-3.2.1
../configure --host=arm-buildroot-linux-gnueabi --disable-unicode --enable-static \
--prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib \
--sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man \
LDFLAGS=-L/home/leux/usr/lib CPPFLAGS=-I/home/leux/usr/include
make && arm-buildroot-linux-gnueabi-strip htop
# 将编译好的文件复制到指定路径备用,ax86默认是xterm而htop依赖terminfo
cp ~/htop-3.2.1/htop ~/prebuilt/htop-prebuilt/htop
cp ~/usr/usr/share/terminfo/x/xterm ~/prebuilt/htop-prebuilt/xterm
###########################################################
# cp ~/prebuilt/htop-prebuilt ~/asuswrt/release/src/router/htop-prebuilt
# 在 ~/asuswrt/release/src/router/Makefile 中1684行后面添加如下:
obj-y += htop-prebuilt
# 在 ~/asuswrt/release/src/router/Makefile 中8842行后面添加如下:
htop-prebuilt:
install -D -m 755 htop-prebuilt/htop $(INSTALLDIR)/usr/bin/htop
htop-prebuilt-install: htop-prebuilt
install -D -m 644 htop-prebuilt/xterm $(INSTALLDIR)/usr/share/terminfo/x/xterm
编译 htop 到固件
# 在 ~/asuswrt/release/src/router/Makefile 中1684行后面添加如下:
obj-y += ncurses-6.0
# 官方源码里面自带了ncurses库的源码,configure 中添加 --with-terminfo-dirs 即可
ncurses-6.0/Makefile: ncurses-6.0/configure
cd ncurses-6.0 && $(CONFIGURE)\
--prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib\
--sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man\
--without-normal --with-debug --with-shared\
--without-tests --without-progs --without-manpages \
--with-terminfo-dirs=/usr/share/terminfo \
CFLAGS="-I$(STAGEDIR)/usr/local/include"\
LDFLAGS="-L$(STAGEDIR)/usr/local/lib -ldl -lpthread"
ncurses-6.0: ncurses-6.0/Makefile
$(MAKE) -C $@ && $(MAKE) $@-stage
ncurses-6.0-clean:
[ ! -f ncurses-6.0/Makefile ] || $(MAKE) -C ncurses-6.0 distclean
ncurses-6.0-install: ncurses-6.0
install -D ncurses-6.0/lib/libform.so.6.0 $(INSTALLDIR)/ncurses-6.0/usr/lib/libform.so.6.0
install -D ncurses-6.0/lib/libmenu.so.6.0 $(INSTALLDIR)/ncurses-6.0/usr/lib/libmenu.so.6.0
install -D ncurses-6.0/lib/libncurses.so.6.0 $(INSTALLDIR)/ncurses-6.0/usr/lib/libncurses.so.6.0
install -D ncurses-6.0/lib/libpanel.so.6.0 $(INSTALLDIR)/ncurses-6.0/usr/lib/libpanel.so.6.0
$(STRIP) $(INSTALLDIR)/ncurses-6.0/usr/lib/libform.so.6.0
$(STRIP) $(INSTALLDIR)/ncurses-6.0/usr/lib/libmenu.so.6.0
$(STRIP) $(INSTALLDIR)/ncurses-6.0/usr/lib/libncurses.so.6.0
$(STRIP) $(INSTALLDIR)/ncurses-6.0/usr/lib/libpanel.so.6.0
cd $(INSTALLDIR)/ncurses-6.0/usr/lib && \
ln -sf libncurses.so.6.0 libncurses.so.6 &&\
ln -sf libncurses.so.6.0 libncurses.so &&\
ln -sf libform.so.6.0 libform.so.6 &&\
ln -sf libform.so.6.0 libform.so &&\
ln -sf libmenu.so.6.0 libmenu.so.6 &&\
ln -sf libmenu.so.6.0 libmenu.so &&\
ln -sf libpanel.so.6.0 libpanel.so.6 &&\
ln -sf libpanel.so.6.0 libpanel.so
###############################################################################
# wget https://github.com/htop-dev/htop/releases/download/3.2.1/htop-3.2.1.tar.xz -P ~/prebuilt
# xz -d ~/prebuilt/htop-3.2.1.tar.xz && tar -xvf ~/prebuilt/htop-3.2.1.tar -C ~/asuswrt/release/src/router/
# 在 ~/asuswrt/release/src/router/Makefile 中1684行后面添加如下:
obj-y += htop-3.2.1
# 在 ~/asuswrt/release/src/router/Makefile 中8842行后面添加如下:
htop-3.2.1/Makefile: htop-3.2.1/configure
cd htop-3.2.1 && $(CONFIGURE) \
CFLAGS="$(EXTRACFLAGS) -Os -I$(TOP)/ncurses-6.0/include -ffunction-sections -fdata-sections -fPIC" \
LDFLAGS="$(LDFLAGS) -L$(TOP)/ncurses-6.0/lib -ffunction-sections -fdata-sections -Wl,--gc-sections" \
PKG_CONFIG_LIBDIR="$(TOP)/ncurses-6.0/misc" PKG_CONFIG_PATH="$(TOP)/ncurses-6.0/misc" \
--prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib \
--sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --disable-unicode
htop-3.2.1: ncurses-6.0 htop-3.2.1/Makefile
@$(SEP)
cd htop-3.2.1 && $(MAKE)
htop-3.2.1-clean:
[ ! -f htop-3.2.1/Makefile ] || $(MAKE) -C htop-3.2.1 distclean
htop-3.2.1-install: htop-3.2.1
install -D htop-3.2.1/htop $(INSTALLDIR)/htop-3.2.1/usr/bin/htop
install -D -m 644 $(STAGEDIR)/usr/share/terminfo/x/xterm $(INSTALLDIR)/htop-3.2.1/usr/share/terminfo/x/xterm
$(STRIP) $(INSTALLDIR)/htop-3.2.1/usr/bin/htop
修改预设文件及包
# 固件的编译参数再固件内的位置:/rom/etc/build_profile -> 962118GW
~/asuswrt/release/src/router/rom/apps_scripts/ # 获取 模块,APP,真实IP 等信息的相关脚本
~/asuswrt/release/src/router/rom/packages/ # 下载大师,optware等预设应用
# 以下文件都会被拷到固件内指定位置,可以修改相关设置
~/asuswrt/release/src/router/rom/rom/etc/profile.hnd # /etc/profile
~/asuswrt/release/src/router/rom/rom/etc/ld.so.conf # /etc/ld.so.conf
~/asuswrt/release/src/router/rom/rom/etc/resolv.conf # /etc/resolv.conf
~/asuswrt/release/src-rt-5.02p1axhnd.675x/targets/fs.src/rom/etc/ # /rom/etc/
~/asuswrt/release/src-rt-5.02p1axhnd.675x/targets/fs.src/rom/etc/fstab # /rom/etc/fstab
~/asuswrt/release/src-rt-5.02p1axhnd.675x/targets/fs.src/rom/etc/ppp/options # /rom/etc/ppp/options
~/asuswrt/release/src/router/comgt-0.32/scripts/devices/ # 包含/etc/ppp/3g/内所有拨号脚本
~/asuswrt/release/src/router/rom/spn_asus.dat # /rom/spn_asus.dat 记录了所有APN信息
编译中的相关变量
# 根据如上的config_base和Makefile生成config_rt-ax86u
~/asuswrt/release/src/router/config_base # 是否编译某软件的变量
# RTCONFIG_WEBDAV is not set
# RTCONFIG_USB_MODEM is not set
~/asuswrt/release/src/router/Makefile # 是否编译包含软件包在这确定
obj-y += busybox-1.24.1
obj-$(RTCONFIG_WEBDAV) += lighttpd-1.4.39 # 如果config_base中RTCONFIG_WEBDAV没有设置,所以这个不会编译
obj-$(RTCONFIG_USB_MODEM) += json-c libubox uqmi # 如果config_base中RTCONFIG_USB_MODEM有设置,所以这个会编译
# 下面是相关变量的定义
# ~/asuswrt/release/src-rt-5.02p1axhnd.675x/target/buildFS
TARGETDIR TARGETS_DIR ~/asuswrt/release/src-rt-5.02p1axhnd.675x/target
INSTALLDIR INSTALL_DIR ~/asuswrt/release/src-rt-5.02p1axhnd.675x/target/962118GW/fs.install
BUILD_DIR ~/asuswrt/release/src-rt-5.02p1axhnd.675x
PROFILE ~/asuswrt/release/src-rt-5.02p1axhnd.675x/target/962118GW
ROOTFS ~/asuswrt/release/src-rt-5.02p1axhnd.675x/target/962118GW/fs
MOD_DIR ~/asuswrt/release/src-rt-5.02p1axhnd.675x/target/962118GW/modules
# ~/asuswrt/release/src/router/Makefile
# 可不需要将编译链放入profile中,Makefile中337行已添加到$(PATH)了
CROSS_COMPILE_64 /opt/toolchains/crosstools-aarch64-gcc-5.5-linux-4.1-glibc-2.26-binutils-2.28.1/usr/bin/aarch64-buildroot-linux-gnu-
TOOLCHAIN_64 /opt/toolchains/crosstools-aarch64-gcc-5.5-linux-4.1-glibc-2.26-binutils-2.28.1/usr/bin
# 大部分预设的目录变量都在这里定义:~/asuswrt/release/src/router/common.mak
$(SRCBASE) ~/asuswrt/release/src-rt-5.02p1axhnd.675x/
$(LINUXDIR) ~/asuswrt/release/src-rt-5.02p1axhnd.675x/kernel/linux-4.1
$(TOP) ~/asuswrt/release/src-rt-5.02p1axhnd.675x/router
$(PLATFORM) $(PLATFORM_ARCH) arm-glibc
$(TOP_PLATFORM) ~/asuswrt/release/src-rt-5.02p1axhnd.675x/router-sysdep
$(PLATFORMDIR) ~/asuswrt/release/src-rt-5.02p1axhnd.675x/router/arm-glibc
$(STAGEDIR) ~/asuswrt/release/src-rt-5.02p1axhnd.675x/router/arm-glibc/stage
PKG_CONFIG_SYSROOT_DIR $(STAGEDIR)
PKG_CONFIG_PATH $(STAGEDIR)/usr/lib/pkgconfig:$(STAGEDIR)/etc/lib/pkgconfig
PKG_CONFIG_LIBDIR $(STAGEDIR)/usr/lib/pkgconfig:$(STAGEDIR)/usr/local/lib/pkgconfig:$(STAGEDIR)/etc/lib/pkgconfig
EXTRACFLAGS -DLINUX_KERNEL_VERSION=$(LINUX_KERNEL_VERSION) $(if $(STAGING_DIR),--sysroot=$(STAGING_DIR))
EXTRALDFLAGS $(if $(STAGING_DIR),--sysroot=$(STAGING_DIR))
# 交叉编译器相关信息在这里定义:~/asuswrt/release/src-rt/platform.mak
ARCH arm
TOOLS /opt/toolchains/crosstools-arm-gcc-5.5-linux-4.1-glibc-2.26-binutils-2.28.1
TOOLCHAIN /opt/toolchains/crosstools-arm-gcc-5.5-linux-4.1-glibc-2.26-binutils-2.28.1/usr/bin
CROSS_COMPILE /opt/toolchains/crosstools-arm-gcc-5.5-linux-4.1-glibc-2.26-binutils-2.28.1/usr/bin/arm-buildroot-linux-gnueabi-
CROSS_COMPILER $(CROSS_COMPILE)
CONFIGURE ./configure LD=$(CROSS_COMPILE)ld --host=arm-buildroot-linux-gnueabi
CONFIGURE_64 ./configure LD=$(CROSS_COMPILE_64)ld --host=aarch64-buildroot-linux-gnu
HOSTCONFIG linux-armv4 -DL_ENDIAN -march=armv8-a -fomit-frame-pointer -mabi=aapcs-linux -marm -ffixed-r8 -msoft-float -D__ARM_ARCH_8A__
HOSTCONFIG_64 linux-aarch64 -DL_ENDIAN -march=armv8-a -fomit-frame-pointer -mabi=lp64 -ffixed-r8 -D__ARM_ARCH_8A__
# 因为源码包内自带了几十个私有的二进制32位的库,所以不能改为64位
file ~/asuswrt/release/src/router/protect_srv/lib/prebuild/libptcsrv.so
/home/leux/asuswrt/release/src/router/protect_srv/lib/prebuild/libptcsrv.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped
© 版权声明
本站网络名称:
小怪兽
本站永久网址:
https://77il.cn
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ3031379629删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
请登录后查看评论内容