0

我完全构建了紫红色 - 并想用它来刷一个 USB 设备。

正确的命令应该是

fx mkzedboot /dev/sdb

fx mkzedboot /dev/sdb
/dev/sdb - DataTraveler 3.0
Changing ownership of /dev/sdb to erhard
[sudo] password for erhard: 
Opening device...
Create new GPT partition table... 
00000000-0000-0000-0000-000000000000
done
Create new partitions... 
done
Writing zedboot for EFI
43049+0 records in
43049+0 records out
22041088 bytes (22 MB, 21 MiB) copied, 2.09618 s, 10.5 MB/s
done
Closing device.

似乎只复制了 22MB - 对吗?可能是什么问题呢?

4

2 回答 2

1

如果您想要一个“现场 USB 记忆棒”,那么fx make-fuchsia-vol可能就是您想要的

于 2021-03-27T23:37:12.357 回答
0

根据Prepare a USB flash drive to be bootable disk中的文档,fx mkzedboot仅使闪存驱动器能够进行网络引导以进行铺路,因此您必须按照说明进行铺路。

我已将 Fuchsia 安装到我的 USB 闪存驱动器中,无需铺路,使用fx mkinstaller

fx set workstation.x64 \
       --with //bundles:tools,//bundles:tests,//bundles:kitchen_sink \
       --ccache
  • 然后,建
fx build
  • 运行fx mkinstaller /dev/<usb_drive>以将安装程序写入物理(或模拟)USB 驱动器(fx mkinstaller未通过 USB 连接的块设备上的 usnig 将失败)

  • 使用 .将 USB 闪存驱动器复制到磁盘映像中dd。这是“安装程序”磁盘映像。

  • 创建一个与 USB 驱动器大小完全相同的映像磁盘。这是目标磁盘映像。

  • 使用 qemu-kvm 引导安装程序,将两个磁盘映像公开为 NVME。此步骤不需要网络。EFI 必须可用;按照您的发行版的说明安装ovmf,或直接下载映像。

sudo /usr/bin/qemu-system-x86_64 \
     -monitor stdio \
     -vga std \
     -machine accel=kvm \
     -m 4096\
     -device nvme,drive=nvme0,serial=deadbeaf1,num_queues=8 \
     -drive file=,if=none,id=nvme0 \
     -device nvme,drive=nvme1,serial=deadbeaf1,num_queues=8 \
     -drive file=,if=none,id=nvme1 \
     -boot once=c,menu=on \
     -net nic,macaddr=00:e0:4c:c2:85:01,model=rtl8139 \
     -net user \
     -rtc base=localtime \
     -name "Fuchsia" \
     -bios /usr/share/qemu/OVMF.fd
  • 在正在运行的 Fuchsia 中,运行installer并选择正确的目标设备。然后,关闭虚拟机。(如果已连接,请拔下 USB 闪存驱动器)

  • 安装后,再次启动虚拟机(如果您安装了 USB,请连接 USB),从命令行中删除安装程序驱动器,然后检查会发生什么;尝试使用其他显示驱动程序和帧缓冲区分辨率;在真机上试试。

但是,一旦安装,以下发生在我身上,具体取决于机器设置:

  • 使用标准 VGA 显示,系统启动,但屏幕qemu变黑。
  • qemu使用其他显示驱动程序(QLX、Vmware 等)和在真机(我的笔记本电脑)中,屏幕在引导加载程序屏幕上冻结,并且不显示任何调试信息。

在这两种情况下,我都可以通过串口访问 shell。

于 2021-03-21T14:11:31.683 回答