diff --git "a/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/1-\345\256\211\350\243\205\346\223\215\344\275\234\347\263\273\347\273\237\345\222\214\345\206\205\346\240\270.md" "b/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/1-\345\256\211\350\243\205\346\223\215\344\275\234\347\263\273\347\273\237\345\222\214\345\206\205\346\240\270.md" index 548f83c54e6893b836350a7e4f3d7f808c1b339d..1d9c58fe70bd2d6f82fcc18d0e2cb463d49b7c35 100644 --- "a/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/1-\345\256\211\350\243\205\346\223\215\344\275\234\347\263\273\347\273\237\345\222\214\345\206\205\346\240\270.md" +++ "b/sig/Hygon Arch/content/1-\345\256\211\345\205\250\345\212\237\350\203\275\347\216\257\345\242\203\351\205\215\347\275\256/1-\345\256\211\350\243\205\346\223\215\344\275\234\347\263\273\347\273\237\345\222\214\345\206\205\346\240\270.md" @@ -3,13 +3,29 @@ ## 安装开源操作系统 从下面的镜像中任选一个,下载并完成安装。 -1. http://mirrors.openanolis.org/anolis/8.4/isos/GA/x86_64/AnolisOS-8.4-x86_64-dvd.iso (**该系统安装时内核可以选择,在Kernel Selection 选项中选择4.19版本的内核安装**) +1. [Anolis OS 8.10](https://mirrors.openanolis.cn/anolis/8.10/isos/GA/x86_64/AnolisOS-8.10-x86_64-dvd.iso) + +系统安装后执行下面命令更新系统组件 +``` +sudo yum makecache +sudo yum update kernel* +``` 2. https://releases.ubuntu.com/20.04/ubuntu-20.04.6-live-server-amd64.iso + + 该系统不具有完整的csv功能,请参考[安装CSV软件](https://openanolis.cn/sig/Hygon-Arch/doc/865622260278236994?lang=zh) 安装更新相应的组件。 3. 麒麟server V10 SP3 2403,向麒麟确认获取 -**注:不同版本可能存在差异,可以根据实际情况调整。** +系统安装后执行下面命令更新系统组件 +``` +sudo yum makecache +sudo yum update kernel* +``` +## grub 配置 + +主机系统grub 需要配置内核命令行参数用来支持CSV功能,具体如何配置请参考[安装CSV软件 - 主机Linux内核需配置内核命令行参数](https://openanolis.cn/sig/Hygon-Arch/doc/865622260278236994?lang=zh) + ## 下载测试代码仓库 如果仓库较大clone困难,可以加参数 --depth 1 进行精简clone 。 @@ -26,13 +42,6 @@ $ sudo ./install_hag.sh $ sudo cp /opt/hygon/bin/hag /usr/bin ``` -## 更新内核 - -``` -$ git clone -b devel-5.10 https://gitee.com/anolis/cloud-kernel.git -$ cd cloud-kernel -$ git checkout d3c7bd9fa87b -$ sudo /opt/hygon/build_kernel.sh -``` +## 导入通用安全证书 -更新完成后重启,选择新安装的内核进入系统,**麒麟系统不会安装主机内核,使用系统自带内核,但仍然需要重启使配置生效**。 +使能海光安全功能,必须导入通用安全证书,请参考[导入通用安全证书](https://openanolis.cn/sig/Hygon-Arch/doc/865622274698254162) \ No newline at end of file diff --git "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" index be352c2ae3dcb6d70e5ec419273cdf110c61f951..a231f01f8c75d1db6fe182b63b085dc150f16ce7 100644 --- "a/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" +++ "b/sig/Hygon Arch/content/2-CSV\346\265\213\350\257\225\346\226\207\346\241\243/1-\345\256\211\350\243\205CSV\350\275\257\344\273\266.md" @@ -11,8 +11,54 @@ $ sudo /opt/hygon/csv/install_csv_sw.sh ``` +## 内核安装 +### 编译内核 +龙蜥社区提供了编译好的内核rpm,在http://mirrors.openanolis.cn/anolis/8.10/kernel-5.10/x86_64/os/Packages/ 页面中寻找内核rpm 包进行下载安装, +同时提供了deb 包下载方法: +``` +wget -c https://download.sourcefind.cn:65024/directlink/8/c86-devkit/previous-release/csv/pkg/kernel-5.10.134-deb.tgz +``` + +如果不能满足需要,请按照下面方法进行编译。 +``` +# 这里使用了龙蜥社区的内核,该内核支持完整的CSV能力 +git clone -b devel-5.10 https://gitee.com/anolis/cloud-kernel.git +cd cloud-kernel +git checkout d3c7bd9fa87b +sudo /opt/hygon/build_kernel.sh +``` +### 安装内核 + +ubuntu 系统执行下面操作 + +``` +sudo dpkg -i /opt/hygon/kernel/*deb +version=$(basename "$(ls /opt/hygon/kernel/linux-image-*deb | head -n1)" | grep -oP '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1) + +sudo -E sed -i "s/GRUB_DEFAULT=.*/GRUB_DEFAULT=\"Advanced options for Debian GNU\/Linux>Debian GNU\/Linux, with Linux $version-csv\"/g" /etc/default/grub +sudo update-grub +# 重启使内核生效,重启后uname -a 检查内核是否生效 +sudo reboot +``` +**虚拟机内核替换遵循同样的方法,将/opt/hygon/kernel.tgz 拷贝到启动好的虚拟机中进行安装** + +类centos 系统执行下面操作 +*下面方法是系统支持grubby 工具流程制作方法,如果不支持请上网查找安装方法* +``` +sudo rpm -ivh --force --nodeps /opt/hygon/kernel/*rpm +version=$(ls /opt/hygon/kernel/kernel-[0-9]*.rpm | grep -vE 'headers|devel' | head -n1 | grep -Eo '[0-9]+\.[0-9]+(\.[0-9]+)') +sudo -E grubby --set-default=/boot/vmlinuz-${version}-csv +# 查看内核设置是否生效 +sudo grubby --default-kernel +sudo reboot +# 查看内核设置是否生效 +uname -a +``` +**虚拟机内核替换遵循同样的方法,将/opt/hygon/kernel.tgz 拷贝到启动好的虚拟机中进行安装** + ## 安装qemu -**麒麟系统不需要该步骤,使用系统自带即可,kata 测试不需要该步骤*** + +龙蜥社区提供了编译好的qemu rpm,在https://mirrors.openanolis.cn/anolis/8/AppStream/x86_64/os/Packages/ 页面中寻找qemu rpm 包下载安装,如果不能满足需要,请按照下面方法进行编译安装。 ``` $ git clone https://gitee.com/anolis/hygon-qemu.git $ cd hygon-qemu/ @@ -21,7 +67,7 @@ $ sudo /opt/hygon/csv/build_qemu.sh ## 安装grub -**麒麟系统不需要该步骤,使用系统自带即可,kata 测试不需要该步骤*** + ``` $ wget https://ftp.gnu.org/gnu/grub/grub-2.06.tar.gz $ tar -xvf grub-2.06.tar.gz @@ -30,9 +76,15 @@ $ sudo /opt/hygon/csv/build_grub.sh ``` ## 安装edk2 -**麒麟系统不需要该步骤,使用系统自带即可,kata 测试不需要该步骤** **编译依赖安装grub章节** + +下面提供了编译好的组件 +``` +wget -c https://download.sourcefind.cn:65024/directlink/8/c86-devkit/previous-release/csv/pkg/OVMF.fd -O /opt/hygon/csv/OVMF.fd +wget -c https://download.sourcefind.cn:65024/directlink/8/c86-devkit/previous-release/csv/pkg/OVMF_CODE.fd -O /opt/hygon/csv/OVMF_CODE.fd +``` +如果不能满足需要,请按照下面方法进行编译安装。 ``` $ git clone https://gitee.com/anolis/hygon-edk2.git $ cd hygon-edk2/ @@ -44,27 +96,22 @@ $ sudo /opt/hygon/csv/build_edk2.sh ``` $ cd /opt/hygon/csv/ -$ sudo ./make_vm_img.sh $ git clone -b master https://github.com/guanzhi/GmSSL.git $ sudo ./build_devkit.sh ``` -## 安装虚拟机内核 -**kata 测试不需要该步骤** +## 准备虚拟机 +客户根据需要选择对应的虚拟机,通常选择和主机配套的虚拟机,虚拟机root账号的登录密码为root。 -### 运行虚拟机 +- AnolisOS-8.10-x86_64-ANCK.qcow2 ``` -$ sudo qemu-system-x86_64 -name csv-vm --enable-kvm -cpu host -m 6114 -hda /opt/hygon/csv/vm.qcow2 -drive if=pflash,format=raw,unit=0,file=/opt/hygon/csv/OVMF_CODE.fd,readonly=on -qmp tcp:127.0.0.1:2222,server,nowait -vnc 0.0.0.0:0 -object sev-guest,id=sev0,policy=0x1,cbitpos=47,reduced-phys-bits=5 -machine memory-encryption=sev0 -netdev bridge,br=virbr0,id=net0 -device virtio-net-pci,netdev=net0,romfile= -nographic +wget -c https://download.sourcefind.cn:65024/directlink/8/c86-devkit/previous-release/csv/AnolisOS-8.10-x86_64-ANCK.qcow2 -O /opt/hygon/csv/vm.qcow2 ``` -### 安装虚拟机内核 -虚拟机内核使用主机编译好的内核,登录虚拟机,虚拟机账号为root,密码为root。 +如果客户使用自己定制的虚拟机,且不确定虚拟机中的内核是否支持CSV完整功能,请参考上面**内核安装**更新虚拟机内核。 + +安装虚拟机内核可以用下面命令启动虚拟机,然后在虚拟机中安装内核 ``` -# dhclient -# scp host@hostip:/opt/hygon/kernel.tgz ./ -# scp host@hostip:/opt/hygon/csv/vm_kernel_install.sh ./ -# chmod +x vm_kernel_install.sh -# ./vm_kernel_install.sh -# poweroff +sudo qemu-system-x86_64 -name csv-vm --enable-kvm -cpu host -m 6114 -hda /opt/hygon/csv/vm.qcow2 -drive if=pflash,format=raw,unit=0,file=/opt/hygon/csv/OVMF_CODE.fd,readonly=on -qmp tcp:127.0.0.1:2222,server,nowait -vnc 0.0.0.0:0 -netdev bridge,br=virbr0,id=net0 -device virtio-net-pci,netdev=net0,romfile= -nographic ``` ## 安装后确认主机支持的机密计算类型 @@ -139,15 +186,16 @@ dmesg | grep CSV 表1 主机Linux内核命令行参数及其说明 -| CPU | 主机Linux的内核命令行参数 | -| --- | --- | -| 海光2号 | kvm-amd.sev=1 mem_encrypt=on1 | -| 海光C86-3G | kvm-amd.sev=1 kvm-amd.sev_es=1 mem_encrypt=on1 | +| CPU | 主机Linux的内核命令行参数 | +| ---------- | ------------------------------------------------------------ | +| 海光2号 | kvm-amd.sev=1 mem_encrypt=on1 | +| 海光C86-3G | kvm-amd.sev=1 kvm-amd.sev_es=1 mem_encrypt=on1 | | 海光C86-4G | kvm-amd.sev=1 kvm-amd.sev_es=1 mem_encrypt=on1 csv_mem_percentage=XX2 | - 1. `mem_encrypt=on`表示主机Linux开启SME功能,开启该功能可以保证主机Linux运行时,内存中的数据是加密的,是一种主机侧的内存保护;这是一个可选内核命令行参数,运行海光机密虚拟机不强制要求添加该内核命令行参数。 - 2. `csv_mem_percentage=XX`是使用CSV3功能时,最大可占用服务器总物理内存的比例,其中[XX](#csv3-mem-cmdline)是十进制数字,[XX](#csv3-mem-cmdline)最大为80。例如,当系统内存总量为200G,[XX](#csv3-mem-cmdline)为50时,表示可提供服务器总物理内存的 *50%* (即100G)给CSV3功能使用。 - +- 3. 通常将上述参数设置在/etc/default/grub 文件的GRUB_CMDLINE_LINUX 中,设置完使其生效,ubuntu系统使用sudo update-grub使其生效,类centos系统使用grub2-mkconfig -o /boot/efi/EFI/OS/grub.cfg,OS 为具体的系统类型,客户根据具体使用的系统进行替换,或者直接通过sudo grubby --update-kernel=ALL --args="csv_mem_percentage=50 amd_iommu=on mem_encrypt=on kvm-amd.sev=1 kvm-amd.sev_es=1"进行设置,sudo grubby --info=$(sudo grubby --default-kernel) 查看grubby 参数设置是否生效,重启系统,系统重新启动后cat /proc/cmdline 检查grub 设置是否生效,cat /sys/module/kvm_amd/parameters/sev 为Y或者1 表示主机支持csv虚拟机,否则表示不支持,cat /sys/module/kvm_amd/parameters/sev_es 为Y或者1 表示主机支持csv2虚拟机,否则表示不支持,cat /proc/meminfo |grep -i cma 输出的内容如果不为0表示cma 内存设置生效,csv3 虚拟机必须设置cma 内存,csv3支持的条件为:硬件支持 + csv + csv2 + cma配置。 + ### 海光机密计算虚拟机分配内存说明 **虚拟机分配内存**:是指qemu/libvirt指定的虚拟机的内存。例如,`/usr/bin/qemu-system-x86_64 ... -m 2G ...`表示为虚拟机分配内存为2G。下表2列出了海光机密计算**虚拟机分配内存**要求: