
可以。你现在的目标不是重新写 SD 卡而是重新生成一套 Yocto 镜像然后把新镜像部署到 Raspberry Pi 2最终让 Windows 能通过 SSH 登录 Pi 2。这个目标很适合我们继续沿着前面的 BitBake 学习路线来做。不过要注意SSH 能否连接 Pi 2不只是镜像文件生成成功的问题。至少要确认Yocto ├── kernel ├── device tree ├── rootfs │ ├── dropbear / openssh │ ├── 用户 │ └── 网络配置 └── .wic ▼ SD Card ▼ Raspberry Pi2├── eth0 / wlan0 └── SSH server ▼ Windows └──sshuserPI_IP第一步先看看当前镜像有没有 SSH你在cd~/yocto/pokysourceoe-init-build-env../build-rpi2执行bitbake-ecore-image-minimal|grep^IMAGE_INSTALL最关键的变化是原来IMAGE_FEATURESdebug-tweaks现在IMAGE_FEATURESdebug-tweaks ssh-server-dropbear这说明我们刚才在 local.conf 中加入的IMAGE_FEATURES:append ssh-server-dropbear已经真正进入了 core-image-minimal 的最终 BitBake 数据环境。第二步现在可以重新生成镜像了直接执行bitbake core-image-minimal这次不要执行bitbake -c cleanall core-image-minimal也不需要rm -rf tmp因为 BitBake 会利用现有的 sstate/cache只重新构建受到配置变化影响的部分构建完成以后执行ls -lh tmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2.rootfs.wic*然后再执行ls -lh tmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2.rootfs-*.wic.bz2我们应该能看到新的 .wic.bz2。第三步但这次我们不只看“编译成功”下一步先不要写 SD 卡我们现在先做一个非常有价值的检查看看 .wic 的分区布局。执行fdisk -l tmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2.rootfs.wic你应该会看到类似Disk...wic:161MiB... Device Start End Sectors Size Type...wic1............M W95 FAT32...wic2............M Linux这一步可以直接证明.wic├── partition 1 → boot└── partition 2 → rootfs也就是说我们现在可以从“软件构建”正式进入“磁盘镜像”。第四步写SD Card非常好现在两个输出已经把情况完全对上了。.wic 的分区布局你的镜像是160.99MiB329716sectors分区表是 DOS/MBRPartition1Start8192Size 130M Type W95 FAT Boot * Partition2Start278528Size 25M Type Linux 可以画成 core-image-minimal...wic ├── MBR ├── partition1│ ├── FAT │ ├──130MiB │ └── Bootable * └── partition2├── Linux filesystem └──25MiB这正是一个可以直接写入整张 SD 卡的磁盘镜像。2. 你的 SD 卡已经明确是 /dev/sdb这一点现在非常清楚sda 100G VBOX HARDDISK sdb29.7G Storage Device所以/dev/sdb 你的 29.7G SD 卡而且现在 SD 卡已经挂载了/dev/sdb1 → /media/cxicc/boot /dev/sdb2 → /media/cxicc/root这两个分区必须先卸载。3. 但是现在有一个非常重要的现象你的 SD 卡目前/dev/sdb1 130M vfat /dev/sdb2 25M ext4而你刚生成的 .wicpartition1130M FAT partition225M Linux大小和分区布局完全一致。这非常漂亮。但不要因此只复制文件到 /media/cxicc/boot 和 /media/cxicc/root。我们要做的是把整个 .wic 写到 /dev/sdb。因为 .wic 里面不仅包含文件系统还包含MBR partition table boot flag partition1partition2所以目标是.wic │ 整盘写入 ▼ /dev/sdb ├── /dev/sdb1 └── /dev/sdb24. 写卡之前先卸载执行sudoumount/dev/sdb1sudoumount/dev/sdb2然后确认lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL应该变成类似sdb29.7G disk Storage Device ├─sdb1 130M part vfat └─sdb2 25M part ext4也就是 MOUNTPOINTS 为空。unzip tmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2.rootfs.wic.bz2 using:bunzip2 -k “$(readlink -f tmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2.rootfs.wic.bz2)”Use cp first to make an independent copy:cd~/yocto/build-rpi2cp--dereference\tmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2.rootfs.wic.bz2\/tmp/core-image-minimal.wic.bz2Then decompress the copy:bunzip2 /tmp/core-image-minimal.wic.bz2Now check:ls-lh/tmp/core-image-minimal.wicYou should get roughly: -rw-r–r-- … 161M … /tmp/core-image-minimal.wiccp /tmp/core-image-minimal.wictmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2.rootfs.wic.bz25. 然后写入 .wic你的镜像只有 161 MB所以直接写sudodd\iftmp/deploy/images/raspberrypi2/core-image-minimal-raspberrypi2.rootfs.wic\of/dev/sdb\bs4M\statusprogress\convfsync这里一定注意of/dev/sdb不是of/dev/sdb1也不是of/dev/sdb2因为我们写的是整个磁盘镜像。6. 写完以后再执行sync然后lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL如果 Ubuntu 自动重新挂载了分区你可能再次看到sdb ├─sdb1... /media/cxicc/boot └─sdb2... /media/cxicc/root这是正常的。7. 但这里我要提醒你一个关键问题我们现在已经确认rootfs manifest ↓ dropbear所以SSH server 已经在镜像里。但是SSH server 存在 ≠ Windows 一定能 SSH 进去。我们还需要验证Pi2├── kernel ├── rootfs ├── dropbear ├── Ethernet driver ├── eth0 └── IP address所以写卡之后我们下一阶段会检查Raspberry Pi2├── boot ├── login ├──ipaddr ├──iproute └──ps|grepdropbear然后从 Windowsssh rootPi的IP地址现在先做这一小步先执行sudoumount/dev/sdb1sudoumount/dev/sdb2然后lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL把卸载后的 lsblk 输出贴给我。确认 /dev/sdb 两个分区都没摘要本文详细介绍了如何为Raspberry Pi 2重新生成Yocto镜像并配置SSH服务实现从Windows系统通过SSH登录Pi 2的完整流程。主要内容包括验证SSH配置检查IMAGE_FEATURES是否包含ssh-server-dropbear确保SSH服务已集成到镜像中重新生成镜像利用BitBake的增量构建功能只重新构建受配置变化影响的部分镜像分区分析使用fdisk检查.wic镜像的分区布局确认boot和rootfs分区结构SD卡写入操作详细说明卸载分区、解压镜像、使用dd命令写入整盘镜像的完整步骤网络配置与连接配置Pi 2的静态IP地址通过直连网线实现Windows与Pi 2的网络互通SSH连接验证使用Putty从Windows SSH登录到Raspberry Pi 2整个过程从Yocto镜像构建开始到最终实现跨平台SSH连接涵盖了嵌入式Linux系统部署的关键环节。有挂载之后我们再执行 dd。第五步Window connect to pi via dropbearvi /etc/newwork/intefaces# Wired or wireless interfaces including predictable namesauto eth0# Ethernet/RNDIS gadget (g_ether)# ... or on host side, usbnet and random hwaddriface eth0 inet static address169.254.125.50 netmask255.255.0.0#network 192.168.7.0gateway169.254.125.127Using direct RJ45 cable connect PI2 and Windows 10can ping each otherInstall putty on Windowspi:IP: 169.254.125.50, PORT: 22ID: root, PW: NIL