飞腾工控机安装ubuntu

目录

1. 安装Ubuntu

1.1 下载镜像

操作系统是ubuntu20.04server版本,可以在该镜像地址下载。

1.2 制作启动盘

U盘启动盘工具rufus下载地址:rufus

Rufus制作启动盘的步骤如下:

设备一栏选择的是我们准备要用的U盘

选择,引导类型选型,找到所选系统的iso文件

其他默认即可,点击开始安装

rufus在开始安装之后,会弹出对话框询问是采用”ISO Image”还是”DD”模式,”DD”模式安装成功率更高,但是制作的启动盘不能被window系统所识别;后面会询问是否需要”格式化磁盘”,这一步会擦除U盘上的所有数据。

图片1

2. 安装驱动

如果需要用USB无线网卡则需要下载几个支持的工具: http://ports.ubuntu.com/pool/main/w/wpa/wpasupplicant_2.9-1ubuntu4_arm64.deb http://ports.ubuntu.com/pool/main/libn/libnl3/libnl-route-3-200_3.4.0-1_arm64.deb http://ports.ubuntu.com/pool/main/p/pcsc-lite/libpcsclite1_1.8.26-3_arm64.deb

3. 安装后的配置

对于ubuntu 20.04,初次安装的grub有问题,无法显示启动菜单,需要修改配置让grub以文本模式运行,显示倒计时,编辑Grub的配置文件/etc/default/grub ,去掉下面一行最前面的注释字符“#”:

如果您想使用磁盘上剩余的空间,可以在磁盘上创建一个新的分区,并将其挂载到文件系统中

4. 设置网络

4.1 驱动安装

4.1.1 使用飞腾CPU自带网卡

支持飞腾CPU的内核可以完成飞腾自带网卡的驱动, 这种内核一般是在其它机器上编译完内核后打包成的* .deb格式的安装文件,分成内核和内核头文件两个包 。用优盘将两个安装包拷贝到系统中,然后执行dpkg命令安装:

dpkg -i linux-headers-4.19.6-phy_arm64.deb
dpkg -i linux-image-4.19.6-phy_arm64.deb

然后重启设备,在grub菜单中选择”Advance option…” , -> “ubuntu, with linux 4.19.6-phy”,等待启动,由于这个内核包含的驱动较少,所以启动时会显示很多内容不支持,甚至可能会卡住数十秒不动。

4.1.2 免驱动网卡

先用ip link show功能查看系统内现有的网卡,一般只有一个名为“lo”环回接口。然后插入上述网卡(虽然USB口网卡支持热插拔,为稳妥起见,建议重启设备),然后用上述命令再次查看网络接口,如果有新增的,即说明网口驱动成功。

4.1.3 无线网卡驱动安装

无线网卡由于有一个与无线路由器之间的鉴权机制,所以还需要一个叫作wpa_supplicant的软件包支持。需要从网上下载以下文件并用优盘拷贝到本设备安装。

dpkg -i ./libnl-route-3-200_3.4.0-1_arm64.deb
dpkg -i ./libpcsclite1_1.8.26-3_arm64.deb 
dpkg -i ./wpasupplicant_2.9-1ubuntu4_arm64.deb

4.2 网卡设置IP地址

各类型网卡驱动成功后,就需要配置IP地址,可以先临时配置一个IP地址,先ping一下网关看是否通,然后再配置正式的地址。输入ip link show命令查看,如果除了lo环回网卡外,还能看到其它序号从2开始的其它网卡,说明网卡驱动成功了。这里以飞腾CPU自带网卡为例,看到的内容如下,网卡名称为enaphyt4i0和enaphyt4i1。

4.2.1 临时动态IP地址

dhclient enaphyt4i0
dhclient enaphyt4i1

4.2.2 静态IP地址设置

使用netplan固定IP。

5 docker安装

sudo apt-get install ca-certificates curl gnupg lsb-release

安装docker

apt-get install -y docker.io

启动服务:

systemctl start docker

设置开机启动docker

systemctl enable docker

安装arm架构的ubuntu

Getting started with Docker for Arm on Linux

