飛騰FT-2000/4開發(fā)板上移植Ubuntu18.04.5且更換飛騰內(nèi)核4.19.8教程

原文在我公眾號上:?
https://mp.weixin.qq.com/s/Hlpw2B8212o4Zq-4_oeBKw

一、環(huán)境準備

說明:
1.PCIe顯卡是必須的,因為飛騰開發(fā)板沒有顯示,顯卡需自己配,選個AMD主流的顯卡就行。
2.有流量安卓手機是必須的,系統(tǒng)裝起來后,開發(fā)板上是沒有接口可以上網(wǎng)的,唯一上網(wǎng)的方式就是使用安卓手機的“USB共享網(wǎng)絡(luò)”的方式(這個配置在本文下面介紹中有說明)。是不是必須安卓我不知道,因為我買不起蘋果手機……
3.Ubuntu系統(tǒng)只有server服務(wù)器版的支持在arm平臺上安裝,所以需要選擇server版本。
4.因為是在飛騰平臺安裝,所以需要鏡像內(nèi)包含HWE內(nèi)核,18.04系列中,我只載了18.04和18.04.5兩個版本,其中18.04不含HWE內(nèi)核,無法安裝。所以后面嘗試就選擇了18.04中最后一個版本18.04.5來嘗試。如果自己手中有18.04的其他版本,可以看看有沒有HWE內(nèi)核(這個HWE內(nèi)核可以本文下面介紹中看到),要是沒有就選擇18.04.5來搞就好了。
5.UEFI固件怎么搞到啟動用Biso FLASH里不在本文的介紹范圍內(nèi),默認認為提供了UEFI固件,能夠自己搞到開發(fā)板內(nèi)。怎么接ATX電源、SATA硬盤、TTL串口線、鍵鼠這類的也不在本文的介紹范圍內(nèi)。
約定:
1.Linux下所有命令均在root下執(zhí)行。
2.文中Linux下需要輸入的命令均使用淺綠底色展示。
3.所有l(wèi)inux下信息提示均使用斜體展示。
4.所有選擇項均使用加粗展示。
二、Ubuntu系統(tǒng)安裝
2.1 系統(tǒng)盤制作
使用rufus-3.18p.exe將載下來的鏡像ubuntu-18.04.5-server-arm64.iso搞到U盤里,制作系統(tǒng)安裝盤。

2.2 系統(tǒng)安裝
根據(jù)UEFI提示,開發(fā)板加電后,可以按F2、F12等進入啟動配置項,選擇從U盤啟動。

啟動后,選擇Boot and Install with HWE kernel

參考?https://wiki.ubuntu.com/Kernel/RollingLTSEnablementStack?上的介紹,意思就是Ubuntu搞了個HWE的東西,這樣客戶可以保證在不改變ubuntu版本的情況下,在最新的平臺上安裝它。簡言之 HWE kernel 是為了支持最新硬件的解決方案,即 Ubuntu 某個版本發(fā)布以后,出現(xiàn)的新硬件。
進入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環(huán)境下對磁盤分區(qū)進行管理的一種機制,Linux用戶安裝Linux操作系統(tǒng)時遇到的一個常見的難以決定的問題就是如何正確地評估各分區(qū)大小,以分配合適的硬盤空間。普通的磁盤分區(qū)管理方式在邏輯分區(qū)劃分好之后就無法改變其大小,當一個邏輯分區(qū)存放不下某個文件時,這個文件因為受上層文件系統(tǒng)的限制,也不能跨越多個分區(qū)來存放,所以也不能同時放到別的磁盤上。而遇到出現(xiàn)某個分區(qū)空間耗盡時,解決的方法通常是使用符號鏈接,或者使用調(diào)整分區(qū)大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題。隨著Linux的邏輯卷管理功能的出現(xiàn),這些問題都迎刃而解,用戶在無需停機的情況下可以方便地調(diào)整各個分區(qū)大小。






這里應(yīng)該選no automatic updates……

在軟件選擇上這里需要把OpenSSH server選上。

在提示拔出安裝介質(zhì)后,拔了U盤后,continue。開發(fā)板理論上應(yīng)該重啟了,如果開發(fā)板自己沒有重啟,就得靠你的手了。
再次上電后,等半天,系統(tǒng)正常啟動。下面是調(diào)試串口打印信息。

同時可以看到,這個時候顯示器上也是有終端顯示的。

三、安裝GUI
使用USB-typeC線將手機連接到開發(fā)板的USB接口上。打開手機的“usb網(wǎng)絡(luò)共享”,如下圖所示。

在開發(fā)板系統(tǒng)中查看有沒有認出來手機,是不是把手機當成網(wǎng)卡來用了。輸入命令“ip addr”。

