美文网首页Linux小推车电子电脑技术
Linux To Go:制作随身携带、即插即用的Linux系统

Linux To Go:制作随身携带、即插即用的Linux系统

作者: moriv4 | 来源:发表于2019-08-24 23:24 被阅读0次

    如何把Linux系统移植到U盘或移动硬盘上,并从USB驱动器中启动并运行?下面我将教大家制作随身携带、即插即用的Linux操作系统。(把当前系统移植到移动硬盘上)

    为什么需要这个功能呢?

    1. 安装、修复系统;电脑系统出了问题,插上就可以对损坏系统修复。这不同于简单的LiveCD,你配置好后的Linux系统极其强大。
    2. 工作中我们同样可以使用这个系统,回到家里插在自己电脑上继续工作;保持进度不变。
    3. 把U盘插到其他电脑,同样可以运行,走到哪里就可以带到哪里,相当于私人独家系统。

    准备工作

    硬件:

    • 移动硬盘 推荐SSD
    • 装有Linux的电脑一台
    • 装有Linux LiveCD系统的启动盘

    软件:
    Linux发行版自带的工具 如 gparted grub cp

    制作
    Linux启动盘的制作分为以下几个步骤:分区、复制文件、安装grub并配置、测试。目的是把当前系统移植到移动硬盘上。

    分区

    从LiveCD启动,打开gparted分区工具,把移动硬盘的分区表改为GPT 。我使用以下分区方案:

    分区 描述 文件系统 标志 大小
    sdb1 EFI系统分区 FAT32 boot efi 300M
    sdb2 数据分区 NTFS 300G
    sdb3 深度系统根目录分区 EXT4 40G

    sdb1是UEFI+GPT模式下的引导分区,grub引导器就要装在这里。
    sdb2是放数据的,为了与Winodws兼容所以采用NTFS。
    sdb3是Linux系统的全部内容,如果你想把家目录单独分出来也可以。
    后面留空备用,结果如下图

    深度截图1.png

    复制文件

    我原系统的文件储存在 /dev/nvme0n1p3 (根分区)和 /dev/nvme0n1p4 (家分区)上,把这两个分区挂载到 /mnt /mnt/home。每个人的分区情况不同,需要对应修改。挂载后,/mnt 目录包括原系统的所有内容。

    挂载 /dev/sdb3 到 /media/backup,把 /mnt 内容全部复制到 /media/backup
    cp -a /mnt/* /media/backup/

    安装grub

    GRUB 提供一个安装程序grub-install用以安装 GRUB 到磁盘,下面是grub-install的一些常用参数及选项:

    --boot-directory=DIR
    指定 boot 目录,用于存放 GRUB 的相关文件,包括其镜像、模块及字体等,同时 GRUB 也会从该目录读取配置文件,此参数缺省为/boot,则 GRUB 的相关文件都在/boot/grub下,配置文件路径为/boot/grub/grub.cfg。
    
    --target=TARGET
    指定要安装的 GRUB 类型(对应不同的 BIOS 启动模式),常用的可选参数有 i386-pc、x86_64-efi、i386-efi 等,对应的文件会被安装到 <boot directory>/grub/<target>/(<boot directory>为--boot-directory参数指定的 boot 目录,默认为/boot)下
    
    --force
    即使遇到报错仍然强制安装
    

    UEFI 特有参数及选项:

    --efi-directory=DIR
    指定 EFI 系统分区的根目录,即 EFI 系统分区的挂载点
    
    --removable
    为移动设备安装,将 GRUB 安装到U盘时必须使用此选项
    

    挂载 /dev/sdb1 到 /media/backup/boot/efi ,把grub安装到移动硬盘上

    grub-install --target x86_64-efi --removable --boot-directory=/media/backup/boot --efi-directory=/media/backup/boot/efi
    

    上面的 --boot-directory --efi-directory --removable 不可省略。

    安装之后要修改grub配置文件,就让他自动生成好了。但要禁用os-prober功能——自动探测硬盘上的其他操作系统然后生成配置。Linux To Go 不依赖于其他操作系统,它的启动菜单里只有自己。注意,不要使用update-grub,因为它会修改UEFI启动项。

    chroot  /media/backup/
    chmod -x /etc/grub.d/30_os-prober
    grub-mkconfig -o /boot/grub/grub.cfg
    

    修改 /media/backup/etc/fstab,把UUID换成对应的值

    # /dev/nvme0n1p3 LABEL=primary
    UUID=932200a3-ff33-48a4-a1c9-23da8cd5d964       /               ext4            rw,relatime,data=ordered        0 1
    
    # /dev/nvme0n1p4 LABEL=primary
    UUID=d973e1bb-cd0a-40e8-91c0-c6c3f8d31355       /home           ext4            rw,relatime,data=ordered        0 2
    

    测试

    安装grub后,还要手动修改 /media/backup/etc/fstab 。Linux To Go只需要自动挂载两个分区—— sdb1 ESP 和 sdb3 DEEPIN_ROOT,修改对应的UUID。

    现在可以重启试试了。开机按下F12 UEFI启动菜单中有移动硬盘这个启动项,选择即可。

    如果成功就OK;如果黑屏断电,查看/media/backup/boot/efi 下的文件 把BOOTX64.EFI删除,把 grubx64.efi 重命名为 BOOTX64.EFI 再重启。

    相关文章

      网友评论

        本文标题:Linux To Go:制作随身携带、即插即用的Linux系统

        本文链接:https://www.haomeiwen.com/subject/cxfcectx.html