如何创建正在运行的系统的持久 USB 密钥?

如何创建正在运行的系统的持久 USB 密钥?

如何在不关机的情况下在计算机上创建正在运行的系统的持久且可启动的 USB。

密钥将与计算机相同,并提供像在其他硬件上一样使用和安装它的方法。

。 root权限没问题

引用自 Unix 和 Linux 聊天室

为了简单起见,我想创建一个活动备份...例如,您在计算机上运行,​​您必须离开...插入加载命令的密钥,然后将密钥插入另一个地方并拥有一切像在家一样工作,因此不仅仅是备份,不仅仅是实时 USB,而是系统的永久保留。

答案1

我认为 dd 是继续的好方法。

同时,仅当只有一个 /dev/sd* 时,该解决方案才可以开箱即用。

例如,我建议列出除 USB 之外的所有 /dev/sd*,然后根据需要在 USB 驱动器上创建尽可能多的分区 (fdisk -n),并对每个 /dev/sd* 计数使用 dd 。

从链接:

insert the destination USB flash drive in my workstation
delete the existing vfat partition and create a single linux partition using fdisk
create a filesystem and synchronize it:

bash# mkfs.ext3 /dev/sdb1
bash# sync ; sync

remove the usb flash drive from the workstation, put it in the target PC
mount the usb drive, move the udev filesystem out of the way, and copy the local filesystem:

bash# cd /
bash# mkdir /mnt/sda1
bash# mount /dev/sda1 /mnt/sda1
bash# mkdir udev
bash# mount --move /dev /udev
bash# cp -ax / /mnt/sda1

That copy command might take awhile. When it is done, get rid of the temporary directory /udev

bash# mount --move /udev /dev
bash# rm -fr /udev

现在让 USB 驱动器可启动。它仍应安装在 /mnt/sda1。首先,在文件 /mnt/sda1/boot/grub/device.map 中将 hd(0) 设置为 /dev/sda,并在 /mnt/sda1/boot/grub/menu.lst 中为每个引导配置正确设置内核引导选项,例如:

标题 Debian GNU/Linux,内核 2.6.18-6-486 root (hd0,0) 内核 /boot/vmlinuz-2.6.18-6-486 root=/dev/sda1 ro vga=792 initrd /boot/initrd.img -2.6.18-6-486 保存默认值

最后,在U盘上安装grub:

bash# grub-install --root-director=/mnt/sda1 /dev/sda

全做完了!现在您可以重新启动到闪存驱动器。

答案2

  1. 在 USB 记忆棒 (cfdisk) 上创建相同的分区集。使用cfdisk和可以轻松识别磁盘/分区cat /proc/partitions
  2. 使用相同的文件系统对它们进行格式化(mkfs.ext...)
  3. 挂载它们(即挂载 /dev/sdXY /mnt/sdXY)
  4. 将每个分区的文件复制到相应的分区(即cp -a /bin /boot /dev /etc /home /mnt /root /sbin /usr /var /mnt/new
  5. cd /new mkdir proc chmod 555 proc mkdir tmp chmod 777 tmp
  6. 相应地编辑 USB 中的 fstab
  7. 在 U 盘上安装 Grub mount /dev/sdXY /mnt/ #if is not mounted already mount -t proc none /mnt/proc mount -o bind /dev /mnt/dev chroot /mnt/ /bin/bash /usr/sbin/grub-install --recheck --no-floppy /dev/sdXY

答案3

您需要一个至少与计算机磁盘一样大的 USB 硬盘。不仅仅是使用中的大小,还有总大小。

您需要确定哪些设备/dev/用于您的主硬盘和 USB。通常 /dev/sda将是您的主磁盘,并将/dev/sdb是您的第一个外围设备。


您可以dd在实时文件系统上使用,尽管存在与之相关的风险(在安装时使用 dd 克隆磁盘 - 有风险吗?)。或者,您可以使用cat,这可能更安全(dd什么时候适合复制数据? (或者,read() 和 write() 何时是部分的))。

假设您的主设备是/dev/sda并且 USB 设备是/dev/sdb您可以使用以下任一设备:

dd if=/dev/sda of=/dev/sdb bs=64k conv=noerror,sync

cat </dev/sda >/dev/sdb

dd导致noerror它在错误时继续,并且它sync用零填充部分写入,这样事情就不会移位。尽管这两件事可能是您希望dd停止的原因,因为它们表明图像dd正在产生问题。


如果要将 USB 映像安装到另一个硬盘上,可以启动该硬盘并运行相同的命令。在这种情况下,确定哪个是 USB 驱动器、哪个是内部 HD 非常重要,不确定它是否会将启动的驱动器视为sda.

相关内容