制作一个Ubuntu Live USB, 基于arm+Ubuntu

1.概要

制作一个Ubuntu Live USB,当前是一个arm+Ubuntu,我想将当前的系统克隆到u盘中,然后用u盘启动系统。

这里假设使用 extlinux(常见于ARM设备)

2.内容

以下是制作Ubuntu Live USB并克隆当前ARM系统到U盘的步骤:


步骤1:准备工作

  1. 备份数据:确保U盘数据已备份,操作将完全擦除U盘。
  2. 确认设备路径
    • 插入U盘,运行 lsblk 查看设备名(如 /dev/sda)。
    • 确认当前系统所在磁盘(如 /dev/mmcblk0,常见于树莓派等ARM设备)。

步骤2:克隆系统到U盘(使用dd命令)

# 卸载U盘分区(如果有自动挂载)
sudo umount /dev/sdX* # 替换sdX为U盘设备名(如sda)


# 执行克隆(谨慎操作!确保if和of正确)
sudo dd if=/dev/sdY of=/dev/sdX bs=4M status=progress oflag=sync
# 示例:将/dev/mmcblk0克隆到/dev/sda
# sudo dd if=/dev/mmcblk0 of=/dev/sda bs=4M status=progress oflag=sync
  • 警告if(输入文件)是原系统磁盘,of(输出文件)是U盘。误操作会导致数据丢失!

步骤3:调整U盘引导配置(关键!)

ARM设备依赖特定引导配置,需确保U盘引导正确:

  1. 挂载U盘分区

    sudo mkdir /mnt/usb
    sudo mount /dev/sdX1 /mnt/usb # 假设U盘第一个分区为FAT32引导分区
  2. 修改引导文件

    • 编辑 /mnt/usb/extlinux/extlinux.conf(或类似路径):
      sudo nano /mnt/usb/extlinux/extlinux.conf
    • 将 root= 参数指向U盘的根分区(如 /dev/sda2):

      DEFAULT linux
      LABEL linux
      KERNEL /vmlinuz
      APPEND root=/dev/sda2 rootwait rw
    • 注意:若使用UUID,需更新为U盘根分区的UUID:
      sudo blkid /dev/sda2 # 查找UUID
  3. 同步配置并卸载

    sudo umount /mnt/usb

步骤4:调整系统文件(可选)

  1. 修改 /etc/fstab
    • 挂载U盘根分区:
      sudo mount /dev/sdX2 /mnt/usb
    • 编辑 /mnt/usb/etc/fstab,将原磁盘的UUID替换为U盘的UUID:

      sudo blkid /dev/sdX2 # 获取U盘根分区UUID
      sudo nano /mnt/usb/etc/fstab
  2. 同步并卸载
    sudo umount /mnt/usb

步骤5:设置设备从U盘启动

  1. 进入U-Boot/BIOS
    • 重启设备,进入启动菜单(通常按 EscF12 或设备特定键)。
    • 选择U盘作为启动设备。
  2. 测试启动
    • 如果失败,可能需要重新检查引导配置或尝试其他工具(如Clonezilla)。

替代方案:使用Clonezilla(更安全)

  1. 下载ARM版Clonezilla镜像(需确认支持ARM)。
  2. 制作Clonezilla启动U盘。
  3. 通过Clonezilla克隆磁盘,自动处理引导配置。

注意事项

  • ARM兼容性:部分U盘可能因固件问题无法启动,建议测试多个U盘。
  • 内核兼容性:确保U盘中的内核支持目标设备硬件。
  • 持久化存储:如需保存更改,需在克隆后配置持久化分区。

完成上述步骤后,U盘应能启动与原系统一致的ARM Ubuntu环境。

2.关联链接

4.关联知识 

1.能看到当前运行系统的引导配置吗

是的,您可以查看当前运行系统的引导配置。具体方法取决于系统使用的引导加载程序(如 extlinuxGRUB 或 U-Boot)。以下是常见场景的查看方法:


情况1:使用 extlinux(常见于ARM设备)

  1. 查看配置文件
    cat /boot/extlinux/extlinux.conf
    • 关键参数root=(指定根文件系统设备,如 /dev/mmcblk0p2)。
    • 示例输出

      DEFAULT linux
      LABEL linux
      KERNEL /vmlinuz
      APPEND root=/dev/mmcblk0p2 rootwait rw
  2. 验证当前根分区
    mount | grep " / "
    • 输出示例/dev/mmcblk0p2 on / type ext4 (rw,relatime)
    • 确认 root= 参数与当前根分区一致。

情况2:使用 GRUB(常见于x86/x64设备)

  1. 查看主配置文件
    cat /boot/grub/grub.cfg
    • 注意:直接编辑此文件不推荐,修改应通过 /etc/default/grub 和 update-grub 命令。
  2. 查看当前启动项
    cat /boot/grub/grubenv | grep "saved_entry"
    • 或在启动时按 Esc/Shift 进入GRUB菜单选择界面。

情况3:使用 U-Boot(嵌入式设备)

  1. 查看环境变量
    printenv | grep -E "bootcmd|bootargs"
    • 关键参数bootargs(包含内核启动参数,如 root=)。
    • 示例输出
      bootargs=root=/dev/mmcblk0p2 rootwait rw

如何确认当前系统的引导配置?

  1. 直接查看配置文件
    • 根据上述方法定位到配置文件(如 extlinux.conf 或 grub.cfg)。
    • 检查 root= 参数是否指向当前根分区(通过 mount | grep " / " 确认)。
  2. 验证启动日志
    • 重启设备,在启动过程中观察内核日志:
      dmesg | grep -i "command line"
    • 输出会显示实际使用的内核参数(包括 root=)。

示例:完整检查流程

  1. 查看当前根分区

    $ mount | grep " / "
    /dev/mmcblk0p2 on / type ext4 (rw,relatime)
  2. 查看引导配置

    $ cat /boot/extlinux/extlinux.conf
    DEFAULT linux
    LABEL linux
    KERNEL /vmlinuz
    APPEND root=/dev/mmcblk0p2 rootwait rw

  3. 验证一致性

    • 确认 root= 参数(/dev/mmcblk0p2)与当前根分区一致。

注意事项

  • 只读模式:如果系统以只读模式挂载根分区(常见于救援模式),需先重新挂载为读写:
    sudo mount -o remount,rw /
    Live USB环境:如果通过Live USB访问原系统,需先挂载原系统的根分区:

    sudo mount /dev/sdX2 /mnt # 替换sdX为原设备
    sudo chroot /mnt # 进入原系统环境

通过以上步骤,您可以准确查看并验证当前系统的引导配置。如果发现配置错误(如 root= 指向错误设备),需及时修复以避免启动失败。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值