busybox制作及移植ssh和gdb支持ccs9调试--Apple的学习笔记

前言

由于我要进入驱动及中间件应用开发,仅gdb远程调试没有界面,不方面,所以还是想用有界面的比如ccs9或者vscode。那么需要在开发板支持gdbserver和sshd服务器。
那么问题来了buildroot默认使用uclib无法支持gdbserver的编译。我把原来tisdk自带的编译出来的gdbserver放入buildroot文件系统是无法运行的。所以放弃uclib编译的文件系统。正好尝试下自己手工建立一个busybox小的文件系统,此时交叉编译器就可以直接用tisdk提供的glibc交叉编译器咯~

1.busybox文件系统制作

busybox编译参考《正点原子的教程》还是很容易的。

2.ssh选择(openssh or dropbear)

但是我不想编译ssh和gdb,直接将tisdk的lib中的库copy来。结果gdbserver是可以使用的。但是tisdk使用的是轻量级的dropbear。但是dropbear我有一个过不去的坎pam_start() failed,导致密码无法通过。
最后我选择自己交叉编译openssh,然后移植到文件系统中。

3.编译openssh

  1. Zlib交叉编译

下载最新版
此为源码路径root@applecaiHP:/home/applecai/studybr/mytools/zlib/zlib-1.2.11# 在zlib文件夹下建立了build安装路径。
a.export PATH=/home/applecai/bbb/ti-processor-sdk-linux-am335x-evm-06.01.00.08/linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$PATH
b.export CC=arm-linux-gnueabihf-gcc
c../configure --prefix=./../build/
d.make
e.make install


image.png
  1. Openssh

重开一个环境,否则上面的CC有污染。
1.export PATH=/home/applecai/bbb/ti-processor-sdk-linux-am335x-evm-06.01.00.08/linux-devkit/sysroots/x86_64-arago-linux/usr/bin:$PATH
2../Configure linux-armv4 no-asm shared no-async --prefix=/home/applecai/studybr/mytools/openssl/build CROSS_COMPILE=arm-linux-gnueabihf-
3.make
4.make install
成功


image.png
  1. openssh

1)./configure --host=arm-linux-gnueabihf --with-libs --with-zlib=/home/applecai/studybr/mytools/zlib/build --with-ssl-dir=/home/applecai/studybr/mytools/openssl/build --disable-etc-default-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar
2)make
成功
4.参考<正点电子的教程>第B2章节设置文件系统。最后输入如下命令运行sshd。
/sbin/sshd(之后要加入到启动脚本作为后台运行,暂时不添加,因为random: ssh: uninitialized urandom read (32 bytes read)问题没有解决,它要阻塞3分钟)

4.使用ssh

  1. bb black开发板上busybox是面密码登录的。所以先设置root密码
    输入命令passwd root,然后输入密码
    最后修改inittab。注释掉askfirst那行,否则是免密登录。
    修改前console::askfirst:-/bin/sh
    修改后console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL
    然后就可以通过用户名+密码方式登录。
  2. subl /etc/ssh/sshd_config在开发中哦,支持root登录。找到#PermitRootLogin no将其修改为PermitRootLogin yes, 把PasswordAuthentication设成yes。
  3. ubuntuPC上输入命令
    ssh [email protected]然后第一次需要输入yes,再输入bb black开发板密码。

5.过程中遇到比较消耗时间的问题1

ubuntu输入密码时候,提示
PTY allocation request failed on channel 0。
原因是使用的ptmx设备没有在/dev环境下
解决方法:rcS启动脚本添加(我之前有添加如下3行,后来被我删除了,原来是有用的)
mount -a
mkdir /dev/pts -p
mount -t devpts devpts /dev/pts

6.过程中遇到比较消耗时间的问题2

image.png

为什么说我密码过期,我刚刚设置的呀!原来是默认date为1970年导致的。我将date设置正确后,然后重新修改root的密码,此时保存密码的时候也保存了正确的时间。


image.png

然后ubuntuPC能够连接上bb black开发板咯~


image.png

7.ccs9远程调试环境搭建

开发板的gdbserver和sshd都验证成功后,参考ti官网进行ccs9调试环境创建
http://software-dl.ti.com/processor-sdk-linux/esd/docs/06_01_00_08/linux/Foundational_Components_Tools.html#remote-explorer-setup-with-ccs
遇到问题

点击debug后提示缺少sftp-server。

原因是sftp-server服务没有启动。
解决方法:Sshd_config中修改sftp_server的路径。当前在/usr/local/xxx下面
Subsystem sftp /usr/lib/openssh/sftp-server
然后提示没有找到调试文件,我需要将编译出来的二进制文件拖动到开发板对应路径中。解决2个小问题后,可以单步调试咯~


image.png

至此自制文件系统也能支持远程gdb及ssh服务器,并且还是支持ccs9调试。好有成就感呀!

你可能感兴趣的:(busybox制作及移植ssh和gdb支持ccs9调试--Apple的学习笔记)