由圖中可見,在開啟手機“USB網(wǎng)絡(luò)共享”后,Ubuntu系統(tǒng)內(nèi)多了一個enp4s0u4的網(wǎng)卡。
Dhcp這個網(wǎng)卡,輸入命令“dhclient enp4s0u4”,如果自己板子上ip addr后多的網(wǎng)卡名字不是enp4s0u4,那么這里dhclient的網(wǎng)卡名字enp4s0u4就換成你掃出來的那個名字就行。

再次ip addr后,可以發(fā)現(xiàn)給分了IP了,那么說明就是能用了。
Ping下百度“ping www.baidu.com”,能ping通,說明網(wǎng)絡(luò)正常了。
那就在線安裝gnome吧。輸入命令“apt install ubuntu-gnome-desktop”。
過程中可能報錯如下:

報錯,但是告訴了可以試試?apt --fix-broken install,所以按提示進行fix。

它就一路自己去修復(fù)去了。之后再執(zhí)行命令“apt install ubuntu-gnome-desktop”。
四、飛騰內(nèi)核替換
把飛騰內(nèi)核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下創(chuàng)建一個toolchain 文件夾,并將gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz復(fù)制到/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-
保存并退出。
這里是關(guān)鍵的source下。
Source /etc/profile
同時不放心可以echo $PATH下,看看現(xiàn)在的PATH中有沒有/opt/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin這個路徑。
4.2 編譯飛騰內(nèi)核
內(nèi)核的編譯很簡單,把內(nèi)核linux-phytium-4.19.8.tar.xz搞到自己的一個目錄里,解壓它。
配置內(nèi)核
make menuconfig
可能在這個時候,發(fā)現(xiàn)報錯沒有make命令。

那么就在線apt-get下安裝就好了。
如果make安裝完了,再次make menuconfig又出下面這個錯誤,報沒有l(wèi)ibncurses-dev庫則按這個庫,但是這個只能在線安裝了。

執(zhí)行命令apt-get install libncurses5-dev。
結(jié)果執(zhí)行這個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?的方法執(zhí)行。
# rm /var/lib/apt/lists/lock
# rm /var/cache/apt/archives/lock
# rm /var/lib/dpkg/lock*
# dpkg --configure -a
# apt update
之后就可以再次執(zhí)行安裝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
執(zhí)行命令apt install bison flex。
再次make menuconfig,成啦……

啥都先不改,直接退出保存,其實就是混個.config文件。
之后make,執(zhí)行命令make all -j8。make all就是將內(nèi)核以及模塊一起編譯。后面的參數(shù)-j8表示,cpu要開啟八個線程來編譯內(nèi)核。一般來說,每個核可以開啟兩個線程來編譯內(nèi)核,所以開啟了八個線程。
結(jié)果又報錯,scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory

參考網(wǎng)頁?https://www.cnblogs.com/hjxzjp/p/14702329.html?操作apt-get install libssl-dev,基本原則就是報缺啥咱們就安裝啥。
一個很漫長很漫長的make過程。
安裝模塊,執(zhí)行命令make modules_install
安裝內(nèi)核,執(zhí)行命令make install
4.3 grub啟動修改及內(nèi)核切換
修改/etc/default/下的grub文件文件

注釋掉GRUB_TIMEOUT_STYLE=hidden這句話,
修改GRUB_TIMEOUT=10
取消GRUB_TERMINAL=console這句話注釋,取消這個的注釋很多文檔上都沒說,我猜測可能他們都不是server版,server版我不開這個,界面是沒顯示的。

之后,update-grub

這個命令把咱們的飛騰內(nèi)核搞進去了。同時,這個命令執(zhí)行后,系統(tǒng)會自動修改/boot/grub/grub.cfg文件,開機上顯示的東西,都在這個grub.cfg文件中。
重啟系統(tǒng),在進入ubuntu之前,會出現(xiàn)GNU GRUB的界面,在這個里面選擇“advanced options for ubuntu”,選進去之后,里面就是系統(tǒng)里所有的內(nèi)核了。

要是用飛騰的4.19.8內(nèi)核的話,就選中就好了。

進入系統(tǒng)檢查內(nèi)核,uname -a

內(nèi)核切換成功了!
說明:grub部分的內(nèi)容,重點參考?https://blog.csdn.net/Losk_0/article/details/87928072?[引用3]
https://www.cnblogs.com/dodotititi/articles/4221480.html

個人資料推廣:
最近將多年來收集到的教學(xué)視頻、國內(nèi)外圖書、源碼等整理整合拿出來,
涉及 arm、Linux、python、信號完整性、FPGA、DSP、算法、stm32、
單片機、制圖、電子模塊、kali、出版社圖書等。
資料目前約 1.5TB+。初、中、高不同階段工程師,都能有提升自己的資料。?


分享,讓技術(shù)更偉大!歡迎轉(zhuǎn)發(fā)!?
歡迎飛騰愛好者加入微信交流群。
群內(nèi)大家可以暢所欲言。在群內(nèi)不需要表露自己的公司和身份,可以群內(nèi)交流遇到的問題,分享自己的調(diào)試心得。
希望大家共建飛騰友誼!
