欢迎光临散文网 会员登陆 & 注册

飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程

2023-05-17 17:32 作者:乌拉大喵喵  | 我要投稿


原文在我公众号上: 

https://mp.weixin.qq.com/s/Hlpw2B8212o4Zq-4_oeBKw

一、环境准备

说明:

1.PCIe显卡是必须的,因为飞腾开发板没有显示,显卡需自己配,选个AMD主流的显卡就行。

2.有流量安卓手机是必须的,系统装起来后,开发板上是没有接口可以上网的,唯一上网的方式就是使用安卓手机的“USB共享网络”的方式(这个配置在本文下面介绍中有说明)。是不是必须安卓我不知道,因为我买不起苹果手机……

3.Ubuntu系统只有server服务器版的支持在arm平台上安装,所以需要选择server版本。

4.因为是在飞腾平台安装,所以需要镜像内包含HWE内核,18.04系列中,我只载了18.04和18.04.5两个版本,其中18.04不含HWE内核,无法安装。所以后面尝试就选择了18.04中最后一个版本18.04.5来尝试。如果自己手中有18.04的其他版本,可以看看有没有HWE内核(这个HWE内核可以本文下面介绍中看到),要是没有就选择18.04.5来搞就好了。

5.UEFI固件怎么搞到启动用Biso FLASH里不在本文的介绍范围内,默认认为提供了UEFI固件,能够自己搞到开发板内。怎么接ATX电源、SATA硬盘、TTL串口线、键鼠这类的也不在本文的介绍范围内。


约定:

1.Linux下所有命令均在root下执行。

2.文中Linux下需要输入的命令均使用浅绿底色展示。

3.所有linux下信息提示均使用斜体展示。

4.所有选择项均使用加粗展示。




二、Ubuntu系统安装

2.1 系统盘制作

使用rufus-3.18p.exe将载下来的镜像ubuntu-18.04.5-server-arm64.iso搞到U盘里,制作系统安装盘。


2.2 系统安装

根据UEFI提示,开发板加电后,可以按F2、F12等进入启动配置项,选择从U盘启动。

启动后,选择Boot and Install with HWE kernel

参考 https://wiki.ubuntu.com/Kernel/RollingLTSEnablementStack 上的介绍,意思就是Ubuntu搞了个HWE的东西,这样客户可以保证在不改变ubuntu版本的情况下,在最新的平台上安装它。简言之 HWE kernel 是为了支持最新硬件的解决方案,即 Ubuntu 某个版本发布以后,出现的新硬件。

进入HWE后,就可以安装ubuntu server了。

当然,串口上也能操作。

后面的安装过程,屏幕上就没显示了,只有串口有显示。

下面对串口配置过程进行截图:

这里对于CD-ROM的检测,基本都会提示是没有找到的。这时就把U盘拔了再插,之后再retry mounting the CD-ROM这里选择YES,基本就能过去了。

之后再输一次。

提示密码少于8字符,要是还想用这个密码,就选Yes,要不就选NO

这里选择use entire disk and set up LVM。LVM就是磁盘管理器。

百度百科上说,LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。


这里应该选no automatic updates……

在软件选择上这里需要把OpenSSH server选上。

在提示拔出安装介质后,拔了U盘后,continue。开发板理论上应该重启了,如果开发板自己没有重启,就得靠你的手了。

再次上电后,等半天,系统正常启动。下面是调试串口打印信息。

同时可以看到,这个时候显示器上也是有终端显示的。

三、安装GUI

使用USB-typeC线将手机连接到开发板的USB接口上。打开手机的“usb网络共享”,如下图所示。

在开发板系统中查看有没有认出来手机,是不是把手机当成网卡来用了。输入命令“ip addr”。

由图中可见,在开启手机“USB网络共享”后,Ubuntu系统内多了一个enp4s0u4的网卡。

Dhcp这个网卡,输入命令“dhclient enp4s0u4”,如果自己板子上ip addr后多的网卡名字不是enp4s0u4,那么这里dhclient的网卡名字enp4s0u4就换成你扫出来的那个名字就行。

再次ip addr后,可以发现给分了IP了,那么说明就是能用了。

Ping下百度“ping www.baidu.com”,能ping通,说明网络正常了。


那就在线安装gnome吧。输入命令“apt install ubuntu-gnome-desktop”。

过程中可能报错如下:

报错,但是告诉了可以试试 apt --fix-broken install,所以按提示进行fix。

它就一路自己去修复去了。之后再执行命令“apt install ubuntu-gnome-desktop”。


四、飞腾内核替换

把飞腾内核linux-phytium-4.19.8.tar.xz和交叉编译工具链gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz搞到ubuntu中。

