环境
操作系统:Debian 12 BookWorm、银河麒麟(Kylin)V10 SP1 2303、红旗(RedFlag) V11、优麒麟 Ubuntu Kylin 22.04
适用架构:ARM64(华为鲲鹏 920、飞腾腾锐 FT-2000/4、D2000、D3000)
简介
openKylin 官方的安装包是不能在 ARM64 上直接使用的。目前仅适配了树莓派等开发板。所以,想要在 ARM64 的电脑安装 openKylin 需要使用一些其他的方法。
方法一、DebootStrap
该方法适用于 UEFI 启动,也适用于固件和 UBoot 。文中以 UEFI 为范例。
首先安装一套 ARM 版的操作系统,比如,银河麒麟(Kylin)、红旗(RedFlag)、统信(UOS)、 Debian ……
本文以银河麒麟为范例。
麒麟(Kylin)下载,http://www.kylinos.cn/。申请试用后,个人版免费。
红旗(RedFlag)下载,http://www.linuxsir.cn/?download.htm 直接下载。
统信(UOS)下载,https://www.chinauos.com/。申请试用后,90 天内免费。
Fedora 可以参考《为龙芯电脑安装 Fedora》https://my.oschina.net/chipo/blog/1833900。
Debootstrap 是一个可以快速获得基本 Debian 系统的一个工具,可以将 Debootstrap 看作是一种特殊的安装工具。它不同于 Debian Installter , 不需要安装用的 CD/DVD ISO, 仅需连接到 Debian 软件仓库,软件仓库简介 (英文) . 无论你是否使用 Debian , 只要是任何的 Linux/GNU 发行版,例如 Fedora/Gentoo/Arch/OpenSUSE, 甚至是 Ubuntu , 均可运行 Debootstrap . 当然如果你正在使用 Ubuntu , 你一定到 Debian 的软件仓库下载一个 Debootstrap , 而不能使用 Ubuntu 自己的 debootstrap。
详见:《Debian 安装工具 Debootstrap 简介》https://my.oschina.net/chipo/blog/4318218
描述
Debootstrap 通过运行 SCRIPT 脚本从 MIRROR 引导一个发行版代号(codename)为 SUITE 的 Debian 基础系统安装到 TARGET 目录。
[MIRROR] 可以是 http:///URL,或是 file:///URL,或是 ssh:///URL。(注意都是’///’)
openKylin 发行版的部分代号,yangtze(1.0 扬子江 / 长江),nile(2.0 尼罗河)。
详见,http://archive.build.openkylin.top/openkylin/dists/
Debootstrap 可以在没有安装盘的情况下在一个已启动的系统上部署一个 openKylin 系统并运行在 chroot 环境。如此可以支持一个完全体 (或最小化) openKylin 系统用以测试 (比如 OS 安装程序调试)。但如果只是需要一个编包环境还是用 pbuilder 好点。
1、创建新的硬盘分区
给 openKylin 划出硬盘分区,建议准备一个单独的硬盘。然后通过命令行挂载,建议不要使用图形化的文件管理工具挂载,因为安装过程可能会报错。
1.1 命令行分区工具
使用命令行工具为新硬盘创建分区(假设为 /dev/sdb,分区表为 GPT)。如果内存在 8G 以上,可以不用 swap 分区,看个人喜好吧。这里以 128G 硬盘为范例。
sudo parted /dev/sdb
(parted) mklabel gpt
(parted) mkpart ESP fat32 1MiB 500MiB
(parted) mkpart boot ext4 500MiB 5000MiB
(parted) mkpart root ext4 5000MiB 120000MiB
(parted) mkpart swap 112GB 100%
(parted) set 1 boot on
(parted) quit
sudo partprobe /dev/sdb
sudo mkfs.vfat -F 32 /dev/sdb1
sudo mkfs.ext4 /dev/sdb2
sudo mkfs.ext4 /dev/sdb3
sudo mkswap /dev/sdb4
1.2 图形化分区工具
使用分区工具 Gparted(分区编辑器)为新硬盘创建分区(假设为 /dev/sdb,分区表为 GPT)。在右侧下拉框中选中新的空白硬盘。点击 “设备”、“创建分区表”,选择 “GPT”。
分区表建议:UEFI 主板选择 “GPT”,固件和 PMON 选择 “MBR”。这里以 512G 硬盘为范例。
分区、新建、新大小选择 “1000M” 左右就可以了,文件系统选择 “fat32”,分区名称 “ESP”。点击 “应用”。
选中刚才的分区,点击 “分区”、“管理标识”、勾选 “esp”。
分区、新建、新大小选择 “10000M” 左右就可以了,文件系统选择 “ext4”,分区名称 “boot”。点击 “应用”。作为 /boot 分区。
分区、新建、新大小选择 “440000M” 左右就可以了,文件系统选择 “ext4”,分区名称 “root”。点击 “应用”。作为根 “/” 分区。
分区、新建、新大小选择 “27000M” 左右就可以了,文件系统选择 “linux-swap”。点击 “应用”。作为交换分区。
2、安装 Debootstrap
安装 debootstrap 工具。
sudo apt install debootstrap
银河麒麟 V10 SP1 请检查软件包的版本(1.0.118 及以上)。
http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/d/debootstrap/
sudo dpkg -i debootstrap*.deb
创建安装脚本。
sudo ln -s /usr/share/debootstrap/scripts/gutsy /usr/share/debootstrap/scripts/yangtze
sudo ln -s /usr/share/debootstrap/scripts/gutsy /usr/share/debootstrap/scripts/nile
创建挂载新分区用的文件夹。
sudo mkdir -p /mnt/openKylin
挂载分区至刚才建好的文件夹。
sudo mount /dev/sdb3 /mnt/openKylin
“/dev/sdb3” 为新硬盘规划为根分区 “/” 的路径。
添加 openKylin 的钥匙环。
安装密钥 http://archive.build.openkylin.top/openkylin/pool/main/o/openkylin-keyring/
openkylin-keyring_2022.05.12-ok1_all.deb
sudo dpkg -i openkylin-keyring*.deb
3、安装 openKylin
执行 openKylin 安装命令。安装 2.0 nile 或者 1.0 yangtze。
如果目标磁盘已有文件,请先删除。
sudo rm -rf ./bin ./boot ./debootstrap ./dev ./etc ./home ./lib ./media ./mnt ./opt ./proc ./root ./run ./sbin ./srv ./sys ./tmp ./usr ./var
如果仅安装基本系统,没有 GUI 图形桌面,执行命令。并支持 UEFI、GPT 分区表、EFI 分区、GRUB 及中文。
sudo debootstrap --arch=arm64 --no-check-gpg --include=dosfstools,mtools,locales,fonts-noto-cjk,fonts-noto-mono,fonts-noto-cjk-extra,nano nile /mnt/openKylin http://archive.build.openkylin.top/openkylin
sudo debootstrap --arch=arm64 --no-check-gpg --include=dosfstools,mtools,locales,fonts-noto-cjk,fonts-noto-mono,fonts-noto-cjk-extra,nano,network-manager yangtze /mnt/openKylin http://archive.build.openkylin.top/openkylin
推荐安装 KDE 桌面环境(--include=task-kde-desktop),执行以下命令,
sudo debootstrap --arch=mips64el --include=dosfstools,mtools,grub-common,locales,powerdevil,xfonts-wqy,fonts-noto-cjk,fonts-noto-cjk-extra,fonts-noto-mono,xfonts-intl-chinese,task-kde-desktop,xorg,kwin-x11,systemsettings,ksysguard,plasma-workspace-wayland,kwin-wayland,kde-config-screenlocker,plasma-nm,firefox-esr,lvm2,initramfs-tools,nemo,gnome-disk-utility,gparted,exfatprogs,kscreen --components=main,nonfree,contrib,restricted,multiverse,universe bullseye /mnt/debian https://mirrors.tuna.tsinghua.edu.cn/debian
“/mnt/openKylin” 是刚才挂载的路径。“http://archive.build.openkylin.top/openkylin” 是官方网站或镜像站的地址。(推荐清华 TUNA、华为云等镜像站)总的文件容量大约 1GB 左右。下载的安装文件将保存在目标磁盘的 /debootstrap 和 /var/cache/apt/archive 中。
其他图形桌面环境和桌面管理器
Gnome 和 GDM:task-gnome-desktop
MATE 和 LightDM:task-mate-desktop
UKUI 和 LightDM:详见后文
4、挂载新硬盘的其他分区
sudo mount /dev/sdb2 /mnt/openKylin/boot
sudo mkdir -p /mnt/openKylin/boot/efi
sudo mount /dev/sdb1 /mnt/openKylin/boot/efi
sudo mount -o bind /dev /mnt/openKylin/dev
sudo mount -t proc proc /mnt/openKylin/proc
sudo mount -t sysfs sys /mnt/openKylin/sys
sudo cp -r /boot/efi/. /mnt/openKylin/boot/efi/
ChRoot 之后,
mount -t btrfs /dev/sda5 /
mount -t vfat /dev/sda6 /boot/efi
lsblk
如果是 Debian 系统,请执行以下命令,重新生成 GRUB 引导文件。
grub-mkconfig -o /boot/efi/EFI/BOOT/grub.cfg
dpkg-reconfigure grub-efi-arm64
openKylin 系统里,
update-grub2
以下挂载不是必须的。
sudo mount -t devpts /dev/pts /mnt/openKylin/dev/pts
sudo mount -t tmpfs tmpfs /mnt/openKylin/tmp
后期如果需要继续在 Kylin、UOS、openEuler 中维护 openKylin,可以连续挂载分区,注意:不能颠倒顺序。
sudo mount /dev/sdb3 /mnt/openKylin && \
sudo mount /dev/sdb2 /mnt/openKylin/boot && \
sudo mount /dev/sdb1 /mnt/openKylin/boot/efi
或者 BtrFS 分区
sudo mount /dev/sda5 /mnt/debian && \
sudo mount /dev/sda6 /mnt/debian/@rootfs/boot/efi && \
sudo mount -o bind /dev /mnt/debian/@rootfs/dev && \
sudo mount -t proc proc /mnt/debian/@rootfs/proc && \
sudo mount -t sysfs sys /mnt/debian/@rootfs/sys
5、下载一些必要的文件至 openKylin
银河麒麟版的内核
内核文件可以从安装光盘或安装的好本地操作系统中复制出来,也可以从软件仓库下载。
软件仓库,http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/l/linux/,(建议使用下边指定的版本,更高版本的内核没有通过测试)
linux-headers-5.4.18-85_5.4.18-85.74_all.deb
linux-headers-5.4.18-85-generic_5.4.18-85.74_arm64.deb
linux-image-5.4.18-85-generic_5.4.18-85.74_arm64.deb
linux-modules-5.4.18-85-generic_5.4.18-85.74_arm64.deb
新开一个终端,使用 Apt 下载。
sudo apt download linux-image-5.4.18-85-generic linux-modules-5.4.18-85-generic
将下载好的文件复制到本地已安装的 openKylin 的系统目录中去,这里选择 /home。
sudo cp -r linux-*.deb /mnt/openKylin/home/
回到 ChRoot 。
sudo apt install linux-firmware
cd home
sudo dpkg -i linux*.deb
可以使用 tree 命令查看目录结构。
tree -L 3 /mnt/openKylin/
安装完成后的目录结构类似如下所示,不完全一致也没关系,包括红字部分就可以。
root
├── boot
│ ├── boot -> .
│ ├── efi
│ ├── grub -> /boot/grub2
│ ├── grub2
│ ├── grub.cfg
│ ├── grub.efi
│ ├── initrd.img-4.19.161
│ └── vmlinuz-4.19.161
├── etc
│ ├── default
│ ├── fstab
│ └── grub.d
└── lib
├── firmware
└── modules
如果想单硬盘独立启动,请复制启动文件至 Debian 的分区。
sudo cp -r /boot/efi/* /mnt/openKylin/boot/efi
可以使用 tree 命令查看目录结构。
tree -L 3 /mnt/openKylin/boot/efi
目录结构类似如下所示,至少要包括红字部分。
/boot/efi
├── BOOT
│ ├── BOOTMIPS.EFI
│ └── fonts
└── EFI
└── BOOT
├── BOOTMIPS.EFI
├── fonts
└── grub.cfg
6、ChRoot 切换到 openKylin。
sudo chroot /mnt/openKylin
export HOME=/root
解决 “找不到命令” 的问题。
nano /etc/profile
在最后添加下边一行语句。
export PATH=/sbin:PATH=/usr/sbin:$PATH
完成后,保存,退出。
添加计算机名解析。比如登录状态是 root@kunpeng,则 kunpeng 是计算机名。
nano /etc/hosts
加入一行,
127.0.0.1 kunpeng
保存后,退出。
更新一下环境。
source /etc/profile
安装 GRUB。
apt install grub2-common
如果提示依赖错误,请从当前的银河麒麟系统里使用 apt 命令下载 deb 安装包进行补充。比如,Depends: libfuse3-3 (>= 3.2.3) but it is not installable
启动一个新终端,进入 openKylin 根目录后下载 libfuse3-3 。
cd /mnt/openKylin
apt download libfuse3-3
关闭新终端,返回 chroot 执行安装。
dpkg -i libfuse3-3.deb
再次安装 GRUB。
apt install grub2-common
安装内核固件,http://archive.kylinos.cn/kylin/KYLIN-ALL/pool/main/l/linux-firmware/
apt install linux-firmware
在 fstab 写入分区信息
支持 EFI 分区的 FAT32 格式。编辑负责自动加载磁盘的文件。
sudo nano /etc/fstab
范例 1:(UUID,建议使用此方式)
# file system mount type options dump pass
UUID=xx-xx / ext4 defaults 0 1
UUID=xx-xx /boot ext4 defaults 1 2
UUID=xx-xx /boot/efi vfat defaults 0 2
UUID=xx-xx swap swap defaults 0 1
请将 xx-xx 替换为硬盘分区对应的 UUID 数值。可以在 GParted 中,右键点击分区,选择 “信息” 查看 UUID。
范例 2:(使用路径)
# file system mount point type options dump pass
/dev/sda3 / ext4 defaults 0 1
/dev/sda2 /boot ext4 defaults 1 2
/dev/sda1 /boot/efi vfat defaults 0 2
/dev/sda4 swap swap defaults 0 1
如果选择使用双硬盘启动,可能要将 sda 替换为 sdb。请根据实际情况设置。
保存后,退出 nano。
详见《fstab 简介》https://my.oschina.net/chipo/blog/4318246
安装和配置 GRUB2
进入 Debian 系统之后,为解决 GRUB 的兼容性问题,建立几个软链接。
sudo mkdir -p /boot/grub2
新建 GRUB 默认设置文件。
sudo nano /etc/default/grub
填写下列内容。
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_CMDLINE_LINUX="quiet splash loglevel=0 LANG=zh_CN.UTF-8"
GRUB_DISABLE_RECOVERY="true"
生成新的 grub.cfg 预览。
编辑 GRUB 文件,添加 openKylin 启动内容。
sudo nano /boot/efi/EFI/BOOT/grub.cfg
只使用 Debian 一块硬盘,还是同时使用 Debian 和银河麒麟(或统信 UOS)两块硬盘,请用户自己决定。这里请指向需要默认引导的硬盘的 grub.cfg 文件。
范例:(加粗的红字是重点)
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-15bb7a43-eb24-4d20-b908-79ced1eb29d7' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
echo 'Loading Linux ...'
linux /vmlinuz-5.4.18 root=UUID=xxxx-xxxx ro rhgb quiet LANG=zh_CN.UTF-8
}
注意:“set root='hd0,gpt2'” 中的路径是指内核的二进制文件 vmlinuz-5.4.18 所在的位置,也就是 Debian 系统的 boot 分区。
'hd0' 是 0 号磁盘,'gpt2' 是 2 号 GPT 分区。“UUID=xxxx-xxxx” 请修改为 /dev/sda3 的 UUID。当然,也可以使用类似 “root=/dev/sda3” 这样的路径。
详见《GRUB2 基础教程 - 修订版》https://my.oschina.net/chipo/blog/4317936
7、用户
7.1 为 root 设置密码
passwd root
请输入 2 遍设置的密码。
7.2 创建普通用户
openKylin 不能以 root 用户登录,所以创建一个普通用户,登录系统后再切换到 root 用户。
adduser admin
“admin” 为新添加的用户名。
请输入 2 遍设置的密码。
按提示输入用户的其他信息。
Changing the user information for lio
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
如果信息无误,输入 “Y”,结束。
如果需要再次设置密码,请执行以下命令。
passwd admin
7.3 将当前用户添加到 sudoer
获取 /etc/sudoers 文件的写权限
# chmod u+w /etc/sudoers
编辑配置文件
# nano /etc/sudoers
在 % sudo ALL = (ALL:ALL) ALL 这一行下边加入自己的用户名,比如 loogson。
loogson ALL=(ALL:ALL) ALL
保存退出。
修改 /etc/sudoers 文件属性为只读。这时就可以使用 sudo 命令了。
sudo chmod -w /etc/sudoers
8、添加中文支持
运行 LOCALE 命令检查当前的 LOCALE 环境
# locale
然后进行配置,命令为:dpkg-reconfigure locales
出现提示时 Locales to be generated:
输入
160 491 492 493 494
对于我们来说,选择以下几种编码已经够用:
en_US.UTF-8 UTF-8
zh_CN GB2312
zh_CN.GB18030 GB18030
zh_CN.GBK GBK
zh_CN.UTF-8 UTF-8
回车键,转跳至默认语言设置页面
在设置默认编码时选择:zh_CN.UTF-8
回车键确认,出现下方
Generating locales (this might take a while)...
en_US.UTF-8... done
zh_CN.GB2312... done
zh_CN.GBK... done
zh_CN.UTF-8... done
Generation complete.
出现 Generation complete. 即表示生成完成。
时区
我们把时区改到中国使用的东 8 区。
sudo dpkg-reconfigure tzdata
选择 “Asia”、“Shanghai”。
退出 chroot
现在返回 银河麒麟或统信 UOS 操作系统。
sudo cp /boot/initrd.img-5.4.18-85-generic /mnt/openKylin/boot/
sudo cp /boot/initrd.img-5.4.18-85-generic /mnt/openKylin/boot/initrd.img-5.4.18-85-generic.bak
登录 Debian
保存后,重启计算机。启动时选择 “Debian GNU/Linux”。
如果不能启动引导,请参考《龙芯的 UEFI 主板上,为使用 GPT 分区的硬盘,设置启动引导》https://my.oschina.net/chipo/blog/4318265
如果启动遇到问题,请使用 journalctl 查看启动日志。
GRUB
sudo grub-mkconfig
请仔细检查文档,如果没有问题,则写入到配置文档。建议备份 grub.cfg。
sudo cp /boot/efi/EFI/BOOT/grub.cfg /boot/efi/EFI/BOOT/grub.cfg.bak
执行更新命令。
sudo grub-mkconfig -o /boot/efi/EFI/BOOT/grub.cfg
操作系统会自动生成新的启动配置文件,开机后在菜单中就可以选择 Debian 了。
详见《GRUB2 基础教程 - 修订版》https://my.oschina.net/chipo/blog/4317936
initrd
sudo apt install initramfs-tools
可以更新一下 initrd 文件,但这不是必须的。
执行更新命令,“4.19.161” 是内核的版本号。
sudo update-initramfs -c -k 4.19.161
升级至 Bullseye
这一步请根据个人需求决定是否进行。
sudo nano /etc/apt/sources.list
将 “buster” 修改为 “bullseye”,保存后退出。
sudo apt update
sudo apt full-upgrde
按照提示进行升级就可以了。最后,重启计算机。
如果遇到登录后壁纸不能正常显示,WiFi 连接不上等问题,不要慌张,再重启一遍就好了。
Fcitx 5
需要 Debian Bullseye(11) 以上的版本,安装方法参考《fcitx5 小企鹅输入法的安装》https://my.oschina.net/chipo/blog/4339067
KDE Plasma
为了提高安装速度,在 Debootstrap 时,只安装了 KDE 的核心组件,如果需要安装完整版 KDE Plasma 请执行以下命令。
sudo apt install kde-full
硬解视频
通过显卡解码视频可以减轻 CPU 的负担,请参考以下文章
Debian,《在优麒麟或 Debian 中,硬解 1080P 或 4K 视频》https://my.oschina.net/chipo/blog/3030388
Fedora,《龙芯平台硬解 1080 和 4k 视频》https://my.oschina.net/chipo/blog/3050783
更新浏览器
默认的语言为英文,在菜单 “Preferences” 中 “Language” 选择 “Chinese (China)”,然后点击 “Add”。
其他 FireFox 版本
通过以下的两个链接中的任意一个查找新版本。ESR 长期支持版中如果有的话,建议优先使用,下载后安装。
https://mirrors.tuna.tsinghua.edu.cn/debian/pool/main/f/firefox-esr/
如果想要硬解视频建议下载 84 及以上版本的 Firefox。
https://mirrors.tuna.tsinghua.edu.cn/debian/pool/main/f/firefox/
龙芯浏览器
浏览器是桌面应用的核心 API 软件,龙芯中科早在 2011 年就开始组建浏览器研发团队开展基于 gecko、blink 等内核浏览器产品的研发。一方面以开源社区为导向,及时集成社区最新的功能特性、安全漏洞更新,同时积极回馈代码到开源社区,截止目前龙芯浏览器团队已经向各开源社区提交了大量代码,并实时维护主要社区的 mips 分支。另一方面以产品为导向,基于龙芯处理器定制浏览器产品,为各大操作系统平台提供安全可靠的浏览器,并为厂商提供产品应用解决方案,如 flash for mips 等。
主页,http://www.loongnix.cn/index.php/Lbrowser
下载,http://ftp.loongnix.cn/browser/lbrowser/
建议下载 3.0 以上,后缀为 stable.lnd_mips64el.deb 的版本。
如果需要通过代理接入互联网,请使用如下命令启动程序。
chromium --proxy-server="socks5://IP:1080"
IP 是代理服务器的地址。
如果播放视频时遇到颜色异常,比如彩色变成单色。请参考下边的设置。
修改 /etc/drirc,如果没有 drirc 这个文件,就新建 1 个。
sudo nano /etc/drirc
添加下边的文本
<application name="Default">
<option name="allow_rgb10_configs" value="false"/>
</application>
保存文件后,重启浏览器。
360 浏览器
https://browser.360.cn/se/linux/index.html
sudo dpkg -i browser360*.deb
其他浏览器
还有其他浏览器可以使用,比如 epiphany-browser、konqueror……
参考文献:
《GRUB2 基础教程 - 修订版》https://my.oschina.net/chipo/blog/4317936
《详解 Linux 下的自动挂载文件 /etc/fstab》https://blog.csdn.net/YSBJ123/article/details/81704496
《在龙芯电脑制作 debian 系统(MIPS)》https://blog.csdn.net/mxcai2005/article/details/100009366
《在龙芯 3A3000 上安装 Debian 10》https://blog.csdn.net/weixin_44723661/article/details/100739245
《Fcitx》,https://wiki.archlinux.org/index.php/Fcitx5_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
《快快升级 fcitx5,新一代输入法框架》https://www.jianshu.com/p/2fdc6cc2aa8d
http://tieba.baidu.com/p/5299811786
https://www.jianshu.com/p/fbd0393e5703
https://www.cnblogs.com/tan-y-q/p/10800241.html
https://d-i.debian.org/manual/zh_CN.mips64el/index.html
http://www.loongnix.org/index.php/Loongson_Kernel_Compile
《Install Ubuntu in UEFI mode with debootstrap》https://maple52046.github.io/2017/11/03/Install-Ubuntu-in-UEFI-mode-with-debootstrap/