如何使用BUILDROOT在没有屏幕的情况下连接和使用ssh


12

我想为树莓派(B +)构建一个最小的系统,以提高人脸检测算法的性能...我发现BuildRoot:对于配置,我发现没有必要自己进行配置,而是使用了提供的一:

make raspberrypi_defconfig
make

现在我没有HDMI电缆连接pi ...将其连接到笔记本电脑时,红色指示灯亮起,绿色指示灯开始闪烁:这意味着pi正在正确读取SD卡。这是我第一次我正在使用buildroot,我不知道如何为pi启用ssh或如何显示pi地址。请注意,这与没有屏幕Prepare ssh无关, 因为它们在解决方案中提供了

要在启动时启用ssh,请在SD映像的启动分区上备份boot.rc并将其替换为boot_enable_ssh.rc

好吧,我没有一个名为boot.rc的文件

我可以使用ubuntu 14.04访问sd卡,从启动文件夹运行ls显示如下:

bootcode.bin  cmdline.txt  config.txt  fixup.dat  start.elf  zImage

我还尝试通过将10.42.0.5添加到cmdline.txt来使用静态ip,但是在此之后,我无法使用此地址连接到pi。所以我有两个问题:

  1. 使用buildroot时如何连接到pi地址: 链接到解决方案
  2. 如何使用SSH通过buildroot和witout HDMI设置并连接到pi。

顺便说一句,我正在使用以太网电缆连接到pi

谢谢 :)

更新:我已经为第一个问题的解决方案添加了链接,现在pi地址在扫描以太网网络后出现:

nmap -sP 10.42.0.0/24
Nmap scan report for 10.42.0.5
Host is up (0.00076s latency).

现在我遇到的问题是如何使ssh能够连接到pi HDMI,(使用Buildroot)

尝试ssh pi时(buildroot是使用的系统主机名):

ssh buildroot@10.42.0.5
ssh: connect to host 10.42.0.5 port 22: Connection refused

我认为是因为ssh尚未启用!


AFAIK默认情况下启用SSH…顺便说一句,您使用的是以太网端口还是USB WiFi适配器?
wb9688

AFAIK是什么意思?不,我正在使用以太网电缆
The Beast

一个小号˚F AR 一个小号 ķ现在...!在运行Ubuntu的PC上,sudo nmap -sP 192.168.0.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}'您可能需要调整192.168.x.0/24X所指定的网络地址,其中X在0-255之间(包括0-255),这将覆盖为LAN保留的私有C类地址范围。这将过滤Pi上的以太网接口将具有的唯一MAC地址的结果...
SlySven

1
@SlySven我曾经使用sudo nmap -sP 10.42.0/24给我1个主机启动(这是我的笔记本电脑),但是没有检测到其他设备!注意:我的以太网地址是10.42.0.1,并且该命令sudo nmap -sP 10.42.0/24 | awk '/^Nmap/{ip=$NF}/B8:27:EB/{print ip}'提供了空输出
The Beast

1
@ wb9688是的,我在安装raspbian时使用了它,并ssh@10.42.0.5在选择了该静态ip后轻松连接
The Beast

Answers:


3

如果您所做的只是make raspberrypi_defconfig && make,那么您仍然要做很多工作才能获得有用的运行系统。

BuildRoot的默认配置是关闭除BusyBox之外的所有内容。ssh服务器没有响应,因为您没有告诉BuildRoot您要编译它!

首先make menuconfig在您的BuildRoot目录中运行。可以通过导航到目标软件包,网络应用程序,openssh来启用Openssh。

如果没有Pi上的显示器,要使它正常工作可能会非常困难。一旦ssh开始工作,您就不需要在最终版本中使用它,但是如果没有监视器,要诊断启动问题将非常困难。购买HDMI电缆或HDMI-> DVI转换器,然后使用本地控制台。


1
要进行调试,我还建议您使用USB转TTL UART电缆。这仅适用于buildroot 2016.05 rpi2映像。应该足以安装OP x11vnc
Ciro Santilli冠状病毒审查六四事件法轮功

