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

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

科技背景_副本 公众号_副本.png

一、环境准备



下载地址

硬件环境

飞腾FT-2000/4开发板1块

ATX电源1套

SATA硬盘1块

PCIe显卡1块

TTL转USB串口线1条

显示器1台

USB键鼠1套

U盘1个

有流量安卓手机1部

Usb-typeC连接线1条


软件环境

FT-2000/4开发板UEFI固件

联系飞腾FAE获取

Ubuntu18.04.5镜像文件

ubuntu-18.04.5-server-arm64.iso

http://old-releases.ubuntu.com/releases/18.04.5/


U盘启动盘制作工具

rufus-3.18p.exe

https://rufus.ie/downloads/


交叉编译

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

https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/


飞腾内核4.19.8

linux-phytium-4.19.8.tar.xz

联系飞腾FAE获取


说明:

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”。


这里需要停一下,这里还有个别的选择,同时本人也是这么做的。但是这个并不是所有人都需要这么搞,可以直接选择安装ubuntu-gnome-desktop,所以有兴趣的可以看这个框框里的内容。


Gnome的GUI也分很多种。参考 https://blog.csdn.net/allway2/article/details/106322339 [引用1](本文将这个文章的主要内容放到文章最后的[引用1]中了)这个网页的介绍。Gnome vanilla提供基本的Gnome Shell功能和最少的预安装应用程序,看起来要比完整版的gnome的GUI更有用,所以我终止了上面的安装ubuntu-gnome-desktop的命令,改用命令“apt install gnome-session gdm3”来安装gnome vanilla。

安装完成后,界面不会自动启动,需要手敲命令。

service gdm3 start

成功。

但是看看这个GUI,真的是什么都没有,所以需要把它再丰富起来。

怎么丰富呢?参考网址 https://technastic.com/install-stock-gnome-shell-on-ubuntu/

所以执行如下命令:

apt install ubuntu-gnome-default-settings

apt install vanilla-gnome-default-settings vanilla-gnome-desktop

漫长的等待……内容丰富多了……

Ubuntu常用的Terminal也出来了



四、飞腾内核替换

把飞腾内核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下安装就好了。



同样这里讲一个不在线安装,而是实现离线安装的方法,同样这个不是所有人都需要这么干,有兴趣的可以看下下面框框中的内容。

其实这个是受这么一个网页的指引,尝试了下能实现。https://blog.csdn.net/qyb19970829/article/details/109596767

[引用2] (同样的,把这个网页内容放到了本文最后)

赶紧把自己的安装盘插上,在开发板上启动Ubuntu server

真的成了!

报了没有gcc,那么再按照这种方法装gcc。

使用pool里的文件各种装。

如果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



相关文章
|
3月前
|
Ubuntu
百度搜索:蓝易云【Ubuntu开机自启服务systemd.service配置教程】
现在,你的服务将在Ubuntu开机时自动启动,并在之后的启动中持续运行。记得根据你的实际需求修改 `your_service_name.service`文件中的相关信息。
57 2
|
3月前
|
监控 Ubuntu 安全
Ubuntu开启FTP服务教程
在Ubuntu服务器上配置FTP服务是一个常见的需求,无论是用于文件分享、网站管理还是数据备份。FTP(文件传输协议)是一种用于在网络上传输文件的协议,它可以让用户通过身份验证下载或上传文件。本文将指导您如何在Ubuntu系统上安装和配置FTP服务器,以及如何管理用户权限来保证服务器的安全性。
130 0
|
4月前
|
Ubuntu Linux
百度搜索:蓝易云【Ubuntu更改默认启动内核】
请注意,更改默认启动内核可能会影响系统的稳定性和性能。在更改前,请确保选择的内核版本与你的系统硬件和配置兼容。如果遇到问题,你可以在GRUB启动菜单中选择其他内核来启动系统,并在问题解决后再将默认内核设置为你选择的版本。
37 0
|
4月前
|
Ubuntu
百度搜索:蓝易云【ubuntu 16.04升级到18.04教程】
请注意,在升级过程中可能会出现一些问题,例如软件包依赖关系或配置文件冲突。在升级前,建议备份重要数据,以免数据丢失。如果你在升级过程中遇到问题,可以查看相关错误信息并尝试解决。
47 2
|
4月前
|
Ubuntu 数据安全/隐私保护
百度搜索:蓝易云【ubuntu安装qemu教程】
现在,你已经成功在Ubuntu系统中安装了QEMU。你可以使用QEMU来模拟x86、ARM等体系结构的虚拟机,并在其中运行不同的操作系统。请注意,QEMU的使用可能涉及到一些复杂的参数和配置,具体使用方法可以参考官方文档或相关教程。
53 1
|
4月前
|
Ubuntu Linux 数据安全/隐私保护
百度搜索:蓝易云【ubuntu系统安装gcc-7、g++-7教程】
请注意,以上步骤是针对Ubuntu系统的。如果你使用的是其他Linux发行版,请相应地调整命令。
109 6
|
4月前
|
Ubuntu 关系型数据库 MySQL
百度搜索:蓝易云【ubuntu下Mysql安装与root密码重置教程】
请注意,以上步骤是针对Ubuntu系统的。如果你使用的是其他Linux发行版,请相应地调整命令。
110 1
|
4月前
|
Ubuntu
百度搜索:蓝易云【Ubuntu删除多余内核教程】
现在,你已经成功地删除了Ubuntu系统中多余的旧内核。请谨慎删除内核,确保保留当前正在使用的稳定内核以及至少一个备用内核,以防止出现意外问题。
105 2
|
4月前
|
Ubuntu 网络安全
百度搜索:蓝易云【ubuntu系统ufw开放端口教程】
现在,你已经成功在Ubuntu系统中使用ufw开放了指定的端口。请确保只开放必要的端口,并注意网络安全。
98 3
|
4月前
|
Ubuntu 定位技术
百度搜索:蓝易云【ubuntu全版本通用换源教程,超详细教程】
现在,你已经成功地更换了Ubuntu系统的软件源。新的源地址将提供更快的下载速度和更稳定的软件包更新。
45 2