Install Docker Engine on Ubuntu

卸载旧的版本:

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
curl -fsSL test.docker.com -o get-docker.sh && sh get-docker.sh

-o get-docker.sh 指定输出文件名为get-docker.sh

&& sh get-docker.sh 执行get-docker.sh

启动docker

systemctl enable docker
#启动Docker服务:
systemctl start docker

6. 编译内核

安装编译必须的程序和库

apt install build-essential libncurses5-dev bison flex libssl-dev

解压缩内核源码

tar -zxvf linux-4.19.tar.gz

打补丁

cd linux-4.19
patch -p1 < ../patch-phytium-4.19.11

patch-phytium-4.19.11.rar文件的解压缩如下:

sudo apt-get install rar
sudo apt-get install unrar
unrar x patch-phytium-4.19.11.rar 

内核的配置选项极多,内核补丁给内核添加了几个适合飞腾CPU的缺省的配置文件,可以使用修改好的config_d2000_linux-4.19-example进行缺省配置:

cp ../config_d2000_linux-4.19-example .config
make oldconfig

如果当前内核的版本与以前配置的内容有差异,会提示用户输入差异的处理方式,是编译或者不编译,所以这种方法适合参考的配置文件与当前内核版本差别小的情况,否则手工输入大量的差异将是很繁琐的事情。

然后运行如下命令:

make menuconfig
make -j8 # lscpu查看cpu核心数

这段代码含义是:编译内核,使用8个线程,编译内核模块,编译完成后安装内核模块,安装内核模块的路径为/lib/modules/4.19.11,安装内核的路径为/boot/vmlinuz-4.19.11,安装内核的配置文件为/boot/config-4.19.11,安装内核的系统映像文件为/boot/System.map-4.19.11,安装内核的头文件为/usr/include/linux-4.19.11。

编译完成之后安装驱动模块:

make modules_install

安装内核:

make install

修改启动项

vim /etc/default/grub

新编译的内核会自动加入grub启动菜单,下次启动时可手工选择新编译的内核,如果没有启动成功,还可以选择缺省的旧内核。如果启动成功,可以修改grub的配置文件/etc/default/grub,找到下面一行 GRUB_DEFAULT=0 把最后的数字0改为欲启动的选项的编号,例如1。修改完后执行update-grub更新启动配置。

7. 问题

netplan问题

** (generate:5165): WARNING **: 06:56:46.538: Problem encountered while validating default route consistency.Please set up multiple routing tables and use `routing-policy` instead.
Error: Conflicting default route declarations for IPv4 (table: main, metric: default), first declared in enaphyt4i1 but also in enaphyt4i0

** (process:5163): WARNING **: 06:56:47.013: Problem encountered while validating default route consistency.Please set up multiple routing tables and use `routing-policy` instead.
Error: Conflicting default route declarations for IPv4 (table: main, metric: default), first declared in enaphyt4i1 but also in enaphyt4i0

配置文件如下:

# This is the network config written by 'subiquity'
network:
  version: 2
  renderer: networkd
  ethernets:
    enaphyt4i0: 
      optional: yes
      dhcp4: no
      addresses: [192.168.1.101/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
    enaphyt4i1:
      optional: yes
      dhcp4: no
      addresses: [192.168.1.102/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]

解决方法:

们为每个接口指定了唯一的路由表和默认路由。请注意 routes 和 routing-policy 部分。routes 部分指定了默认路由表和默认路由。routing-policy 部分指定了从哪个子网访问路由表。在这个例子中,我们使用了不同的路由表编号(101 和 102),并且为每个接口指定了唯一的路由策略。

# This is the network config written by 'subiquity'
network:
  version: 2
  renderer: networkd
  ethernets:
    enaphyt4i0:
      optional: yes
      dhcp4: no
      addresses: [192.168.1.101/24]
      routes:
        - to: 0.0.0.0/0
          via: 192.168.1.0
          table: 101
      routing-policy:
        - from: 192.168.1.0/24
          table: 101
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
    enaphyt4i1:
      optional: yes
      dhcp4: no
      addresses: [192.168.1.102/24]
      routes:
        - to: 0.0.0.0/0
          via: 192.168.1.0
          table: 102
      routing-policy:
        - from: 192.168.1.0/24
          table: 102
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]

