Linux 利用 buildroot 移植 SSH

0、Buildroot 说明下载

  Buildroot 是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile脚本和Kconfig配置文件构成的。你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot、kernel、rootfs以及rootfs中的各种库和应用程序)。

  下载可通过以下链接,下载后解压即可
    发行版:http://buildroot.net/downloads/
    历史版本:http://buildroot.net/downloads/snapshots/
    对于buildroot与yocto的差异可移步:Buildroot vs OpenEmbedded or Yocto Project。

1、利用buildroot 先编译一个 ssh

cd buildroot-2022.11/
make menuconfig 

  

  关于 buildroot 的配置可以参考我另一个博客:https://www.cnblogs.com/xingboy/p/17029779.html

 1.1 Target options:目标板的配置,先配置目标板,根据你的目标板子需求配置

  

Target Architecture:目标架构,这里选择 ARM(little endian),ARM小端模式
Target Architecture Variant:架构体为 cortex
-A8,内核类型
Target ABI:应用程序二进制接口,为EABIhf
Floating point strategy:浮点数的策略,选择为 VFPv2
ARM instruction set:arm 汇编指令集,选择 ARM
Target Binary Format二进制格式,为 ELF

1.2 Toolchain:工具链选项,根据你的交叉编译器实际去配置

  

Toolchain type:Buildroot提供两种方式使用toolchain
                external toolthain:非Buildroot提供的交叉编译器,这里使用外部,选择此项
                Buildroot toolchain:Buildroot本身编译生成的Buildroot toolchain
Toolchain:客制化工具链,实际就是外部交叉编译器
Toolchain path:该项需要你选择外部工具链才会出,填你的交叉编译器路径,注意:平時配置交叉編譯器路徑 PATH 的時候會有 ‘/bin’ 這裏的路徑就不需要添加 '/bin' 部分
Toolchain prefix:你的交叉编译器前缀,根据你实际的交叉编译器
External toolchain gcc version:根据你实际的交叉编译器选择
External toolchain kernel headers series:根据你实际的交叉编译器选择
External toolchain C library:根据你实际的交叉编译器选择

1.3 Target packages:包管理;文件系统通常要包含很多第三方软件,通过该配置,自动从指定的服务器上下载源码包,自动编译,自动搭建,这里选择我们要的 SSH 服务

    Target packages  ---> 
        Networking applications  --->
            [*] openssh

1.4 保存退出,开始编译

make

2、将编译好的sshd 复制到 自己文件系统中

    cd ./output/target/
    sudo cp etc/ssh/   /home/filesystem/rootfs/etc/ -rf  # /home/filesystem/rootfs 是你保存自己制作的文件系统的路径,如果你只需要在现有板子的系统上升级,就复制到板子上的 /etc 文件夹即可,下面操作同样
    sudo cp etc/init.d/S50sshd   /home/filesystem/rootfs/etc/init.d/  -rf
    sudo cp usr/sbin/sshd   /home/filesystem/rootfs/usr/sbin/ -rf
    sudo cp usr/bin/ssh*   /home/filesystem/rootfs/usr/bin/  -rf.
   //一些文件系统可能还会缺失一些 lib 库文件,这时候可以把编译出来的缺失的对应的库文件复制进去,编译出来的库文件所在目录是 ./output/target/usr/lib ,
亦或者把整个目录替复制过去 cp ./output/target/usr/lib
/home/filesystem/rootfs/usr/lib
 /* ===== 下面部分根据自己需求修改 ===== */ 
// sudo vim etc/passwd 【 关于这个文件的说明可参考我另一篇博客 https://www.cnblogs.com/xingboy/p/16996402.html 】 sshd:x:1001:1001:SSH drop priv user:/:/bin/false // 修改配置文件 // sudo vim etc/ssh/sshd_config 43 #LoginGraceTime 2m 44 PermitRootLogin yes //这里设为yes才可以通过SSH服务登录你的系统 45 #StrictModes yes // 增加目录 sudo mkdir var/empty
    /*  给这几个文件给定 root 用户 */
    cd  /home/sbc_7109_454_pdk3/aplex/filesystem/rootfs  //跳转到移植过去的文件中
    sudo chown  root:root   etc/ssh/  etc/init.d/S50sshd  usr/bin/ssh* usr/sbin/sshd   -R  //修改文件所属用户

3、将该文件系统烧入板子, 启动

 

posted @ 2022-12-20 19:12  白菜没我白  阅读(1423)  评论(0编辑  收藏  举报