我如何安装(不是实时持久)将 xNIX live-iso 保存到 SD 卡上?我希望它能够在大多数机器上启动。
深入:我用 parrotsec 4.4 64 位刻录了一个随身碟,将 parrot 安装到我拥有的 64GB SD 卡上,同时拔掉我的系统驱动器(以免将 EPS 闪存到现有的恢复分区上)。即使在尝试了不同的刷新工具(Parrot、YUMI、Rufus 和 UNetbootin 推荐的 Etcher)之后,还是以工具提供的不同模式(自动、DD、ISO),同时每次都使用不同的分区设置(RAW、或预格式化的 FAT32/EXT4),并在每个设置中混合 MBR/GPT 表。
好吧,它几乎每次都无法启动 SD 卡,并产生不同的结果:回退到 grub shell、UEFI shell 或只是光标闪烁。我认为这在某种程度上是 ESP/GRUB 的错,因为我猜测它无法找到相关的.efi 和我真的不知道如何将它指向它需要的地方(sdx/EFI/boot/.efi?)
答案1
介绍
克隆可以很好地创建实时 Parrot Security 4.4 64 位驱动器。我认为从外部驱动器(USB 闪存盘、SD 卡...)实时运行 Parrot 或持久实时运行是个好主意。驱动器必须足够大(至少 4 GB)。
将 Parrot 安装到 SD 卡(至少 16 GB)中很困难,但还是可以的。
正如问题中所述,通过实时系统提供的图形安装程序对我来说也失败了。
如果您[可以]断开内部驱动器的连接,并仅使用此任务中涉及的驱动器,事情将会变得更干净、更容易。
如何安装到外部驱动器(在本例中为 SD 卡)
- 启动进入实时 Parrot 驱动器
- 在 BIOS 模式下,您会看到 syslinux 菜单。选择菜单顶部的“Live”以获得图形桌面环境
- 插入SD卡(我是通过 USB 适配器完成的)。
打开终端窗口并运行一些命令来准备 SD 卡。
sudo lsblk -fm sudo dd if=/dev/zero of=/dev/sdX bs=1M count=1 sudo -H gparted /dev/sdX
该
lsblk
命令将帮助您识别目标驱动器,SD卡- 该
dd
命令将擦除第一个 mibibyte,这使得安装程序更愿意安装 grub。这是很重要写入SD卡,这意味着您必须为SD卡选择正确的驱动器号(例如a
或b
替换)。X
否则,您可能会破坏其他驱动器中的重要数据。如果您已断开所有其他驱动器(活动驱动器和 SD 卡除外)的连接,事情会更安全。 - 您可以在其中
gparted
“看到”驱动器信息。不应该有分区,甚至不应该有分区表。- 创建一个新的 MSDOS 分区表(通过“设备”)
- 关闭
- 取出SD卡
- 再次从 Parrot live 驱动器启动
- 在 BIOS 模式下,您会看到 syslinux 菜单。选择菜单底部附近的“安装”。它将带您进入文本模式安装程序,即旧的“debian 安装程序”。
- 插入SD卡(我是通过 USB 适配器完成的)。
- 在下一个小菜单中选择“标准安装程序”。
- 选择语言...(我不会在这里描述所有步骤)。
- 选择“引导 - 使用整个磁盘”
- 选择指向SD卡的设备...
- 安装 GRUB 引导加载程序,回答“是”
- 选择指向SD卡的设备
- 完成安装
- 移除 Parrot live 驱动器
- 让电脑重新启动
从 SD 卡运行已安装的 Parrot
- 重新启动,您应该能够启动已安装的 Parrot :-)
修复以提高可移植性
让我们假设计算机在重新启动时可以正常启动,并连接与在 SD 卡中创建 Parrot 系统时相同的驱动器(例如,没有连接内部驱动器)。
当您更改连接的驱动器(例如连接内部驱动器)时,可能仍然存在问题。当您将 SD 卡连接到另一台连接了一个或多个内部驱动器的计算机时,可能会出现相同的问题。
这些问题可以通过更改所使用的
linux
文件中 Parrot 的菜单项中的行来解决。grub.cfg
从另一个驱动器启动,例如活动驱动器。
sudo lsblk -f # identify the drive and check the UUID sudo mount /dev/sdX /mnt # mount the drive that contains grub.cfg sudo nano /mnt/boot/grub/grub.cfg # edit grub.cfg
查找
menuentry
Parrot 的段落以及以 开头的每一行linux
。将 或类似内容替换root=/dev/sda1
为设备规格root=UUID=042cf088-b051-4961-b206-2c223a31dee2
其中字符串
042cf088-b051-4961-b206-2c223a31dee2
应该替换为实际的 UUID 字符串(可能存在于中menuentry
,并由lsblk
命令行识别)。
我在我的东芝笔记本电脑上编辑了这个,并通过 USB 适配器连接了 SD 卡,并且/dev/sda
没有连接内部驱动器。我在带有内置驱动器的同一个东芝和连接了另外两个驱动器的英特尔 NUC 中对其进行了测试。以下屏幕截图来自英特尔 NUC,显示 SD 卡通过内置插槽连接,并且/dev/mmcblk0
还连接了另外两个驱动器。请注意root=UUID=...
在grub.cfg
评论
- 在大多数计算机中,您可以通过 USB 启动到 SD 卡。某些 USB 适配器可与某些计算机配合使用,但不能保证某些计算机和适配器在启动过程中不配合。
- 在某些计算机中,您可以通过 PCI 启动到 SD 卡(通常用于笔记本电脑中的内置 SD 插槽)。这并不常见,因此您不应指望它对您有用。
- 请注意,已安装系统的 SD 卡的使用寿命可能会因多次写入相同存储单元而导致磨损而相当短。克隆的实时驱动器是只读的,根本不受影响。持久活动驱动器的寿命更长,因为写入操作更少。
一些命令
我安装的 Parrot 测试系统的终端窗口中的一些命令,
┌─[tester@parrot]─[~]
└──╼ $lsb_release -a
No LSB modules are available.
Distributor ID: Parrot
Description: Parrot 4.4
Release: 4.4
Codename: stable
┌─[tester@parrot]─[~]
└──╼ $sudo lsblk -fm
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for tester:
NAME FSTYPE LABEL UUID MOUNTPOINT SIZE OWNER GROUP MODE
sda 29.7G root disk brw-rw----
├─sda1 btrfs 79ad87de-08a8-4623-9afc-7c8b25daa228 / 25.9G root disk brw-rw----
├─sda2 1K root disk brw-rw----
└─sda5 swap dcf02e42-29de-4baa-adc9-febf55e611f8 [SWAP] 3.9G root disk brw-rw----
sr0 1024M root cdrom brw-rw----
┌─[tester@parrot]─[~]
└──╼ $df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 384M 6.1M 378M 2% /run
/dev/sda1 26G 12G 14G 47% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 384M 24K 384M 1% /run/user/1000
┌─[tester@parrot]─[~]
└──╼ $free -m
total used free shared buff/cache available
Mem: 3831 502 2611 56 718 3048
Swap: 3977 0 3977
┌─[tester@parrot]─[~]
└──╼ $uname -a
Linux parrot 4.18.0-parrot10-amd64 #1 SMP Debian 4.18.10-2parrot10 (2018-11-17) x86_64 GNU/Linux
┌─[tester@parrot]─[~]
└──╼ $