但是这样配置之后,没办法访问外网,ping不通外网。

无法启动

其中一台机器安装了4.19的内核之后启动不了:

其中一台启动之后出现企鹅排队的画面,等待一段时间可以进入系统(显示屏变成白色,等待一段时间之后可以看到登录界面)。

但是,另外一台机器启动之后现企鹅排队的画面,等待一段时间之后显示屏变成白色,但是无法进入系统。(手册显示可能会卡住数十秒不动;但是我的这台机器可能卡住很久都不动)。在grub菜单中选择”Advance option…” , -> “ubuntu, with linux 4.19.6-phy”,还是”ubuntu, with linux 4.19.0”,都无法进入系统。

是installing virtual address map出错吗?

ssh连接不上

假设工控机两个网口地址为192.168.1.100和192.168.1.103,使用远程机器ssh连接有时候连接不上(ssh test01@192.168.1.103),但是ping 192.168.1.103可以ping通。

显示信息如下:

kex_exchange_identification: read: Connection reset by peer
Connection reset by 192.168.1.103 port 22

可能原因:服务器禁止了我这个IP进行连接,所以把这个IP删除就可以。 解决办法如下:

vi /etc/hosts.deny  

如果这个文件中存在你的电脑IP的话,把那个IP从这个文件中删除就可以,然后安ESC退出,:q进行保存即可。 hosts.deny文件中没有内容。

解决方法二:

ssh-keygen -R XXX.XXX.XXX.XXX                      //  XXX.XXX.XXX.XXX 为要登陆主机的IP地址

还是不行,显示

cannot start /root/.ssh/known_hosts: No such file or directory

解决方法三:

https://www.cnblogs.com/lfri/p/15257145.html

vim /etc/hosts.allow # 添加ssh:ALL

重启ssh服务

service sshd restart

可能原因二:

https://help.aliyun.com/document_detail/41485.html

可能原因三: 端口没有对外开放

sudo ufw allow 22

或者

/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT

可能解决方法:

ssh -vvv test01@192.168.1.103

这将在终端中显示 SSH 连接的详细日志信息,包括连接过程中发送和接收的所有消息。根据日志信息,你可以更好地了解连接失败的原因,并采取相应的措施来解决问题。

使用 telnet 命令测试目标主机的 SSH 端口是否可用:

telnet 192.168.1.103 22

如果你使用了 SSH 密钥对进行身份验证,请确保你的公钥已经添加到目标主机的授权文件中。

ssh-copy-id -i ~/.ssh/id_rsa.pub test01@192.168.1.103

两个网口只能ssh其中一个

编译好内核之后apt install任何包裹都报错

libnl-route-3-200 : Depends: libnl-3-200 (= 3.4.0-1) but 3.4.0-1ubuntu0.1 is to be installed

固定了IP地址之后,无法访问外网,但是可以访问内网。

例如,安装docker失败:(包括apt upgrade) libnl-route-3-200?

解决方法: 先安装docker再配置内核?

Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 docker.io : Depends: containerd (>= 1.2.6-0ubuntu1~) but it is not going to be installed
             Recommends: pigz but it is not going to be installed
             Recommends: ubuntu-fan but it is not going to be installed
 libnl-route-3-200 : Depends: libnl-3-200 (= 3.4.0-1) but 3.4.0-1ubuntu0.1 is to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

例如,wpasupplicant安装失败,报错提示如下:

libnl-route-3-200: arm64is not configured yet

解决方法:

下载libnl-route-3-200_3.4.0-1ubuntu0.1_arm64.deb

还有这个:

libnl-3-200_3.4.0-1ubuntu0.1_arm64.deb

然后安装:

dpkg -i libnl-route-3-200_3.4.0-1ubuntu0.1_arm64.deb

网口不能自动启动

每次都需要dhclient来启动网口。

卸载docker

apt remove docker.io

网络配置好之后过一段时间无法ping通外网

dhclient -r
dhclient

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