CentOS&ubuntu下 IMX6移植Openwrt保姆级教程

一.准备步骤

1.确保所需要的依赖都有

centOs

sudo yum install subversion g++ zlib1g-dev build-essential git python python3 libncurses5-dev gawk gettext unzip file libssl-dev wget libelf-dev ecj fastjar java-propose-classpath asciidoc bzip2 libz-dev libtool

ubuntu

sudo apt-get install subversion g++ zlib1g-dev build-essential git python python3 libncurses5-dev gawk gettext unzip file libssl-dev wget libelf-dev ecj fastjar java-propose-classpath asciidoc bzip2 libz-dev libtool

2.下载openwrt 19.07

https://github.com/openwrt/openwrt/archive/v19.07.2.tar.gz
19.07本人使用后编译成功,各位自行测试什么可行。

二.编译前准备

1.解压openwrt-openwrt-18.06.zip

将压缩文件openwrt-openwrt-18.06.zip复制到你工作目录下
按顺序执行:

unzip openwrt-openwrt-18.06.zip
cd cd openwrt-openwrt-18.06/
./scripts/feeds update -a
./scripts/feeds install -a
make defconfig
make menuconfig

如果没有报错会出现下面的界面
在这里插入图片描述

2.更改菜单选项

首先先询问厂家自己所买的板子的内核源码在什么位置。
同时得到这个文件夹所在位置,例如我的:/home/isaiguserver250/ysh/file/openwrt-19.07/IMX/linux

在这里插入图片描述

(1)选择芯片

在第一个选项中选择自己的板子芯片,我的是IMX6ULL,但是openwrt默认没有IMX6ULL,我这里选择的是修改Freescale IMX6ULL,后续通过修改可以就可以使用了。
在这里插入图片描述
在这里插入图片描述

(2)写入板子内核源码位置

需要选择的内容,必须在光标处,先按下空格使得前面[ ]变为[*]然后再按回车
!!!!!!!!!!!!!!!!!!!
未按空格:
在这里插入图片描述按了空格:
在这里插入图片描述

这点很重要,如果先按空格选中的话,进入选项后会变成这样

在这里插入图片描述
进入Advanced configuration options (for developers) —>

在这里插入图片描述在光标处回车输入板子核心源码地址
在这里插入图片描述

(3)更改clibrary

在Advanced configuration options (for developers) 菜单最下面选择 Toolchain Options
在这里插入图片描述在里面的clibrary中选择 use glibc
在这里插入图片描述
在这里插入图片描述
然后保存 <save 后关闭 <exit
在这里插入图片描述

3修改openwrt文件

纲要:修改/openwrt-18.06/openwrt-openwrt-18.06/target/linux/imx6下的Makefile文件,改为

13.CPU_TYPE:=cortex-a7//芯片修改为a7
14.CPU_SUBTYPE:=vfpv3-d16//源Freescale不支持浮点型,但是IMX6ULL要支持浮点型
17.KERNEL_PATCHVER:=4.1//linux内核改为4.1

同时将此目录下的config改为ieconfig-4.1

详细步骤:
在openwrt目录下:

(1)选择target

在这里插入图片描述

(2)选择linux

在这里插入图片描述

(3)选择自己的芯片型号

及 “2.更改菜单选项(1)选择芯片”中选择的芯片型号
在这里插入图片描述

(4)打开Makefile

在这里插入图片描述如图修改Makefile
在这里插入图片描述修改内容如下:

13.CPU_TYPE:=cortex-a7//芯片修改为a7
14.CPU_SUBTYPE:=vfpv3-d16//源Freescale不支持浮点型,但是IMX6ULL要支持浮点型
17.KERNEL_PATCHVER:=4.1//linux内核改为4.1

(5)修改config

将原来的config-4.1.14改为config-4.1
在这里插入图片描述

五.编译openwrt

在openwrt的位置输入命令:

make -j1 V=s 

