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

因为文章中图片太多,所以在本文前面是以图片形式添加的,如果需要复制文字部分内容,可以下载PDF版本,或者翻到本文最后,有无图的纯文字部分,可劲往下翻就行了

 

==================================================

以下是纯文字稿

==================================================

  • 环境准备

下载地址

硬件环境

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

Index of /releases/18.04.5

U盘启动盘制作工具

rufus-3.18p.exe

Index of /downloads

交叉编译

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

Linaro Releases

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

参考 Kernel/RollingLTSEnablementStack - Ubuntu Wiki 上的介绍,意思就是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也分很多种。参考 如何在Ubuntu 18.04上安装Gnome_allway2的博客-CSDN博客_ubuntu安装gnome [引用1](本文将这个文章的主要内容放到文章最后的[引用1]中了)这个网页的介绍。Gnome vanilla提供基本的Gnome Shell功能和最少的预安装应用程序,看起来要比完整版的gnome的GUI更有用,所以我终止了上面的安装ubuntu-gnome-desktop的命令,改用命令“apt install gnome-session gdm3”来安装gnome vanilla。

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

service gdm3 start

成功。

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

怎么丰富呢?参考网址 How to Install Vanilla GNOME Shell on Ubuntu - Technastic

所以执行如下命令:

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下安装就好了。

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

其实这个是受这么一个网页的指引,尝试了下能实现。 Ubuntu-离线安装基本依赖(gcc、make、dkms等)_YuanbaoQiang的博客-CSDN博客_离线安装make

