主要参考文档:
1. [x86-intel-image/guide/环境准备.md](https://gitee.com/chn9528/x86-intel-image/blob/master/guide/%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87.md)
2. [RedmiBook 14Ⅱ 锐龙版成功启动开源鸿蒙 openharmony5.0 x86版,全网第一台鸿米笔记本 ,r5 4500u,有gpu驱动](网页链接)
该操作在Ubuntu上进行
分区信息
Table 分区信息

使用gparted分区
创建boot分区

创建system分区

创建vendor分区

创建data分区

执行Apply All Operations

系统安装
使用以下命令烧录分区,请将/dev/sdx改为刚才分区完成的对应分区,一定仔细检查,防止错误命令,导致分区损坏数据丢失
```
dd if=system.img of=/dev/sdx bs=4M
dd if=vendor.img.img of=/dev/sdx bs=4M
```
挂载 `vendor`分区,并修改`/etc/fstab.x86_general`文件,将`/dev/block/sdb4`中的改为`sdb4`,改为新创建的data分区,注意保留`/dev/block/sdb4`,中的`/block`路径,此处与传统linux系统略有区别
挂载boot分区,将bzImage,ramdisk.img复制到boot分区
```
mount /dev/sdx /mnt
cp bzImage /mnt/
cp ramdisk.img /mnt/
```
创建启动项
注: cmdline配置需要感谢 @5超级菜鸟5 和 @Diemit 大佬的分享和帮助
针对grub引导,复制grub引导文件,并修改grub.cfg,写入以下内容,请将两处sdx@分别替换为新建的system分区及vendor分区,注意保留/dev/block/sdx,中的/block路径,此处与传统linux系统略有区别
```
set default="0"
loadfont unicode
set gfxmode=auto
function load_video {
insmod video
insmod video_bochs
insmod video_cirrus
insmod video_fb
insmod all_video
insmod videoinfo
if [ $grub_platform = efi ];then
insmod efi_gop
insmod efi_uga
elif [ $grub_platform = pc ];then
insmod vga
insmod vbe
fi
}
load_video
insmod gfxterm
insmod gettext
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set timeout=5
search --no-floppy --set=root -l 'boot'
menuentry "OpenHarmony" {
linux /bzImage LABEL=boot root=/dev/ram0 rw init=/init console=tty1 console=ttyUSB0,115200 \
no_console_suspend default_boot_device=sdb hardware=x86_general elevator=deadline enforcing=0 \
ohos.required_mount.system=/dev/block/sdx@/usr@ext4@ro,barrier=1@wait,required \
ohos.required_mount.vendor=/dev/block/sdx@/vendor@ext4@ro,barrier=1@wait,required
initrd /ramdisk.img
}
```
针对refind引导,创建refind_linux.conf,写入以下内容,请将两处sdx@分别替换为新建的system分区及vendor分区,注意保留/dev/block/sdx,中的/block路径,此处与传统linux系统略有区别
```
"Boot with standard options" "LABEL=boot root=/dev/ram0 rw init=/init console=tty1 console=ttyUSB0,115200 no_console_suspend default_boot_device=sdb hardware=x86_general elevator=deadline enforcing=0 ohos.required_mount.system=/dev/block/sdx@/usr@ext4@ro,barrier=1@wait,required ohos.required_mount.vendor=/dev/block/sdx@/vendor@ext4@ro,barrier=1@wait,required initrd=ramdisk.img"
```
注意`console=ttyUSB0,115200`参数,对应的是usb转ttl调试工具,此时可将usb转ttl接入刷入ohos的x86设备的usb口,并将另一端连接到其他电脑或设备,用以查看串口log输出
注意此时可能无法正常加载图形界面,后续会补充amdgpu对应的firmware,用来在搭载amdgpu的设备启动图形界面
注意如果出现挂载错误,可能需要配置内核打开STAT AHCI选项,后面会介绍如何修改内核配置