移植telnet服务到DM8168

移植telnet服务到DM8168芯片
一、 移植BusyBox
BusyBox 是一个集成了一百多个常用Linux命令和工具的应用程序,不仅包含了一些简单的命令,如 cat 、echo和ls等,而且还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet等。简单地说,BusyBox就好像是个大工具箱,集成了许多Linux常用的工具和命令。
1. 下载busybox
下载最新版本busybox源码,下载地址:http://www.busybox.net/downloads/。本文中使用的是busybox-1.23.2,下载的安装包为busybox-1.23.2.tar.bz2。

  1. 复制并解压源码包
    $ mkdir ~/busybox                      # 创建工作目录
    $ cp busybox-1.23.2.tar.bz2 ~/busybox  # 复制源码包
    $ cd ~/busybox/                        # 进入工作目录
    $ tar -jxvf busybox-1.23.2.tar.bz2     # 解压
    $ cd busybox-1.23.2/                   # 进入解压包
  1. 配置编译选项
    1) 创建安装目录和设置环境变量
    $ mkdir ../install      #创建安装目录
    $ export PATH=$PATH:/root/CodeSourcery/Sourcery_G++_Lite/bin  
                            #交叉编译工具路径加入系统环境变量
    $ make menuconfig

2) 交叉编译器的前缀设置
在make menuconfig弹出的系统配置界面里,进行交叉编译工具链的设置:
Busybox Settings —->
Build Options —->
() Cross Compiler prefix
回车,在弹出的界面中输入交叉编译工具链的前缀:如 arm-none-linux-gnueabi-
这里写图片描述

3) 设置为静态编译
Busybox Settings —->
Build Options —->
[*] Build BusyBox as a static binary (no shared libs)

4) 不安装到/usr目录,并设置安装目录到已经建好的文件夹 ../install
Busybox Settings —>
General Configuration —>
[*] Don’t use /usr
设置安装目录:
Busybox Settings —>
Installation Options (“make install” behavior) —>
BusyBox installation prefix

这里写图片描述

最后按ESC,然后保存。

  1. 编译安装,使用命令:make ; make install

  2. 切换到../install文件夹下,就可以找到需要的busybox, inetd, telnetd,以及telnet等编译好的可执行程序。

二、 把busybox生成的有关telent服务的可执行程序移植到DM8168上。
在ARM板中的操作系统需要uboot启动引导kernel,然后挂载rootfs或其他文件系统。本文使用的是ramdisk.gz作为文件系统,由于事先ramdisk.gz已经制作好(网上有已经制作好的供下载的ramdisk.gz),在此只需要在已经制作好的ramdisk.gz里面加入telnet需要的服务,再进行相关的配置即可。
1. 挂载已经制作好的ramdisk.gz
1) 解压ramdisk.gz

    #cd ramdisk.gz 所在目录
    #gunzip ramdisk.gz

在解压后,得到文件系统镜象文件ramdisk, 覆盖了原来的压缩文件。

2) 建立文件夹挂载ramdisk.gz
镜象文件必须经过挂载后才能看到文件系统中的各个目录和详细内容:

    #mkdir /mnt/loop
    /mnt/loop 是文件系统要挂载到的目录
    #mount -o loop ramdisk /mnt/loop

3) 在挂载目录/mnt/loop下对文件系统进行操作

    #cd /mnt/loop

即可根据需要增加、删减或是修改文件系统的内容,本文中需要移植telent服务,需添加或telent相关的文件或程序。
2. 把编译好的busybox移植到 ramdisk系统里,并进行相关配置。
本文中的 ramdisk文件系统里的/bin文件夹下已经存在busybox可执行程序,为了保留此前文件系统的正确性,把在../install文件夹中已经编译好的busybox重命名为busybox_1,并拷贝到ramdisk文件系统的/bin文件夹下。如下图:
这里写图片描述
3. 在ramdisk文件系统中(即在/mnt/loop/文件夹下)进行相关配置。
1) 确保/etc文件夹下services文件存在 telnet 23/tcp 这行。
2) 在/etc文件夹下创建inetd.conf文件,已经存在修改即可,加入以下这一行:
telnet stream tcp nowait root /usr/sbin/telnetd telnetd -I
3) 确保root用户可以登陆,需要在/etc文件夹下的securetty文件下加入以下几行:
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
4) 如果为了能够让root用户无密码登陆,修改/etc下的passwd文件存在以下这一行:
root::0:0:root:/root:/bin/sh,不然就可用root用户登陆,输入密码即可。
5) 修改/etc/init.d/下的rcS文件,加入以下几行:
mkdir /dev/pts
/bin/mknod /dev/pts/0 c 136 0
/bin/mknod /dev/pts/1 c 136 1
/bin/mknod /dev/pts/2 c 136 2
/bin/mknod /dev/pts/3 c 136 3
/bin/mknod /dev/pts/4 c 136 4
/bin/mknod /dev/pts/5 c 136 5
/bin/mount -t devpts devpts /dev/pts

ln -s /bin/busybox_1 /usr/bin/telnet
ln -s /bin/busybox_1 /usr/sbin/inetd
ln -s /bin/busybox_1 /usr/sbin/telnetd

/usr/sbin/telnetd &

其中telnetd需要devpts格式的文件系统,需要在启动脚本里面开启devpts
ln -s /bin/busybox_1 /usr/bin/telnet ,ln -s /bin/busybox_1 /usr/sbin/inetd ,
ln -s /bin/busybox_1 /usr/sbin/telnetd这三行是建立软链接,把telent需要的服务程序链接到上文中已经编译好,并重命名的busybox_1。(此时的 busybox_1存在文件系统的/bin文件夹下)
/usr/sbin/telnetd & 即为开机启动telentd服务(作为telnet server)。
4. 生成修改过后的ramdisk文件系统
1) 卸载文件系统
跳到/mnt/loop目录外,否则无法卸装,提示busy

    #cd ramdisk所在目录
    #umount /mnt/loop

2) 压缩文件系统

    #gzip -v9 ramdisk  
即可生成ramdisk.gz文件

三、 测试telent服务。
本文中使用pcie的ep模式通过x86的ubuntu主机启动DM8168芯片,x86主机通过pcie方式把uboot, kernel, ramdisk.gz拷贝到DM8168的内存,从而启动DM8168中的linux系统。
这里写图片描述

通过window系统的telent登录,也可成功,如下图:
这里写图片描述
本文参考以下文档:
1. Busybox移植到ARM Linux 教程:
http://www.veryarm.com/491.html
2. 嵌入式Linux根文件系统Ramdisk制作过程:
http://design.eccn.com/design_2011062210364082.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值