最近做了信创系统的无人值守部署系统,包括麒麟,龙芯和统信3个国产操作系统,本次先介绍麒麟的,龙芯loongnix和统信UOS1060版本的会在下次介绍。

镜像准备

直接官网下载,按照自己的平台芯片下载对应的镜像【Kylin-Desktop-V10-SP1-General-Release-2203-ARM64.iso】

下载后将镜像文件解压到/kylin_folder/目录下
mkdir -p /kylin_folder
mkdir -p /mnt/tmp
mount /home/Kylin-Desktop-V10-SP1-General-Release-2203-ARM64.iso /mnt/tmp
cp -ra /mnt/tmp /kylin_folder/kylin_arm_2203

tftp内核准备

mkdir -p /var/lib/tftpboot/boot/kylin_arm_2203/
cp /mnt/tmp/casper/vmlinuz /var/lib/tftpboot/boot/kylin_arm_2203/
cp /mnt/tmp/casper/initrd.lz /var/lib/tftpboot/boot/kylin_arm_2203/
umount  /mnt/tmp

NBP准备

arm系统需要准备对应的网络启动文件,在镜像中一般自带,把它取出来放到tftp服务器
,并且需要在DHCP服务器更改option67指向该文件

cp /kylin_folder/kylin_arm_2203/boot/grub/arm64-efi/monolithic/grubnetaa64.efi /var/lib/tftpboot/armboot.efi

麒麟deb文件显示与安装架构不符 麒麟v10安装deb_麒麟deb文件显示与安装架构不符

grub文件准备

vi /var/lib/tftp/grub/grub.cfg
###
default=autoinstall
timeout=5
timeout_style=menu
d=autoinstall

menuentry "Auto - kylin - Installer"  {
    echo "Start install  kylin_v10_arm_2203"
    echo "Loading Kernel..."
    linux /boot/kylin_arm_2203/vmlinuz boot=casper locale=zh_CN quiet splash audit=0 ip=dhcp netboot=nfs nfsroot=xx.xx.xx.xx:/kylin_folder/kylin_arm_2203/ security= automatic-ubiquity console=tty
    echo "Loading Ram Disk..."
    initrd /boot/kylin_arm_2203/initrd.lz
}


###

NFS服务准备

我的服务搭建在ubuntu上,可以直接使用命令安装,并为开启挂载点

sudo apt update
sudo apt install nfs-kernel-server -y
# 指定挂载点,并赋予权限
sudo vi /etc/exports
/kylin_folder  *(rw,sync,no_subtree_check,no_root_squash)  

#注1:/nfs/rootfs  要共享的目录
#注2:*  所有主机都可以共享该目录
#注3:(rw,sync,no_subtree_check,no_root_squash)  访问该目录的主机拥有的权限
# rw                具有读写权限
# sync              文件同步写入到内存和硬盘
# no_subtree_check  不检查子目录权限  子目录与顶层目录具有相同的权限
# no_root_squash    如果客户端是root的话,那么他对这个共享目录具有root的权限

无人值守流程文件准备

cfg配置文件:
麒麟系统有自己单独的一套无人值守安装的流程文件,在文件夹根目录,固定命名为ky-installer.cfg,一般光盘内不会自带,直接编辑生成,网上也有很多,可以根据需求做一些自定义适配

vi /kylin_folder/kylin_arm_2203/ky-installer.cfg

[Encrypty]
# true开启加密,false 为关闭
encrypty=false
# 加密密钥,如 qwer1234
encryptyPWD=@ByteArray(abcd@1234)
# true开启lvm逻辑卷安装(不常用),false 为非逻辑卷安装(常用)
lvm=false


[config]
# 自动登陆,0 为不自动登录
autologin=0
# 自动安装,不用改动
automatic-installation=1

# 全盘安装指定设备,默认为/dev/sda,若需指定安装设备,将/dev/sda替换成指定设备名即可;
# (推荐)若不填磁盘设备名(将下面设备名/dev/sda去掉),系统会默认选择合适磁盘安装。默认磁盘优先级:先最大nvme盘,再最大固态sdX盘,最后最大机械sdX盘
devpath=
# 使用 swapfile 替代swap分区,false 为不使用 swapfile,990/9A0 使用swapfile
enable-swapfile=false
# 出厂备份,0 为不出厂备份
factory-backup=0
# 主机名,仅包含字母、数字、下划线和连接符,长度不超过 64
hostname=Kylin
# 语言,默认为中文
language=zh_CN
# 密码,默认为 qwer1234,至少 8 位,至少包含两类字符
password=@ByteArray(abcd@1234)
#配置安装完成是否重启。1表示重启,0表示关机
reboot=1
# 时区,默认上海
timezone=Asia/Shanghai
# 用户名、全名,小写字母开头,且仅包含字母、数字、下划线和短横线,长度不超过 32
username=kylin

# 自动安装,不用改动
data-unformat=false

# 预安装软件配置清单,软件包名用逗号分隔,前后不要使用引号
PreinstallApps=wps-office,rc-reader

#以下主要用于自动安装的自定义分区和双系统需求,若无此需求,下面的配置无需改动
[custompartition]

# true为开启pxe自动安装自定义分区,false为关闭。自定义安装不支持加密安装和逻辑卷分区安装。其中自动安装需要在grub.cfg中增加automatic参数
disk-custom=false
# true为格式化整块磁盘,false为不格式化整块磁盘。不格式化磁盘主要用于安装第二个系统。
format-disk=true
# 系统偏移安装。可以根据需要,对系统在磁盘的起始位置进行设置。单位为MB,默认为1MB,且最小不能小于1MB
# 安装第二个系统时,需根据第一个系统占用磁盘大小,合理设置偏移安装的起始位置。
kos-start=1

