一、环境准备
下载地址 |
||
硬件环境 |
飞腾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 |
||
交叉编译 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