香橙派ubuntu双系统

制作思路

在emmc上烧录ubuntu系统,需要内核至少开启 CONFIG_MD CONFIG_BLK_DEV_DM CONFIG_BLK_DEV_LOOP CONFIG_DM_VERITY ,内核编译教程可以参考上一篇,或者查看官方文档即可。然后在sd卡上制作双系统,切记sd卡的格式是fat32

材料准备

  1. 香橙派开发板,我的是香橙派5b
  2. sd卡或者外接硬盘
  3. ubuntu镜像

操作过程

  1. 切换到root用户 sudo -i
  2. 更新软件包列表 apt update
  3. 安装所需软件 apt install dosfstools kpartx rsync
  4. 创建工作目录 mkdir devboot
  5. 转到工作目录 cd devboot
  6. 创建挂载目录 mkdir boot root osimg
  7. 同时把ubuntu镜像上传到这个目录并改名字为 img01.img
  8. 查看目录下的文件 ls -al
    目录文件
  9. 插入sd卡,查看是否有 lsblk -d ,如下图,我的sd卡是 mmcblk1
    sd卡设备
  10. 对sd卡进行分区 cfdisk /dev/mmcblk1,一个boot分区(fat32)512M,两个系统分区(ext4),步骤如下
    分区
  11. 删除原有所有分区,效果如下


    删除后的分区
  12. 创建boot分区


    boot分区

    boot分区

    boot分区

    boot分区

    boot分区
  13. 创建系统分区,把剩余空间平均分配即可


    第一个系统分区
  14. 效果如下


    分区效果
  15. Write 写入磁盘,选 Quit 退出,输入 partprobe 使分区生效
  16. 查看分区情况 lsblk
    分区情况
  17. 格式化,注意替换自己的设备名称 mkfs.fat -F 32 -n "boot" /dev/mmcblk1p1 mkfs.ext4 -L rootfs1 /dev/mmcblk1p2 mkfs.ext4 -L rootfs2 /dev/mmcblk1p3 ,没有报错即可,有报错就解决报错,有报错大概率是sd卡有问题,重新格式化sd卡或者换一个
  18. 挂载 boot 分区 mount /dev/mmcblk1p1 boot/
  19. 创建俩个系统的boot目录 mkdir boot/{os1,os2}
  20. 挂载第一个系统分区 mount /dev/mmcblk1p2 root/
  21. 挂载系统镜像 losetup -f --show img01.img
    挂载系统镜像
  22. 添加分区映射 kpartx -va /dev/loop0
  23. 挂载分区映射 mount /dev/mapper/loop0p2 osimg/ mount /dev/mapper/loop0p1 osimg/boot/
  24. 拷贝boot目录到os1中 cp -a osimg/boot/* boot/os1/
  25. 卸载boot目录 umount osimg/boot/
  26. 同步rootfs rsync -axv osimg/ root/
  27. 创建引导程序目录 mkdir root/bootpar
  28. 把分区信息写入分区系统表,改成自己的分区即可 sed -i "s/\(UUID=\)[[:xdigit:]-]\+\([[:blank:]]*\)\/boot/\1$(blkid -o value -s UUID /dev/mmcblk1p1)\2\/bootpar/" root/etc/fstab sed -i "s/\(UUID=\)[[:xdigit:]-]\+\([[:blank:]]*\/[[:blank:]]\+\)/\1$(blkid -o value -s UUID /dev/mmcblk1p2)\2/" root/etc/fstab echo -e "/bootpar/os1 /boot none bind 0 0\n" >> root/etc/fstab sed -i "s/\(UUID=\)[[:xdigit:]-]\+/\1$(blkid -o value -s UUID /dev/mmcblk1p2)/" boot/os1/orangepiEnv.txt
  29. 同步到存储设备中 sync && sync
  30. 卸载目录,删除分区映射,解除镜像挂载 umount root/ umount osimg/ kpartx -d /dev/loop0 losetup -d /dev/loop0
  31. 安装第二个系统,步骤同上面第一个系统一样,命令顺序如下
  32. mount /dev/mmcblk1p3 root/
  33. losetup -f --show img01.img
  34. kpartx -va /dev/loop0
  35. mount /dev/mapper/loop0p2 osimg/
  36. mount /dev/mapper/loop0p1 osimg/boot/
  37. cp -a osimg/boot/* boot/os2/
  38. umount osimg/boot/
  39. umount osimg/boot/
  40. rsync -axv osimg/ root/
  41. mkdir root/bootpar
  42. sed -i "s/\(UUID=\)[[:xdigit:]-]\+\([[:blank:]]*\)\/boot/\1$(blkid -o value -s UUID /dev/mmcblk1p1)\2\/bootpar/" root/etc/fstab
  43. sed -i "s/\(UUID=\)[[:xdigit:]-]\+\([[:blank:]]*\/[[:blank:]]\+\)/\1$(blkid -o value -s UUID /dev/mmcblk1p3)\2/" root/etc/fstab
  44. echo -e "/bootpar/os2 /boot none bind 0 0\n" >> root/etc/fstab
  45. sed -i "s/\(UUID=\)[[:xdigit:]-]\+/\1$(blkid -o value -s UUID /dev/mmcblk1p3)/" boot/os2/orangepiEnv.txt
  46. sync && sync
  47. umount root/
  48. umount osimg/
  49. kpartx -d /dev/loop0
  50. losetup -d /dev/loop0
  51. 处理boot cp -a boot/os1/* boot/
  52. 重启 reboot ,重启后启动的是第一个镜像

切换镜像

  1. /bootpar/os1/orangepiEnv.txt 复制到 /bootpar/ 中,就是启动第一个镜像
  2. /bootpar/os2/orangepiEnv.txt 复制到 /bootpar/ 中,就是启动第二个镜像

一键脚本

也可以使用脚本键建制作香橙派双系统

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容