编译过程大概需要三四个小时
但是如果命令改为:

make -j4 V=s 

意思是同时编译4条命令,这将会缩短大量时间,同时也给处理器带来负担,各位量力而行。

六.编译出现的错误

1.WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!

**在这里插入图片描述解决方法:

 1. make defconfig
 2. make oldconfig 

/******************************************************************************************************/

2.Cannot find appropriate hash command, ensure the provided hash is either a MD5 or SHA256 checksum.

在这里插入图片描述
root$ make -j1 V=s
make[1]: Entering directory /home/isaiguserver250/ysh/file/openwrt-19.07.2' make[2]: Entering directory/home/isaiguserver250/ysh/file/openwrt-19.07.2’
mkdir -p /home/isaiguserver250/ysh/file/openwrt-19.07.2/staging_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi
cd /home/isaiguserver250/ysh/file/openwrt-19.07.2/staging_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi
mkdir -p bin lib include stamp
mkdir -p /home/isaiguserver250/ysh/file/openwrt-19.07.2/build_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi/stamp
touch /home/isaiguserver250/ysh/file/openwrt-19.07.2/staging_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi/.prepared
make[3]: Entering directory /home/isaiguserver250/ysh/file/openwrt-19.07.2/toolchain/gdb' make[3]: Nothing to be done forcompile’.
make[3]: Leaving directory /home/isaiguserver250/ysh/file/openwrt-19.07.2/toolchain/gdb' time: toolchain/gdb/compile#0.00#0.00#0.00 make[3]: Entering directory/home/isaiguserver250/ysh/file/openwrt-19.07.2/toolchain/binutils’
make[3]: Nothing to be done for compile'. make[3]: Leaving directory/home/isaiguserver250/ysh/file/openwrt-19.07.2/toolchain/binutils’
time: toolchain/binutils/compile#0.00#0.00#0.01
make[3]: Entering directory /home/isaiguserver250/ysh/file/openwrt-19.07.2/toolchain/gcc/minimal' make[3]: Nothing to be done forcompile’.
make[3]: Leaving directory /home/isaiguserver250/ysh/file/openwrt-19.07.2/toolchain/gcc/minimal' time: toolchain/gcc/minimal/compile#0.00#0.00#0.01 make[3]: Entering directory/home/isaiguserver250/ysh/file/openwrt-19.07.2/toolchain/kernel-headers’
mkdir -p /home/isaiguserver250/ysh/file/openwrt-19.07.2/dl
SHELL= flock /home/isaiguserver250/ysh/file/openwrt-19.07.2/tmp/.linux-4.1.tar.xz.flock -c ’ /home/isaiguserver250/ysh/file/openwrt-19.07.2/scripts/download.pl “/home/isaiguserver250/ysh/file/openwrt-19.07.2/dl” “linux-4.1.tar.xz” “x” “” “@KERNEL/linux/kernel/v4.x” ’
Cannot find appropriate hash command, ensure the provided hash is either a MD5 or SHA256 checksum.
make[3]: *** [/home/isaiguserver250/ysh/file/openwrt-19.07.2/dl/linux-4.1.tar.xz] Error 255
make[3]: Leaving directory /home/isaiguserver250/ysh/file/openwrt-19.07.2/toolchain/kernel-headers' time: toolchain/kernel-headers/compile#0.02#0.01#0.04 make[2]: *** [toolchain/kernel-headers/compile] Error 2 make[2]: Leaving directory/home/isaiguserver250/ysh/file/openwrt-19.07.2’
make[1]: *** [/home/isaiguserver250/ysh/file/openwrt-19.07.2/staging_dir/toolchain-arm_cortex-a7+vfpv3-d16_gcc-7.5.0_glibc_eabi/stamp/.toolchain_compile] Error 2
make[1]: Leaving directory `/home/isaiguserver250/ysh/file/openwrt-19.07.2’
make: *** [world] 错误 2
原因:
没有hash,直接跳过就好。
解决方法:
编译命令改为:

make -j1 V=s PKG_HASH=skip

/******************************************************************************************************/

3.xxx make -j1 V=s or make -j1 xxx

具体问题忘记了
解决方法:

make -j1 V=s

/******************************************************************************************************/

4.Parse error at /xxx/openwrt-18.06/openwrt-openwrt-18.06/scripts/kconfig.pl line 137.

time: target/linux/prereq#0.06#0.03#0.13
make[1]: Entering directory /home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06' make[2]: Entering directory/home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06’
make[3]: Entering directory /home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/target/linux' make[4]: Entering directory/home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/target/linux/imx6’
rm -f /home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/build_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi/linux-imx6/linux-4.1/localversion
/home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/scripts/kconfig.pl > /home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/build_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi/linux-imx6/linux-4.1/.config.target
Parse error at /home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/scripts/kconfig.pl line 137.
make[4]: *** [/home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/build_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi/linux-imx6/linux-4.1/.configured] Error 255
make[4]: Leaving directory /home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/target/linux/imx6' make[3]: *** [compile] Error 2 make[3]: Leaving directory/home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/target/linux’
time: target/linux/compile#0.03#0.05#0.08
make[2]: *** [target/linux/compile] Error 2
make[2]: Leaving directory /home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06' make[1]: *** [/home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/staging_dir/target-arm_cortex-a7+vfpv3-d16_glibc_eabi/stamp/.target_compile] Error 2 make[1]: Leaving directory/home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06’
make: *** [world] 错误 2
在这里插入图片描述
原因:
内核不同
解决方法:
/home/isaiguserver250/ysh/file/openwrt-18.06/openwrt-openwrt-18.06/target/linux/imx6
下的config文件命名与同目录下的Makefile规定的linux内核版本不同,详细查看目录 下的二.编译前准备(4)打开Makefile (5)修改config
/******************************************************************************************************/

5.whether mknod can create fifo without root privileges

you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment…
原因:
环境变量问题
解决方法:
在命令行输入:

exprot FORCE_UNSAFE_CONFIGURE=1
export FORCE=1

若还是不成功
编译命令改为:

make FORCE_UNSAFE_CONFIGURE=1-j1 V=s PKG_HASH=skip

/******************************************************************************************************/

CentOSUbuntu都是流行的Linux发行版,但它们在适合企业数据平台部署方面有一些不同之处。以下是一些可能影响企业选择CentOS而非Ubuntu的原因: 1. 稳定性:CentOS的主要优点之一是其稳定性。CentOS的开发重点是可靠性和稳定性,而Ubuntu则更加关注最新的功能和更新。对于企业数据平台来说,稳定性很重要,因为它需要长期运行而不会出现无法预测的故障。 2. 安全性:CentOS是一个相对较为保守的操作系统,它的安全性也更高。CentOS的开发者会定期发布安全更新,以确保系统的安全性。而Ubuntu则更加关注最新的功能和用户体验,安全性可能会稍有降低。 3. 社区支持:CentOS有一个庞大的社区支持,因为它是基于Red Hat Enterprise Linux(RHEL)的开源版本。这意味着,CentOS用户可以获得与RHEL一样的支持和更新,而不需要支付高昂的许可费用。Ubuntu也有一个庞大的社区支持,但相对于CentOS而言,它的商业支持可能更加显著。 4. 兼容性:许多企业应用程序都是在RHEL上开发和测试的,因此CentOS作为RHEL的开源版本,与这些应用程序的兼容性更好。而Ubuntu则更加关注最新的功能和用户体验,一些企业应用程序可能需要额外的配置才能在Ubuntu上运行。 综上所述,CentOSUbuntu更适合部署企业数据平台,因为它更加稳定、安全、有社区支持,与许多企业应用程序兼容性更好。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ySh_ppp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值