#  自定义分区清单。请将所需的分区名称填入下面的双引号内,分区之间请用“;”隔开(双引号和“;”均为英文输入格式)。
#  下面分区的前后顺序,表示新装系统分区的顺序,可以根据需要进行调整。如下所示,efi、boot、root分别为系统的第一、二、三分区。
custom-partitions="efi;boot;root;backup;data;swap;"
# 自定义分区设置格式。custom-XXX中XXX为上面自定义的分区名称。fs=分区格式;mount=挂载点;size=分区大小,单位为MB;
# 请将分区格式、挂载点和大小填入下面的双引号内,之间用“;”隔开(双引号和“;”均为英文输入格式)。
custom-XXX="fs=***;mount=***;size=***;"

# efi分区。默认格式为fat32; 挂载点为/boot/efi; 大小建议在0.5~2g之间,设置单位为MB;
custom-efi="fs=fat32;mount=/boot/efi;size=1024;"
# boot分区。默认格式为ext4; 挂载点为/boot; 大小建议在0.5~2g之间,设置单位为MB;
custom-boot="fs=ext4;mount=/boot;size=1024;"
# 系统根分区。默认格式为ext4; 挂载点为/; 大小,建议不小于25g,设置单位为MB;
custom-root="fs=ext4;mount=/;size=40980;"
# backup分区。默认格式为ext4; 挂载点为/backup; 大小设置单位为MB;
custom-backup="fs=ext4;mount=/backup;size=20480;"
# data分区。默认格式为ext4; 挂载点为/data; 大小设置单位为MB;
custom-data="fs=ext4;mount=/data;size=10240;"
# swap分区。默认格式为linux-swap; 挂载点为[swap]; 大小,建议不小于内存大小的1.2倍。如8g内存的机器,建议不小于8.8g,设置单位为MB;
custom-swap="fs=linux-swap;mount=[swap];size=10240;"

# 自动安装,下面的配置不用改动
bootloader=/dev/sda ATA ST1000DM003-1SB1
partitions="/boot/efi:/dev/sda1;/:/dev/sda7;linux-swap:/dev/sda5;"

[setting]
EnableSwap=false
FileSystem="ext4;ext3;fat32;xfs;btrfs;kylin-data;efi;linux-swap;unused"
FileSystemBoot="ext4;vfat"
PartitionMountedPoints=";/;/boot;/backup;/tmp"

[specialmodel]
computer="mips64el/loongson-3;loongsonarch64/generic"

.kylin-post-actions
单纯的cfg文件只能满足一小部分自定义配置,如果需要更复杂的与配置,可以编辑根目录的.kylin-post-actions文件,添加相关shell指令,完成操作

vi /kylin_folder/kylin_arm_2203/.kylin-post-actions

#!/bin/bash
rm -rf /etc/apt/apt.conf.d/00recommends
rm -rf /etc/apt/apt.conf.d/00secure
rm -rf /etc/modules-load.d/cups-filters.conf

cat > /etc/apt/sources.list <<EOF
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1 main restricted universe multiverse
deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-2303-updates main restricted universe multiverse
deb http://archive2.kylinos.cn/deb/kylin/production/PART-V10-SP1/custom/partner/V10-SP1 default all
EOF

rm -rf /etc/apt/sources.list.d/*
rm -rf /etc/apt/preferences.d/*

#解决网络安装后不能设置IP bug.
mv /opt/interfaces /etc/network/

#单独提供systemd
mv /opt/system.conf /etc/systemd/system.conf

mkdir -p /etc/apt/preferences.d/
mkdir -p /etc/apt/sources.list.d/

##解决xrdp远程桌面ssl文件访问权限问题,后续要查清楚原因,用脚本改感觉有安全漏洞
##包列表新增xrdp、xorgxrdp,kylin.chroot脚本增加.xsession
chmod -R a+x /etc/ssl/private
chmod -R a+r /etc/ssl/private
chmod a+r /etc/ssl/private/ssl-cert-snakeoil.key

dpkg -P linux-headers-4.4.0-21 linux-headers-4.4.0-21-generic linux-image-4.4.0-21-generic

mkdir -p /boot/EFI/BOOT/fonts
cp /usr/share/grub/unicode.pf2 /boot/EFI/BOOT/fonts/
update-grub

pushd /boot
# 解决在不格式化/boot的时候,安装会报错的问题
ln -fs . boot || true
popd

#by zz
do_fix_loongarch64() {
    mkdir -p /boot/efi/boot/EFI
    if [ -f /boot/grub/grub.cfg ]; then
        cp /boot/grub/grub.cfg /boot/efi/boot/EFI
    fi
}
do_fix_loongarch64

# sshd 服务异常, 缺少key文件,dpkg-reconfigure openssh-server 能解决问题。
dpkg-reconfigure openssh-server

# 第三方包因安装后过大,后置安装
dpkg -i /opt/third/*.deb
rm /opt/third -rf
bash /usr/share/ksc-set/scripts/ksc-set

##以上是光盘内本身自带的,不建议更改
##以下为自定义
# auto login
cat > /usr/share/lightdm/lightdm.conf.d/60-kylin.conf  <<EOF
[SeatDefaults]
autologin-user=kylin
user-session=mate
greeter-show-manual-login=true
EOF
# sudo without pwd
echo -e "kylin    ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers

以上就完成了麒麟系统的部署,可以直接开始安装。