4.1 交叉编译工具链安装

首先安装交叉编译工具链。

在/opt下创建一个toolchain 文件夹,并将gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz复制到/opt/toolchain目录下,并解压。命令

mkdir /opt/toolchain

cp gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz /opt/toolchain

tar -xf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz



使用修改/etc/profile文件。

vi /etc/profile

在文本底部增加如下两行,保存并退出,

export PATH=$PATH:/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin

export CROSS_COMPILE=aarch64-linux-gnu-

保存并退出。



这里是关键的source下。

Source /etc/profile



同时不放心可以echo $PATH下,看看现在的PATH中有没有/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin这个路径。


4.2 编译飞腾内核

内核的编译很简单,把内核linux-phytium-4.19.8.tar.xz搞到自己的一个目录里,解压它。

配置内核

make menuconfig



可能在这个时候,发现报错没有make命令。

那么就在线apt-get下安装就好了。


如果make安装完了,再次make menuconfig又出下面这个错误,报没有libncurses-dev库则按这个库,但是这个只能在线安装了。

执行命令apt-get install libncurses5-dev。

结果执行这个apt-get install libncurses5-dev命令的时候还报错。

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)

E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?



这里参考 https://blog.csdn.net/lun55423/article/details/108907779 的方法执行。

# rm /var/lib/apt/lists/lock

# rm /var/cache/apt/archives/lock

# rm /var/lib/dpkg/lock*

# dpkg --configure -a

# apt update

之后就可以再次执行安装libncurses-dev库的命令apt-get install libncurses5-dev了。



再次make menuconfig,再次报错:

root@york:/home/york/linux-phytium-4.19.8# make menuconfig

  YACC    scripts/kconfig/zconf.tab.c

/bin/sh: 1: bison: not found

scripts/Makefile.lib:196: recipe for target 'scripts/kconfig/zconf.tab.c' failed

make[1]: *** [scripts/kconfig/zconf.tab.c] Error 127

Makefile:539: recipe for target 'menuconfig' failed

make: *** [menuconfig] Error 2

这次错误重点是/bin/sh: 1: bison: not found,所以安装bison

执行命令apt install bison flex。



再次make menuconfig,成啦……



啥都先不改,直接退出保存,其实就是混个.config文件。

之后make,执行命令make all -j8。make all就是将内核以及模块一起编译。后面的参数-j8表示,cpu要开启八个线程来编译内核。一般来说,每个核可以开启两个线程来编译内核,所以开启了八个线程。

结果又报错,scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory

参考网页 https://www.cnblogs.com/hjxzjp/p/14702329.html 操作apt-get install libssl-dev,基本原则就是报缺啥咱们就安装啥。

一个很漫长很漫长的make过程。


安装模块,执行命令make modules_install

安装内核,执行命令make install



4.3 grub启动修改及内核切换

修改/etc/default/下的grub文件文件

注释掉GRUB_TIMEOUT_STYLE=hidden这句话,

修改GRUB_TIMEOUT=10

取消GRUB_TERMINAL=console这句话注释,取消这个的注释很多文档上都没说,我猜测可能他们都不是server版,server版我不开这个,界面是没显示的。

之后,update-grub

这个命令把咱们的飞腾内核搞进去了。同时,这个命令执行后,系统会自动修改/boot/grub/grub.cfg文件,开机上显示的东西,都在这个grub.cfg文件中。

重启系统,在进入ubuntu之前,会出现GNU GRUB的界面,在这个里面选择“advanced options for ubuntu”,选进去之后,里面就是系统里所有的内核了。

要是用飞腾的4.19.8内核的话,就选中就好了。

进入系统检查内核,uname -a

内核切换成功了!



说明:grub部分的内容,重点参考 https://blog.csdn.net/Losk_0/article/details/87928072 [引用3]

https://www.cnblogs.com/dodotititi/articles/4221480.html

个人资料推广:

最近将多年来收集到的教学视频、国内外图书、源码等整理整合拿出来,

涉及 arm、Linux、python、信号完整性、FPGA、DSP、算法、stm32、

单片机、制图、电子模块、kali、出版社图书等。

资料目前约 1.5TB+。初、中、高不同阶段工程师,都能有提升自己的资料。 

分享,让技术更伟大!欢迎转发! 

欢迎飞腾爱好者加入微信交流群。

群内大家可以畅所欲言。在群内不需要表露自己的公司和身份,可以群内交流遇到的问题,分享自己的调试心得。

希望大家共建飞腾友谊!


飞腾FT-2000/4开发板上移植Ubuntu18.04.5且更换飞腾内核4.19.8教程的评论 (共 条)

分享到微博请遵守国家法律