[引用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?

这里参考 【已解决】Could not get lock /var/lib/dpkg/lock-frontend_Bungehurst的博客-CSDN博客 的方法执行。

# 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

参考网页 scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory - Dipsyhu - 博客园 操作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部分的内容,重点参考 Linux 内核切换 grub (Ubuntu)_Losk-x的博客-CSDN博客_linux切换内核 [引用3]

GRUB2配置详解:默认启动项,超时时间,隐藏引导菜单,配置文件详解,图形化配置 - 学海无涯1999 - 博客园


附件:

[引用1]

如何在Ubuntu 18.04上安装Gnome

在Ubuntu上安装Gnome Vanilla

在Ubuntu 18.04上安装Gnome vanilla将为您提供基本的Gnome Shell功能和最少的预安装应用程序。

要执行Gnome桌面的原始安装,请执行以下linux命令:

sudo apt install gnome-session gdm3

Gnome Vanilla-Ubuntu 18.04

最少的应用程序安装。

在Ubuntu上完整安装Gnome桌面

为了安装完整的Ubuntu Gnome桌面,请使用tasksel命令。如果该tasksel命令在您的系统上不可用,则可以通过以下方式安装它:

$ sudo apt install tasksel

一旦tasksel安装了命令,开始通过执行Gnome桌面安装:

$ sudo tasksel install ubuntu-desktop

完整的Gnome桌面-Ubuntu 18.04

Gnome桌面应用程序菜单-Ubuntu 18.04

登录到Gnome会话

要在没有当前图形用户界面(GUI)的系统上启动Gnome会话,请登录到控制台并执行:

$ sudo service gdm3 start

否则,请从当前的GUI会话中注销,然后选择GNOME会话作为默认的桌面管理器。或者,如有必要,重新启动系统。

选择GNOME作为下一个会话的默认桌面管理器。

————————————————

版权声明:本文为CSDN博主「allway2」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/allway2/article/details/106322339

[引用2]

Ubuntu-离线安装基本依赖(gcc、make、dkms等)

Ubuntu主机:18.04.5 LTS(全新系统,未配置网卡驱动)

Ubuntu启动U盘:需要其中的镜像文件

无线网卡:RTL8812BU

离线安装基本依赖

参考:Ubuntu离线安装gcc,make等

由于ubuntu系统刚刚安装完毕,还未配置网卡,无法实现网络在线安装依赖,所以需要离线安装相关的依赖,然后再配置相关的无线网卡!网上的教程很多都是需要自己单独下载文件,然后按照顺序进行安装,这样比较麻烦,所以本文直接利用自己当初的启动U盘,找到需要的依赖直接进行安装即可!

挂载启动U盘

查看U盘对应的设备名称

sudo fdisk -l

# 以下就是需要挂载的U盘

Disk /dev/sdc: 14.9 GiB, 15938355200 bytes, 31129600 sectors

Units: sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disklabel type: dos

Disk identifier: 0xcad4ebea

Device     Boot Start      End  Sectors  Size Id Type

# 系统给U盘分配的设备文件名

/dev/sdc4  *      256 31129599 31129344 14.9G  c W95 FAT32 (LBA)

挂载U盘

sudo mkdir /mnt/usb

sudo mount -t vfat -o iocharset=utf8 /dev/sdc4 /mnt/usb/

查看U盘内的文件

cd /mnt/usb/ && ls

 boot     EFI        md5sum.txt   preseed                      ubuntu

 casper   install    pics         README.diskdefines

 dists    isolinux   pool        'System Volume Information'

所有的基本依赖文件都在pool/main下!

gcc离线安装

cd pool/main/ && find -name gcc*

查询的结果如下,gcc相关的文件都在g目录下

./g/gcc-7

./g/gcc-7/gcc-7_7.4.0-1ubuntu1~18.04.1_amd64.deb

./g/gcc-8

./g/gcc-defaults

./g/gcc-defaults/gcc_7.4.0-1ubuntu2.3_amd64.deb

注意:直接安装gcc对应的deb文件会提示缺少相关的依赖,因此需要先安装其需要的依赖!以下的安装顺序可能会有偏差,可根据实际情况作出调整!

/g/gcc-8中所有的lib文件:

sudo dpkg -i lib*.deb

pool/main/l/linux/下的deb文件:

sudo dpkg -i linux-libc-dev_4.15.0-76.86_amd64.deb

/g/glibc中所有的lib文件:

sudo dpkg -i lib*.deb

/g/gcc-7文件夹中的文件:

sudo dpkg -i lib*.deb

sudo dpkg -i g*.deb

/g/gcc-8文件夹中的文件:

sudo dpkg -i lib*.deb

make离线安装

cd /mnt/usb/pool/main/m/make-dfsg

sudo dpkg -i make_4.1-9.1ubuntu1_amd64.deb

dkms离线安装

cd /mnt/usb/pool/main/d/dkms

sudo dpkg -i dkms_2.3-3ubuntu9.7_all.deb

其余的基本依赖也可以通过此方式进行安装!

无线网卡驱动安装

参考:

Ubuntu-RTL8812BU无线网卡安装

88x2bu

mkdir src && cd src

git clone https://github.com/morrownr/88x2bu.git

cd /88x2bu-5.8.7.4/

sudo ./dkms-install.sh

sudo reboot

————————————————

版权声明:本文为CSDN博主「YuanbaoQiang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qyb19970829/article/details/109596767

[引用3]

Linux 内核切换 grub (Ubuntu)

csdn上很多linux内核切换的文章有些错误和不全的地方. 在这提供两种方法来切换linux内核.

建议全程在root下进行, 新安装的linux可以通过sudo su进入root. 再输入passwd来创建或修改管理员密码

1. 延时启动时的grub页面,手动开启

步骤1: sudo vi /etc/default/grub

vim不熟不会的可以用 sudo gedit /etc/default/grub

打开grub默认设置, 修改其中的 HIDDEN_TIMEOUT = 10, 以及 HIDDEN_TIMEOUT_QUIET = true

步骤2: sudo update-grub

更新配置

步骤3: sudo reboot

重启

步骤4: 在开机过程的灰色页面按下shift键 (不设置1-3,一直重复按也work)

如果不OK, 尝试同时按下ECS+shift

步骤5: 进入到grub设置页面,选择所需内核

reference: https://blog.csdn.net/ken_for_learning/article/details/78848743

2. 修改grub配置文件, 更改启动内核

步骤1: grep menuentry /boot/grub/grub.cfg 查看grub目录

上图展示了部分, 看第一个menuentry开头的行.

标号如下:

注意: 最左边白色标注的是主目录的编号, 右边黑色标注是在主目录1下的子目录. 看缩进或者是submenu来区分子目录

步骤2: sudo vi /etc/default/grub 或 sudo gedit /etc/default/grub

修改GRUB_DEFAULT, 用>来表示子目录

如: 在上图中想切换至 4.6.3内核, 则修改为 GRUB_DEFAULT=1>2

# 可以加个引号"1>2"

或者用上图中 menuentry 后单引号内的名字来索引

如: 相同的切换任务, 修改GRUB_DEFAULT = "1>Ubuntu, with Linux 4.6.3"

或者用submenu后的名字来指定 "Advanced options for Ubuntu>Ubuntu, with Linux 4.6.3"

步骤3: sudo update-grub

步骤4: sudo reboot 重启即可 用uname -r 可查看内核

reference:

https://help.ubuntu.com/community/Grub2/Submenus

https://unix.stackexchange.com/questions/62733/how-to-correctly-set-up-the-right-grub-2-default-menu-entry

深入了解grub: http://www.gnu.org/software/grub/manual/grub/

————————————————

版权声明:本文为CSDN博主「Losk-x」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/Losk_0/article/details/87928072

你可能感兴趣的:(飞腾,飞腾,ubuntu,FT-2000/4,国产CPU)