我想要安装Kali Linux 位于 64 GB USB 驱动器上,希望将其带到任何地方并将其插入任何 PC 并让我的设置启动并运行。 IOW 我只想要一个 HDD,比如 USB 上完整的 Kali Linux 便携式安装。
我不想要实时启动或持久性或任何东西,我显然想将它安装在 USB 上,就像我们通常在 HDD 上安装 Kali Linux 一样。
我想提供一些有关我的内部硬盘的信息 -
root@Kali:~# fdisk -l
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: ST500DM009-2F110
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 0BBC9B99-EE7E-11E8-8BD6-843C86F9DFC6
Device Start End Sectors Size Type
/dev/sda1 2048 1126399 1124352 549M Microsoft basic data
/dev/sda2 1126400 210561023 209434624 99.9G Microsoft basic data
/dev/sda3 210561024 210765823 204800 100M EFI System
/dev/sda4 210765824 315623423 104857600 50G Linux filesystem
/dev/sda5 315623424 328206335 12582912 6G Linux swap
/dev/sda6 328206336 537921535 209715200 100G Linux filesystem
/dev/sda7 537921536 976773134 438851599 209.3G Microsoft basic data
Disk /dev/sdb: 57.9 GiB, 62109253632 bytes, 121307136 sectors
Disk model: Ultra
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: BC1A35EC-FF80-4CCB-BD61-30F7FF3CDA4A
Device Start End Sectors Size Type
/dev/sdb1 2048 206847 204800 100M EFI System
/dev/sdb2 206848 68567039 68360192 32.6G Linux filesystem
/dev/sdb3 68567040 76380159 7813120 3.7G Linux swap
/dev/sdb4 76380160 121305087 44924928 21.4G Linux filesystem
这/dev/sda
是我的内部硬盘,在 UEFI 模式下以双启动方式安装了 Windows 10 + Manjaro。
这/dev/sdb
是我要安装 Kali Linux 的目标 64 GB USB 驱动器。您在这里看到的/dev/sdb
是我的 Kali Linux 的当前安装(我的第三次尝试)。
我从官方 Kali Linux 下载页面下载了 Kali Linux KDE 2019 ISO,使用 Rufus 在另一个备用 16 GB USB 中以 DD 模式进行实时启动。我删除了目标 USB 上的所有分区并使其处于未分配状态。从 Live USB 启动,选择图形安装程序,完成分区之前的所有过程。
我选择手动分区方法,然后对我的目标 USB 进行分区(如/dev/sdc
安装程序中所示),如下所示 -
SCSIl (0,0,0) (sdc) - 62.1 GB
> 1.0 MB FREE SPACE
> #1 /dev/sdc1 104.9 MB B K ESP EFI system partition
> #2 /dev/sdc2 35.0 GB f ext4 /
> #3 /dev/sdc3 4.0 GB f swap swap
> #4 /dev/sdc4 23.1 GB f ext4 /home
> 1.0 MB FREE SPACE
我检查了所有内容,尤其是 EFI 分区中的可启动标志“on”。确保一切正常后,我继续安装。单击“继续”后我注意到的一件不寻常的事情是,我只在我的 上创建了 4 个分区/dev/sdc
,但“要格式化的分区”下列出了 5 个分区,我检查并发现,除了 4 个新创建的分区外/dev/sdc
,swap
上的分区/dev/sda
也是还列出了要格式化的地方。我觉得这很奇怪,因为我在分区时甚至没有碰过它/dev/sda
,但我忽略了它并单击了“继续”。系统安装成功,安装完成并重启。还拿出了Live U盘。
到目前为止,一切都很好。
出现 grub 屏幕,选择 Kali,然后繁荣!我遇到的第一件事是黑屏(initramfs),因为 grub 无法找到根分区/dev/sdc
(注意:安装时目标 USB 是/dev/sdc
,但移除 Live USB 记忆棒后它变成/dev/sdb
)。因此,我重新启动并按“e”返回 grub,并将 root 的设备路径从 更改/dev/sdc2
为/dev/sdb2
。按 F10,我就进入了 Kali Linux 桌面,耶!
好吧,不是那么好。我刚刚启动 GParted 来检查我的所有分区是否完好无损,令我惊讶的是,我看到安装了 EFI 分区/dev/sdb
,而不是我在 上创建的 EFI 分区,/dev/sda
安装了根分区、交换分区和主分区/dev/sdb
,并且交换分区/dev/sda
也已安装!卧槽!
/dev/sdb
预计要安装的EFI 分区/boot/efi
也是不是安装!
这让我头晕目眩,我又尝试了一次上述步骤,但结果相同。然后我在某处读到 EFI 分区必须已经存在于目标 USB 驱动器上,所以我也尝试了,但没有结果。
因此,我关闭系统并将 USB 插入另一台笔记本电脑,看看它是否工作,但一旦我启动启动菜单,就没有从 USB 启动的选项。我尝试禁用旧版支持和安全启动。也尝试添加启动选项,但 USB 的文件系统中没有可用的 EFI 文件。 Kali 的 EFI 文件可在我的内部 HDD 的文件系统中与 Manjaro 和 Windows 一起使用,这清楚地表明 EFI 文件已安装在/dev/sda
.
我需要找出这里发生了什么,出了什么问题,我该如何解决这个问题,以及我如何实现我的目标目的上文提到的。
答案1
首先,启动 Linux 系统并使用 Kali 插入 USB,从终端挂载 USB 的所有分区,发布blkid
并保留 USB 驱动器上分区的所有 UUID。打开/etc/sftab
USB/
并确保其中提到的所有分区都通过 UUID 挂载,这样您就不会将系统与要加载的分区混淆。我想补充discard,noatime,commit=600
一点,请从 USB 驱动器中删除交换分区,然后进行交换。
例子:
UUID=739cbe4a-82c1-46cb-8bb1-dbce3259d1f8 / ext4 discard,noatime,commit=600,defaults 0 2
您可能还需要编辑 grub 配置才能使用 UUID 查找根目录。
当您启动计算机时,找到用于选择启动设备的 F 键(我见过F10
和F12
,它可能是另一个),您应该看到 USB 的两个条目(如果计算机上启用了传统启动),选择您的 US 驱动器并且,如果有两个,您可能会选择错误的一个(传统启动),因此请重复另一个,系统“应该”启动。
答案2
我终于解决了这个问题!