这些说明不是用于实时安装,而是用于将Debian安装到USB闪存介质。
这里的一个额外好处是,我们将首先在img
作为环回设备安装的文件中准备Debian chroot 。
然后,我们可以将该img
文件用作通用基础映像,然后将其部署到大量USB驱动器中。
你为什么想做这个?好吧,一方面,该img
文件有助于减少混乱,并为您提供易于管理的文件,该文件可以一次又一次地重新部署。这对于创建将在多台计算机上重用的通用映像也是理想的。就像您在网吧中所做的那样,每次启动时都会重新安装Debian,或者在教室中。
警告:我已突出显示您应该在chroot环境中的所有位置。小心!在本地环境而不是chroot中运行其中一些命令可能会导致问题。
1 | sudo apt-get install \ |
创建图像文件并将其格式化。
1 | fallocate -l 2G debian.img |
请注意以下命令返回的内容。对我来说,回送设备是/dev/loop0
,但它可能因您而异。如果您的回送设备地址不同,请相应地更新以下说明。
1 | sudo losetup --partscan --show --find debian.img |
格式化回送设备的linux分区,就像我们对真实物理设备所做的一样。
1 | sudo mkfs.ext4 /dev/loop0p1 |
挂载分区。
1 | sudo mkdir -p /mnt/debian |
引导chroot。
1 | sudo debootstrap \ |
将特殊设备安装到chroot。这对于以后安装grub非常重要。
1 | sudo mount -t proc /proc /mnt/debian/proc |
将root更改为chroot环境。
1 | sudo chroot /mnt/debian |
chroot
至少需要这些软件包,但根据需要添加更多。
当提示您将grub安装到设备上时,请勿安装它。只需单击“ Enter”,然后选择不将其安装到任何设备。
1 | apt-get update && \ |
chroot
我们要基于磁盘标签而不是UUID或类似的命名磁盘fstab
进行装载。这是因为,根据计算机的不同,USB驱动器可能不是/ dev / sda,而且因为UUID会根据文件的部署位置而有所不同。/``/dev/sda``img
1 | echo "LABEL=DEBUSB / ext4 defaults 0 1" > /etc/fstab |
chroot
1 | passwd root |
chroot
1 | grub-install \ |
chroot
1 | exit |
在中编辑grub.cfg
文件img
。
1 | sudo nano /mnt/debian/boot/grub/grub.cfg |
将此内容粘贴到grub.cfg
文件中。
1 | # grub.cfg |
使用与我们fstab
上面相同的名称标记映像分区。
1 | sudo e2label /dev/loop0p1 DEBUSB |
设置的主机名img
。
1 | echo "debian-usb" | sudo tee /mnt/debian/etc/hostname |
清理特殊设备。
1 | sudo umount /mnt/debian/{dev,sys,proc} |
卸载回路设备。
1 | sudo umount /mnt/debian |
卸下img
。
1 | sudo losetup -d /dev/loop0 |
现在,您具有通用的Debian安装,可以像这样将其部署到多个设备。
1 | dd if=debian.img of=/dev/sdz |
引文
- 在USB密钥上安装Arch Linux
- 从USB 3启动
- 标记Linux分区
- 如何生成使用LABEL而不是UUID的grub.cfg?
- 格鲁布
- 6.3多引导手动配置
- 可以安全删除/ boot中的System.map- *文件吗?
- 使用标签引导GRUB2(无UUID)
- 16.3.64搜索
- 错误:没有这样的设备:grub抢救>
- grub救援->没有这样的分区[重复]
- 如何将grub安装到.img文件中?
- 如何解决引导进入initramfs提示符和“装载:无法读取’/ etc / fstab’:无此文件或目录”和“找不到init”的问题?
sudo echo “bla” >> /etc/sysctl.conf
没有权限- 在chroot环境中挂载dev,proc,sys?