飞腾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



相关文章
|
10天前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
105 50
|
17天前
|
Ubuntu
Ubuntu禁止内核自动更新
通过上述步骤,您可以在Ubuntu系统中有效地禁用内核的自动更新。这些步骤包括锁定内核版本、禁用自动更新配置、移除不需要的内核包以及禁用相关的自动更新服务。这样可以确保系统在内核层面保持稳定,避免因内核自动更新导致的不必要问题。
106 1
|
1月前
|
Ubuntu 安全 Linux
|
6月前
|
存储 Ubuntu 关系型数据库
Ubuntu 20.04 卸载与安装 MySQL 5.7 详细教程
该文档提供了在Ubuntu上卸载和安装MySQL 5.7的步骤。首先,通过`apt`命令卸载所有MySQL相关软件包及配置。然后,下载特定版本(5.7.32)的MySQL安装包,解压并安装所需依赖。接着,按照特定顺序安装解压后的deb包,并在安装过程中设置root用户的密码。安装完成后,启动MySQL服务,连接数据库并验证。最后,提到了开启GTID和二进制日志的配置方法。
1403 4
|
3月前
|
并行计算 Ubuntu PyTorch
Ubuntu下CUDA、Conda、Pytorch联合教程
本文是一份Ubuntu系统下安装和配置CUDA、Conda和Pytorch的教程,涵盖了查看显卡驱动、下载安装CUDA、添加环境变量、卸载CUDA、Anaconda的下载安装、环境管理以及Pytorch的安装和验证等步骤。
549 1
Ubuntu下CUDA、Conda、Pytorch联合教程
|
3月前
|
Ubuntu 网络协议
怎么在Ubuntu系统云服务器搭建自己的幻兽帕鲁服务器?幻兽帕鲁搭建教程
《幻兽帕鲁》是热门开放世界生存游戏,玩家收集并利用“帕鲁”进行多样活动。为享受多人模式,需自建服务器:选云主机(推荐4C/16G/5M起)、装Steamcmd及游戏环境。登录Steam购游戏后,输入服务器地址即可联机畅玩。
131 1
怎么在Ubuntu系统云服务器搭建自己的幻兽帕鲁服务器?幻兽帕鲁搭建教程
|
3月前
|
Ubuntu 网络安全 数据安全/隐私保护
ubuntu server连接wifi教程
本文提供了一个简化Ubuntu Server在Raspberry Pi系统上配置过程的脚本"config_ubuntu_server",包括自动和手动两种方法来设置root权限、SSH配置,并连接WiFi,同时支持无密码SSH访问,适合初学者和高级用户。
85 3
|
3月前
|
Ubuntu Linux Windows
如何在WSL中的ubuntu编译Linux内核并且安装使用ebpf?
请注意,在WSL1中可能会由于内核架构限制而无法成功进行以上过程,WSL2对于Linux内核的完整支持更为合适。此外,部分步骤可能因不同的Linux发行版或内核版本而异。
179 4
|
4月前
|
Ubuntu Java Linux
玩转Ubuntu零基础教程,让你成为Ubuntu高手。
本教程将介绍Ubuntu操作系统的各个方面。它探讨了Ubuntu桌面版的各种功能,风格和工作。比较我们通常会在Windows操作系统上找到的软件。有一些专注于Ubuntu服务器版本的章节。本教程还包括有兴趣了解Ubuntu的虚拟机和云端的人员的独立章节。
85 1
玩转Ubuntu零基础教程,让你成为Ubuntu高手。
|
2月前
|
Ubuntu
编译ubuntu内核
编译ubuntu内核