gpt4 book ai didi

macos - 用于 Macos Catalina 的 Docker 桌面在容器中挂载 SD 卡卷作为循环设备以使用 dd 闪存 SD 卡

转载 作者:行者123 更新时间:2023-12-04 21:28:47 33 4
gpt4 key购买 nike

我正在使用 Docker Desktop for Mac 版本 2.1.0.4。我有一个 Docker 容器,它是一个 Ubuntu 18.04 Linux VM,里面有 Yocto Build 系统。我用它为我的 NVIDIA Jetson Nano 生成 SD 卡。在构建过程结束时,我有 *.img 文件,我可以直接将其“dd”到 SD 卡并用于启动我的 Jetson Nano。我希望 Docker 容器从 MacBook 挂载 SD 卡卷,以便它可以从容器内部直接 dd 到 SD 卡,而不是从我的 Mac 终端手动复制和运行“dd”。我通常会通过在 Linux 中安装(未安装的)/dev/sdX 设备作为带有 losttup 的循环设备,然后运行“dd”来做到这一点。

通过使用以下命令启动容器,我可以成功挂载 SD 卡并查看容器内的内容:

MacBook-Pro:~ me$ docker run -it -v /Volumes/pkop:/opt/myvolume jetson-nano bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

root@c4102f7124d4:~/Desktop/jetson-yocto$ ls /opt/myvolume/
a.txt b.xt lost+found

我可以将文件从 Mac 或 Container 写入此共享卷,并从两个角度查看更改。

但是,我无法弄清楚(或在 Google 上找到)如何卸载共享卷(因此它不在容器中使用)并能够直接“dd”到它。

我怎样才能做到这一点?谢谢。

enter image description here

enter image description here

注意:我尝试了以下方法,不幸的是它仍然不起作用:
MacBook-Pro:~ me$ mount
...
/dev/disk2s2 on /Volumes/BOOT (msdos, local, nodev, nosuid, noowners)
MacBook-Pro:~ me$ sudo diskutil unmount /dev/disk2s2
Password:
Volume BOOT on disk2s2 unmounted
MacBook-Pro:~ me$ sudo mkdir -p /tmp/sd
MacBook-Pro:~ me$ sudo diskutil mount -mountPoint /tmp/sd /dev/disk2s2
Volume BOOT on /dev/disk2s2 mounted
MacBook-Pro:~ me$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
vsc-jetsonnanobuildsystem-7dbcb92dddcd1879ee470cf5cbe42494 latest 661fca4aff22 10 hours ago 270GB
MacBook-Pro:~ me$
MacBook-Pro:~ me$ docker run -i -t -v /tmp/sd:/opt/usb vsc-jetsonnanobuildsystem-7dbcb92dddcd1879ee470cf5cbe42494 bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

user@9bcdaf6469be:~/Desktop/jetson-yocto$ ls /opt/usb/
a
user@9bcdaf6469be:~/Desktop/jetson-yocto$ dd if=/dev/random of=/opt/usb
dd: failed to open '/opt/usb': Is a directory

此外,似乎我无法共享/dev 目录:

enter image description here

最佳答案

我认为这会起作用:

docker run -v /dev:/dev --privileged YOURIMAGE bash

然后 :
dd if=/dev/random of=/dev/disks2

您还需要分享 /dev在您的 docker 配置中,我认为除了使用 --privileged 之外共享它是有风险的。参数 .....

如果您不共享/dev,您将收到以下消息:
docker: Error response from daemon: Mounts denied:
The path /dev/disk1s2
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.

关于macos - 用于 Macos Catalina 的 Docker 桌面在容器中挂载 SD 卡卷作为循环设备以使用 dd 闪存 SD 卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58894153/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com