3

前言:我正在为Raspberry PI 2使用buildroot-2017.02.3并从中启用openssh make menuconfig。如果没有进一步的更改,ssh登录将无法使用,因为生成的默认值/etc/ssh/sshd_config不允许root登录。

选项A:添加用户

您可以通过buildroot添加用户。以下手动输入可能会有所帮助:

本质上,您将创建一个文本文件,该文本文件使用特殊语法定义用户,如下所示:

foo -1 foo -1 =bar /home/foo /bin/sh - no_comment

并告诉buildroot的在make menuconfig> System Configuration> user tables在哪里可以找到你的用户表文件。上面的示例内容将创建一个foo具有密码的附加用户bar(登录已激活)。该用户不是root用户,因此可以立即通过ssh登录。

选项B:许可根登录

当您将SD卡用于系统时(例如在树莓派上),您可以简单地将卡安装在PC上,进行编辑/media/<pathToYourSD>/etc/ssh/sshd_config(需要sudo)并找到线路

#PermitRootLogin prohibit-password

并更改为

PermitRootLogin yes

这允许root通过ssh登录。请注意,我已经为root设置了密码。不知道这是否可以不使用密码。如果您无法安装sd卡,则必须编写与上述内容相同的修改后的构建脚本,但要在构建主机上(在打包rootfs之前)。


1

没有路由器+常规以太网电缆+ RPI 2 + Buildroot 2016.05 + Ubuntu 16.04主机

在将这个问题分为两部分后,它开始工作了:

  1. 使用Raspbian和直接电缆连接(已经运行了正确设置的sshd守护程序)获取以太网SSH /raspberrypi//a/54394/33424

  2. 了解如何在QEMU + buildroot上进行正确的sshd配置:https : //stackoverflow.com/a/39301480/895245

    在实际的板上,您/etc/ssh/sshd_config当然没有要修改的QEMU窗口,因此您将需要:

    • 在刷新之前在主机上对其进行修改(要么通过/ubuntu//a/496576/52975进行BR2_ROOTFS_OVERLAY安装,要么使用进行播放)output/images/sdcard.imgoutput/target
    • 通过UART串行连接。您可能希望早晚进行此操作,因为这是在板上调试buildroot发行版的最佳方法。

.config只需通过raspberrypi2_defconfig+ openssh启用make menuconfig

然后:

ssh "root@$(cat /var/lib/misc/dnsmasq.leases | cut -d ' ' -f 3)"

图像上的TTL仅用于供电。


0

我知道这很安静,但是我确实遇到过同样的问题。我必须在中编辑sshd配置文件/etc/ssh。我通过在另一系统上安装sd卡来编辑该文件。您将必须允许root使用ssh登录(类似PermitRootLogin yes)。



-1

这就是我进行无头pi设置的方式:

  1. 从raspberrypi.org下载了etcher和最新的raspbian软件

  2. 用蚀刻机将文件刻录到我的SD卡

  3. 蚀刻器会自动弹出sd卡,然后将其重新放回计算机中

  4. 制作一个没有任何内容的文件,称为ssh(确保保存时未启用任何扩展名)

  5. 将其弹出到我的树莓派中,将RPi的以太网连接到路由器,然后将微型USB连接到RPi。

  6. 触发RPi,等待1-2分钟。

  7. 转到我的路由器页面(输入您的路由器ip,应该在路由器本身上

  8. 寻找已连接的设备,找到我的树莓派ip地址。

  9. 写下IP地址并打开终端

  10. 在终端中写:ssh pi @ YOURRPIiphere!

  11. 用rpis ip地址替换YOURRPIiphere

  12. 按Enter键并输入默认密码raspberry

  13. 要配置RPi,请执行sudo raspi-config,编辑设置,然后重新启动!

希望有帮助!


1
OP使用的是Buildroot,而不是预构建的Raspbian
Jeremiah Rose,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.