香橙派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/ 中,就是启动第二个镜像

一键脚本

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

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容