成功移植OpenSSH到ARM Linux开发板
- 格式:docx
- 大小:6.75 KB
- 文档页数:4
Linux开发环境的搭建1.arm交叉编译链的安装2.NFS服务器的安装3.tftp服务器的安装4.触摸屏驱动库的安装编译5.编译安装qt-everywhere-opensource-src-4.8.1需要的文件及库:1.arm-2009q1-203-arm-none-linux-gnueabi2.fs.tar.gz3.tslib-1.44.qt-everywhere-opensource-src-4.8.11.arm交叉编译链的安装见附录6:arm-2009q1-203-arm-none-linux-gnueabi安装测试交叉编译器是否安装成功,执行如下命令:HOST $ arm-none-linux-gnueabi-gcc -v如果显示编译器的版本信息说明安装成功。
2.NFS服务器的安装见附录7:安装完成后,在/home/wws/目录下执行如下指令:sudo gedit nfs.shnfs.sh的内容如下:HOST $ sudo /etc/init.d/portmap restartHOST $ sudo /etc/init.d/nfs-kernel-server restart保存后执行source nfs.sh以后只要在主目录下执行上述source命令就可以重启nfs服务器测试 NFS 服务器是否安装成功,执行如下命令:HOST $ showmount -e若显示 /home/wws/wws_nfs*则说明安装成功。
3.tftp服务器的安装具体安装过程见附录8:安装完成后,执行:sudo gedit tftp.sh其内容如下:HOST $ sudo /etc/init.d/xinetd restartHOST $ sudo /etc/init.d/tftpd-hpa restart保存在主目录下,当开发板找不到链接,出现T T T T.......等时,无需重启系统,只需执行source tftp.sh重启tftp服务器即可,或者直接执行上述两条指令来重启服务器。
lrzsz串口工具移植到ARM Linux教程lrzsz是一个Unix通信包,提供XMODEM、YMODEM和ZMODEM文件传输协议。
lrzsz 以前是Omen科技的主打软件,现在已经免费,并且遵循GNU开源协议。
lrzsz适合这样一种开发环境,一块板子,除了串口,没有任何外部出入输出设备,没有sd卡,没有网线,这个时候如果想跟这块板子传输交互文件,就需要用到串口传输了。
根据modem所采用的文件传输协议:xmodem、ymodem、zmodem 将其分类∙xmodem:简单通用,传输信息单位是“包=128B”,传输速度慢,适合电话线路质量差的情况下用。
∙ymodem:由XMODEM演变来,效率可靠性高“包=128*8B”,一次传输可发送或接受几个文件。
∙zmodem:与上两种不同,已连续的数据流发送数据,效率更高。
在ubuntu主机中可以直接使用rz或者sz命令与secureCRT交互文件,如果想在开发板中,上传下载文件的话,需要移植完整版的lrzsz到开发板,使用其完整功能。
移植步骤:1 下载源码包首先下载最新版的lrzsz,地址:https://ohse.de/uwe/software/lrzsz.html。
下面以 0.12.20 版本为例,下载源码包为:lrzsz-0.12.20.tar.gz。
2 复制并解压源码包3 配置4 编译安装make完成之后,会在当前目录 src/ 下生成 lrz 和 lsz 两个文件。
5 复制到目标板并执行通过网络、U盘、SD卡等方式,将生成的 lrz 和 lsz 复制到目标板的/usr/sbin 目录,并在目标版上添加可执行权限:6 配置串口在使用之前,需要设置串口:7 测试在目标版上,执行 lrz 命令将文件从PC机传送到目标版上,执行 lsz 命令将文件从目标版传到PC机上:参考地址:∙/embed/html/201406/2557.html∙/seven_7_one/blog/static/162606412201011131116 45638/。
linux移植到arm学习感悟linux移植到arm是我们必修的一门课,这次实训的主要内容就是把linux移植到arm处理器上。
在操作系统方面可能很多人不是很熟悉,现在我简单介绍一下,如果想深入了解linux,请参看其他资料。
以下是我在学习中的心得体会:一、目标要明确大家都知道,进行任何项目开发前,首先要有个明确的目标。
做linux移植到arm时我们首先要根据自己设计好的流程图和软件架构,利用现有的Linux 基础知识来完成任务,比如定制一个java框架、设计一个安全框架、利用一些工具调试出一个完整的功能,并且移植到arm处理器上运行。
三、移植分工合作老师说过当你遇到问题时,你身边的同学就是你最好的帮手。
当别人遇到问题向你求助时,请不要拒绝,要虚心地帮他们解决,千万不要表现出不耐烦的情绪。
特别是别人有什么不懂的地方时,请不要吝啬,要耐心细致地指导他们,让他们感受到被重视,从而更加积极地去完成任务。
例如:如果遇到内核的安装问题时,有的同学第一反应就是求助别人,但有的同学可能会先自己研究一下,并独立地找到解决方法,再告诉别人,这样做既培养了他们的动手能力,又提高了他们独立思考的能力。
四、考试考试结束后,我认为最关键的就是查缺补漏,为第二天的考试打好基础。
所以对于一些没有掌握好的知识点,老师说过一定要多复习。
对于复习阶段中涉及的概念、公式、命令等内容,平时都要勤加练习,做到“熟能生巧”。
我想这一点在移植到arm处理器中也是很重要的。
五、心态调整不管做什么事,都需要端正自己的态度。
虽然我们学的是linux,但只要你真正热爱这门技术,用心钻研,任何事都能学好。
同时,也要保持一种良好的心态,要相信任何事都是能够做好的,只要付出努力。
当然,学习是一个长期的过程,可能会遇到各种困难,但不管怎样都要坚持不懈地努力,做一个执着的人。
六、最后感悟这次linux移植到arm处理器实训收获挺大,我觉得学到了以前在课堂上学不到的东西,提高了自己独立解决问题的能力。
40软件开发与应用Software Development And Application电子技术与软件工程Electronic Technology & Software Engineering嵌入式系统的构成上主要包括两个部分,即计算机的硬件部分和软件部分。
ARM 系列属于计算机硬件;Linux 系统属于计算机软件类。
嵌入式系统所以计算机技术成果,是建立在满足用户个性化需求的基础上的。
在硬件和软件方面,具有加减特性,无论是部件的增加或者减少,都会保证系统的正常运行,而且系统的性能可靠。
系统在运行中具有良好的灵活度,功耗比较低,而且成本得到有效控制,且具有长时间的待机时间。
嵌入式系统中,ARM 作为架构硬件平台存在。
系统的各项操作80%以上都可以在这个平台上完成[1]。
Linux 系统所发挥的作用也是如此。
ARM 将位数不断扩展,功能也会不断增强,使得智能化的软件系统的建构更为方便。
嵌入式系统的CPU 与普通的计算机系统不同,ARM 的编址上,内存与I/O 设备是同时进行的,指令系统得到优化,指令的灵活度比较高,也提高了系统的运行效率。
ARM 将存储器使用寄存器代替,系统的运行速度得到提升。
在编址的时候,将大端格式与小端格式结合,灵活的组织形式使得操作更加方便。
ARM 和Linux 都是嵌入式系统具有代表性的产品,要在ARM 平台下实现Linux 嵌入式系统移植,就要针对相关的问题深入研究。
1 Linux系统的性能Linux 系统作为一个操作系统,其是公开源代码的操作系统软件,开放的源代码,只要登上Linux 官方网站,每个版本都可以下载后安装使用。
这项功能与嵌入式系统的要求相符合,也就是说代码的使用的过程中是可以灵活定制的,以满足个性化需求,当然,在普通的计算机上可以运行,在任何的智能终端设备上也可以运行。
根据有关统计数据显示,当前Linux 软件已经在超过一半的智能设计软件上应用,内核使用模块化的配置,在使用中可以灵活组合。
openssh 用法Openssh 是一种用于安全远程连接的工具,可以在不安全的网络上建立加密的连接。
它允许用户通过网络远程登录、传输文件和执行命令。
本文将为你介绍openssh 的基本用法及其常见应用场景。
第一步:安装Openssh要使用openssh,首先需要在你的计算机上安装它。
通常情况下,大多数Linux 发行版都会默认安装openssh,而Windows 和macOS 用户则需要手动安装。
对于Windows 用户,可以从官方网站下载适用于Windows 的openssh 客户端。
而对于macOS 用户,则可以通过Homebrew 或MacPorts 安装openssh。
第二步:连接到远程主机一旦openssh 安装完成,你就可以使用它来连接到远程主机。
在命令行中输入以下命令来连接到远程主机:bashssh username@remote_host其中,username 是远程主机上的用户名,remote_host 是远程主机的IP 地址或域名。
当你第一次连接到一个远程主机时,openssh 会要求你确认主机的密钥指纹。
确认无误后,openssh 将在本地创建一个密钥对,并将公钥传输至远程主机,以建立加密连接。
第三步:文件传输Openssh 还可以用来在本地计算机和远程主机之间传输文件。
你可以使用scp 命令将文件从本地计算机传输至远程主机,或者从远程主机传输至本地计算机。
例如,要将本地文件foo.txt 传输至远程主机上的/home/username 目录下,你可以使用以下命令:bashscp foo.txt username@remote_host:/home/username类似地,如果想从远程主机传输文件至本地计算机,你可以使用以下命令:bashscp username@remote_host:/home/username/foo.txt .第四步:执行远程命令Openssh 还可以用来在远程主机上执行命令。
Linux系统下OpenSSH的安装及基本配置⽂件详解远程安装调试SSH特别注意,OpenSSH卸载后,可能导致凡使⽤SSH协议连接服务器的⼯具都⽆法登陆,⽐如WINSCP、PUTTY等,如果你正使⽤远程桌⾯,最好先开启TELNET并确保开机启动(或其它可替代的远程管理⼯具也可以),客户端可以正常连接后才可动⼿更新SSH,否则⼀旦SSH启动失败,就只能找机房了。
⼀、卸载原来SSH默认SSH会安装为服务,且开机启动,所以要先把服务停⽌(本⽂环境RedHat5.4):复制代码代码如下:service sshd stop这时,建议备份⼀下/etc/init.d/sshd这个启动⽂件,因为下⽂编译安装OpenSSH后,没这个启动⽂件,尽管实际修改使⽤也不是太⽅便,除⾮你下⽂的安装⽬录跟原来的⼀样的。
复制代码代码如下:mv /etc/init.d/sshd /etc/init.d/sshd.old卸载软件包:复制代码代码如下:rmp -qa|grep openssh*把输出列表中的SSH软件包都卸载掉。
卸载⽅法请参考:⼆、下载并安装新的OPENSSH复制代码代码如下:cd /tmpwget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gztar xzvf openssh-5.9p1.tar.gzcd openssh-5.9p1./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr/local/openssl --with-md5-passwords --mandir=/usr/share/man --with-zlib=/usr/local/zlib2make && make install这⾥需要注意,上⾯的./configure配置,天缘的默认路径如下:复制代码代码如下:openssl -> /usr/local/opensslzlib -> /usr/local/zlib2确认这些路径跟你的系统对应。
3. 交叉编译 建立目录结构 /EmbSSH compressed 用于存放源码包 Install 软件安装目录 Source 源码包解压目录 将openssh-4.6p1.tar.gz、openssl-0.9.8e.tar.gz、zlib-1.2.3.tar.tar四个文件放到compressed目录下
(1)交叉编译 zlib cd /EmbSSH/compressed/ tar xvf zlib-1.2.3.tar.tar -C ../source cd ../source/zlib-1.2.3 ./configure --prefix=/EmbSSH/install/zlib-1.2.3 --shared 修改Makefile中的如下信息 CC=arm-linux-gcc AR=arm-linux-ar rc CPP =arm-linux-gcc -E LDSHARED=arm-linux-gcc 执行 make sudo make install
(2)交叉编译openssl cd /EmbSSH/compressed/ tar zxvf openssl-0.9.8e.tar.gz -C ../source cd ../source/openssl-0.9.8e ./Configure --prefix=/EmbSSH/install/openssl-0.9.8e os/compiler:arm-linux-gcc make make install
(3)交叉编译openssh cd /EmbSSH/compressed tar zxvf openssh-4.6p1.tar.gz C ../source cd ../source/openssh-4.6p1 ./configure --host=arm-linux --with-libs --with-zlib=/EmbSSH/install/zlib-1.2.3 --with-ssl-dir=/EmbSSH/install/openssl-0.9.8e --disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-ar
openssh 编译OpenSSH是一组安全的网络连接工具,包括SSH客户端和服务器。
编译OpenSSH需要一些基本的开发工具和库。
以下是在Linux系统上编译OpenSSH的步骤:1. 安装编译OpenSSH所需的工具和库,例如GCC编译器、GNU make、OpenSSL开发库和zlib库。
```shell。
sudo apt-get install build-essential openssl libssl-devzlib1g zlib1g-dev。
```。
```shell。
tar -xzf openssh-8.6p1.tar.gz。
cd openssh-8.6p1。
```。
3. 配置和编译OpenSSH。
```shell。
./configure --prefix=/usr --sysconfdir=/etc/ssh --with-ssl-dir=/usr/include/openssl --with-zlib=/usr/include。
make。
sudo make install。
```。
其中, `--prefix`选项指定安装路径,`--sysconfdir`选项指定配置文件的路径,`--with-ssl-dir`选项指定OpenSSL的安装路径,`--with-zlib`选项指定zlib库的安装路径。
4. 启动OpenSSH服务器。
```shell。
sudo /etc/init.d/ssh start。
```。
现在,OpenSSH服务器已经成功编译并启动。
移植Qt5.5到arm开发板(全世界的问题我一个人碰完了)展开全文https:///qq_41399894/article/details/8647547 2前面安装Qt的步骤就不说了,下载好一路next就可以了,接下来一、首先要移植Qt必须要用到Qt的源码,在这里也是用Qt5的源码来移植。
源码可以在/archive/qt/下载,选择文件qt-everywhere-opensource-src-5.5.0.tar.gz下载。
2、把下载好的文件放在ubutun的/myTools/Qt/目录下,执行命令 tar zxvf qt-everywhere-opensource-src-5.5.0.tar.gz 来解压,解压完成后就会看到 qt-everywhere-opensource-src-5.5.0 目录。
3、接着就是开始进行编译的工作了。
首先进去目录/myTools/Qt/qt-everywhere-opensource-src-5.5.0/qtbase/mkspecs/linux-arm-gnueabi-g++ ,在这个目录下回看到qmake.conf文件,我们需要修改这个文件。
vim qmake.conf#qmake configuration for building with arm-linux-gnueabi-g++#MAKEFILE_GENERATOR = UNIXCONFIG += incrementalQMAKE_INCREMENTAL_STYLE = sublibQT_QPA_DEFAULT_PLATFORM = linuxQMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a // march是处理器架构,我的是armv7-aQMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-ainclude(../common/linux.conf)include(../common/gcc-base-unix.conf)include(../common/g++-unix.conf)#modifications to g++.confQMAKE_CC = arm-none-linux-gnueabi-gccQMAKE_CXX = arm-none-linux-gnueabi-g++QMAKE_LINK = arm-none-linux-gnueabi-g++QMAKE_LINK_SHLIB =arm-none-linux-gnueabi-g++# modifications to linux.confQMAKE_AR = arm-none-linux-gnueabi-ar cqsQMAKE_OBJCOPY =arm-none-linux-gnueabi-objcopy QMAKE_NM = arm-none-linux-gnueabi-nm -PQMAKE_STRIP = arm-none-linux-gnueabi-stripload(qt_config)如果这里.对芯片的指令集没有选择好QT_QPA_DEFAULT_PLATFORM = linuxQMAKE_CFLAGS_RELEASE += -O2 -march=armv7-aQMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a在开发板运行过程中,运行有提示:Illegal instruction (非法指令)这里要注意,每个人的交叉编译器的前缀都是不一样的,我的就是arm-none-linux-gnueabi-,需要注意还有就是如果你有多个交叉编译器,那么这里你要设置为绝对路径然后去解压目录下,即是/myTools/Qt/qt-everywhere-opensource-src-5.5.0/,每个人存放的目录都不要,这里我是直接运行./configure -prefix /opt/qt-5.5 -release -opensource -xplatform linux-arm-gnueabi-g++ -no-opengl这里你会发现,在运行结束后,会提示你需要你添加一句qreal float的意思,xplatform linux-arm-gnueabi-g++ -no-opengl -qreal float 我加上了之后,重新运行,提示我们make和make install,我make了之后Project ERROR: Unknown module(s) in QT: quickMakefile:47: recipe for target 'sub-textureandlight-make_first' failedmake[4]: *** [sub-textureandlight-make_first] Error 3make[4]: Leaving directory '/home/jay/qt-x11/qtcanvas3d/examples/canvas3d/canvas3d'Makefile:42: recipe for target 'sub-canvas3d-make_first' failedmake[3]: *** [sub-canvas3d-make_first] Error 2make[3]: Leaving directory '/home/jay/qt-x11/qtcanvas3d/examples/canvas3d'Makefile:42: recipe for target 'sub-canvas3d-make_first' failedmake[2]: *** [sub-canvas3d-make_first] Error 2make[2]: Leaving directory '/home/jay/qt-x11/qtcanvas3d/examples'Makefile:69: recipe for target 'sub-examples-make_first' failedmake[1]: *** [sub-examples-make_first] Error 2make[1]: Leaving directory '/home/jay/qt-x11/qtcanvas3d' Makefile:349: recipe for target 'module-qtcanvas3d-make_first' failedmake: *** [module-qtcanvas3d-make_first] Error 2这里的错误现象是百度复制过来的的,因为我编译成功了,不想卸了重装,但是问题大概就是这样,这个解决方法:你可以忽略它所找不到的,在后面加上xplatform linux-arm-gnueabi-g++ -no-opengl -skip qt3d -skip qtcanvas3d -nomake examples -skip qtdeclarative -no-icon 看到这个 -no-iconv,如果没有设置它,当你运行qt程序的时候,会出现QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failedQIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed所以一定要加上,如果你忘了添加,就(1) 下载链接:/gnu/libiconv/(2) 配置并安装安装./configure --prefix=/home/chy/out --host=arm-none-linux-gnueabi-gccmakemake install(3) 复制preloadable_libiconv.so到开发板的/lib目录,并配置在/etc/profile添加export LD_PRELOAD=/lib/preloadable_libiconv.so先make clean,清除之前生成的,再make,后面会出现就会出现../../include/QtCore/../../src/corelib/tools/qbytearray.h:98:19: note: the mangling of 'va_list' has changed in GCC 4.4 make[3]: *** [.obj/qpdf.o] 错误 1make[3]: *** 正在等待未完成的任务....make[3]:正在离开目录`/myTools/Qt/qt-everywhere-opensource-src-5.5.1/qtbase/src/gui'make[2]: *** [sub-gui-make_first] 错误 2make[2]:正在离开目录`/myTools/Qt/qt-everywhere-opensource-src-5.5.1/qtbase/src'make[1]: *** [sub-src-make_first] 错误 2make[1]:正在离开目录`/myTools/Qt/qt-everywhere-opensource-src-5.5.1/qtbase'make: *** [module-qtbase-make_first] 错误 2这里是因为前面提示我们添加-qreal float,而添加了之后就出现了这个问题相对文件是Qt源代码。
关于SSH服务的移植(一)移植准备以ubuntu作为开发平台,并设置好开发环境,如:交叉编译工具链等。
当前使用的用户(ubuntu)。
以机顶盒为要移植的平台,其使用的用户是sunniwell。
(二)交叉编译SSH服务a)下载zlib软件包,并进行交叉编译。
因为zlib软件包有SSH的一个依赖库,所以要先交叉编译它,生成相应的库和文件。
$wget /software/zlib-1.2.3.tar.gz$tar -zxvf zlib-1.2.3.tar.gz由于zlib 库的configure 脚本不支持交叉编译选项,只好自己动手了,手动临时把gcc 、ln、ar修改成指向我们的交叉编译器mipsel-linux-gcc、mipsel -linux-ld、mipsel -linux-ar。
$cd /usr/bin$mv gcc gcc_back$ln –s /opt/toolchains/ crosstools_sf-linux-2.6.12.0_gcc3.4.6-20_uclibc-0.9.28-\ 20050817-20070131/bin / mipsel -linux-gcc ./gcc$mv ld ld_back$ln –s /opt/toolchains/ crosstools_sf-linux-2.6.12.0_gcc3.4.6-20_uclibc-0.9.28-\ 20050817-20070131/bin / mipsel -linux-ld ./ld$mv ar ar_back$ln –s /opt/toolchains/ crosstools_sf-linux-2.6.12.0_gcc3.4.6-20_uclibc-0.9.28-\ 20050817-20070131/bin / mipsel -linux-ar ./ar注意:这里是通过链接的方法更改编译器,也可以把所有Makefile里的gcc、ln、ar手动改成mipsel-linux-gcc、mipsel -linux-ld、mipsel -linux-ar,但这样比较慢。
thttpd在ARM移植1 下载并解压:下载地址为:/software/thttpd/ 下载的是最新的2.25b解压:2 交叉编译thttpd3 安装与配置3.1 拷贝thttpd二进制可执行文件到根文件系统/usr/sbin/目录中3.2 拷贝thttpd配置文件3.3在开发板上为thttpd创建一个独立的用户:httpd,并用此用户创建httpd服务的根目录html3.4 拷贝测试网页到httpd服务的根目(可选,测试之用):我是动态编译所以查看一下需要的动态库Tag Type Name/Value0x00000001 (NEEDED) Shared library: [libcrypt.so.1]0x00000001 (NEEDED) Shared library: [libc.so.6]0x0000000c (INIT) 0x95480x0000000d (FINI) 0x165640x00000004 (HASH) 0x81280x00000005 (STRTAB) 0x8c140x00000006 (SYMTAB) 0x84940x0000000a (STRSZ) 1066 (bytes)0x0000000b (SYMENT) 16 (bytes)0x00000015 (DEBUG) 0x00x00000003 (PLTGOT) 0x220e40x00000002 (PLTRELSZ) 872 (bytes)0x00000014 (PLTREL) REL0x00000017 (JMPREL) 0x91e00x00000011 (REL) 0x91a00x00000012 (RELSZ) 64 (bytes)0x00000013 (RELENT) 8 (bytes)0x6ffffffe (VERNEED) 0x91300x6fffffff (VERNEEDNUM) 20x6ffffff0 (VERSYM) 0x903e0x00000000 (NULL) 0x0虽然这里只列出了需要libcrypt 和 libc 这两个动态库,但是想要运行thttpd 还需要libnss_files 动态库,具体原因如下解释:你可以在启动文件里增加thttpd的启动命令:thttpd -C /etc/thttpd.conf注意只有root有启动权限!4、增加对CGI的支持默认配置下,thttpd不可以运行GCI(特别是动态编译的CGI程序)要想使用CGI支持功能,必须更改thttpd.conf的配置:移植完成,可以测试了(只需在WEB浏览器中键入开发板的IP地址即可)。
移植sshd到JK2410开发板1.引言SSH是由芬兰的一家公司开发出来的,但是由于版权和加密算法的限制,openssh作为一种安全的网络服务应用程序在业界被广泛应用。
Openssh是ssh的代替软件而且免费。
在上篇文档《移植OProfile到JK2410开发板》中有提到,Montavista 公司提供的应用程序开发和系统分析工具devrocket在调试和分析性能时需要在开发板和主机之间建立一条连接,通过ssh协议通信。
由于JK2410开发板上没有配置sshd伺服程序,所以需要将sshd移植到JK2410开发板上。
2.环境硬件环境:Host:X86 PCTarget:JK2410开发板软件环境:Host:VMware 6OS:CentOS 5Strace 调试工具Target:OS:linux-2.6.18 pro500RootFS: initrd-edwin-25M.imgStrace 调试工具3.移植步骤源码包:openssh-4.6p1.tar.gz /portable.htmlopenssl-0.9.8e.tar.gz /sourcezlib-1.2.3.tar.tar /编译工具arm-9tdmi-linux-gnu-gccarm-9tdmi-linux-gnu-g++3.1. 交叉编译在/work目下面创建ssh目录# mkdir /work/lib ----〉共享库目录,通过nfs挂载# mkdir /work/ssh -----〉工作目录# cd /work/ssh# mkdir compressed install source -----〉compressed 用于存放源码包Install 软件安装目录Source 源码包解压目录#mv tarpakgs/openssh-4.6p1.tar.gz /work/ssh/compressed#mv tarpakgs/openssl-0.9.8e.tar.gz /work/ssh/compressed#mv tarpakgs/zlib-1.2.3.tar.tar /work/ssh/compressed交叉编译zlib# cd /work/ssh/compressed/# tar xvf zlib-1.2.3.tar.tar -C ../source# cd ../source/zlib-1.2.3# ./configure --prefix=/work/ssh/install/zlib-1.2.3# vim MakefileCC=arm-9tdmi-linux-gnu-gccAR=arm-9tdmi-linux-gnu-ar rcCPP =arm-9tdmi-linux-gnu-gcc -ELDSHARED=arm-9tdmi-linux-gnu-gcc# make# make install交叉编译openssl# cd /work/ssh/compressed/# tar zxvf openssl-0.9.8e.tar.gz -C ../source# cd ../source/openssl-0.9.8e# ./Configure --prefix=/work/ssh/install/openssl-0.9.8e os/compiler:arm-9tdmi-linux-gnu-gcc//这个应该是参考的文档中CC=arm-none-linux-gnueabi-gcc CFLAGS="-I/xxx/zlib/include" LDFLAGS="-L/xxx/zlib/lib" ./Configure --prefix=/xxx/openssl os/compiler:linux-armv4# make# make install交叉编译openssh# cd /work/ssh/compressed# tar zxvf openssh-4.6p1.tar.gz –C ../source# cd ../source/ openssh-4.6p1#./configure --host=arm-9tdmi-linux-gnu --with-libs --with-zlib=/work/ssh/install/zlib-1.2.3 --with-ssl-dir=/work/ssh/install/openssl-0.9.8e --disable-etc-default-loginCC=arm-9tdmi-linux-gnu-gcc AR=arm-9tdmi-linux-gnu-ar打印出如下信息:OpenSSH has been configured with the following options:User binaries: /usr/local/binSystem binaries: /usr/local/sbinConfiguration files: /usr/local/etcAskpass program: /usr/local/libexec/ssh-askpassManual pages: /usr/local/share/man/manXPID file: /var/runPrivilege separation chroot path: /var/emptysshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/binManpage format: docPAM support: noOSF SIA support: noKerberosV support: noSELinux support: noSmartcard support: noS/KEY support: noTCP Wrappers support: noMD5 password support: nolibedit support: noSolaris process contract support: noIP address in $DISPLAY hack: noTranslate v4 in v6 hack: yesBSD Auth support: noRandom number source: OpenSSL internal ONL YHost: arm-9tdmi-linux-gnuCompiler: arm-9tdmi-linux-gnu-gccCompiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -std=gnu99 Preprocessor flags: -I/work/ssh/install/openssl-0.9.8e/include-I/work/ssh/install/zlib-1.2.3/includeLinker flags: -L/work/ssh/install/openssl-0.9.8e/lib-L/work/ssh/install/zlib-1.2.3/libLibraries: -lresolv -lcrypto -lutil -lz -lnsl -lcrypt3.2. 安装sshd按照上面打印出的信息在根文件系统中建立相应的目录并把相应的文件拷贝进去。
openssh编译要编译OpenSSH,您需要按照以下步骤进行操作:1. 确保您已经安装了所需的依赖项。
在大多数Linux发行版上,您可以使用包管理器安装它们。
例如,在Ubuntu上,您可以使用以下命令安装依赖项:```arduinosudo apt-get install build-essential libssl-dev libpam0g-dev```2. 获取OpenSSH源代码。
您可以从OpenSSH的官方网站或使用git克隆源代码。
如果您选择使用git,请运行以下命令:```bashgit clone```3. 进入源代码目录:```bashcd openssh```4. 配置源代码。
运行以下命令以配置OpenSSH的编译选项:```go./configure --prefix=/usr --sysconfdir=/etc --with-pam --with-ssl-dir=/usr/ssl --with-libssl-prefix=/usr/ssl```这将设置编译选项,以便将OpenSSH安装在系统上的适当位置。
请注意,上述命令中的选项可能因您的需求而有所不同。
您可以根据自己的需要进行调整。
5. 编译OpenSSH。
运行以下命令以开始编译过程:```gomake```这将编译OpenSSH并生成可执行文件和库文件。
6. 安装OpenSSH。
运行以下命令以将编译结果安装到系统中:```bashsudo make install```这将将OpenSSH的可执行文件和库文件复制到适当的位置,并可能要求您提供管理员密码。
7. 配置OpenSSH服务器。
在安装完成后,您需要配置OpenSSH服务器以使用新的版本。
根据您的需求,您可能需要编辑`/etc/ssh/sshd_config`文件并调整相关设置。
然后,重新启动OpenSSH服务器以使更改生效。
在大多数Linux发行版上,可以使用以下命令重新启动OpenSSH服务器:```sqlsudo service ssh restart```或者,如果您使用的是systemd,可以使用以下命令:```sqlsudo systemctl restart sshd完成这些步骤后,您应该已经成功编译和安装了OpenSSH服务器。
基于ARM的嵌入式Linux操作系统的移植
随着电子产品的飞速发展,嵌入式系统已经在这个社会上无处不在。
操作系统作为嵌入式产品的灵魂,一定要依据产品的需要安装合适的操作系统,以便于可以更好的编写应用程序。
本文的研究目的是将Linux操作系统移植到
QQ2440开发板。
操作系统移植的目的是为了能够更好的利用开发板开发应用程序,本文将Linux2.6版本内核移植到QQ2440开发板,使开发板可以用于工业过程控制。
本文简单介绍了嵌入式系统的特点、ARM体系结构、嵌入式Linux操
作系统。
重点描述了Linux操作系统的移植,论文在Linux操作系统移植研究中,首先,进行了移植环境的设计和搭建,建立交叉编译环境,配置网络文件系统NFS。
然后,对Linux2.6版本内核和vivi进行配置和编译并以yaffs文件系统为例,介绍了yaffs根文件系统映象的制作。
最后,介绍了一种解决内核实时化的方法。
在论文的最后,给出了嵌入式Linux驱动程序的概念与结构以及开发流程,并进行了UART2串口以及LCD显示屏驱动的开发。
全文详细的描述了嵌入式Linux操作系统移植的流程,在基于QQ2440开发板上给出了bootloader、内核以及文件系统移植的实现方法。
并给出了解决Linux内核实时化的一种算法并进行了驱动程序的开发。
【关键词相关文档搜索】:微电子学与固体电子学; ARM体系结构; Linux操作系统; 移植; 驱动开发
【作者相关信息搜索】:西安电子科技大学;微电子学与固体电子学;宣荣喜;田磊;。
虚拟机Linux系统连接ARM开发板的方法基本环境: eY8Linux联盟主机OS:Windows XP eY8Linux联盟虚拟机:VMware Workstation 6.0 eY8Linux联盟虚拟OS:fedora 7.0 eY8Linux联盟ARM型号:华恒HHARM2410 eY8Linux联盟步骤: eY8Linux联盟1.在虚拟机中增加串口: eY8Linux联盟点击Edit virtue machine settings,点击添加,添加一个串行端口(com1); eY8Linux联盟2.修改网络连接: eY8Linux联盟右键点击虚拟机上网卡图标,选择“Edit”,将“系统”网络连接改为桥接网络(第一个选项)。
eY8Linux联盟3.设置以太网卡: eY8Linux联盟点击“系统”-》“管理”-》“网络”,在弹出框内选中eth0,然后点编辑,静态设置ip,写入ip地址即可(必须要保证主机的ip与开发板的ip在同一网段内,用ifconfig命令在minicom终端下可以看到开发板的ip地址,我的为192.168.2.222,故将主机ip设置为 192.168.2.111)。
确定后激活完成。
eY8Linux联盟4.设置NFS和TFTP服务: eY8Linux联盟在终端输入setup,选择System service,选择nfs,选择tftp,去掉[ ]iptables和[ ]ipchains(如果有这个的话)前面的星号。
(在这里我出现找不到tftp的情况,选择使用YUM下载xinetd服务并按装,然后就可以看到telent、tftp等选项)。
选择禁用防火墙后退出setup界面返回到命令行提示符下。
eY8Linux联盟# vi /etc/exports eY8Linux联盟将这个默认的空文件添加下面一行内容: eY8Linux联盟/ *(rw) 保存退出 eY8Linux联盟# service nfs restart //重新启动NFS 服务 eY8Linux联盟Shutting down NFS mountd: [ OK ]Shutting down NFS daemon: [ OK ]Shutting down NFS quotas: [ OK ]Shutting down NFS services: [ OK ]Starting NFS services: [ OK ]Starting NFS quotas: [ OK ]Starting NFS daemon: [ OK ]Starting NFS mountd: [ OK ]启动完成后,可用如下办法简单测试一下 NFS是否配置成功——PC 机自己mount 自身。
成功移植OpenSSH到ARM Linux开发板
概述
如果是用到一些没有SSH的开发板,对于部分的应用开发来说,会受到影响,比如使用ARM DS-5进行RSE远程管理操作时,就会出现错误。
下面就具体如何进行OPENSSH移植进行详细介绍。
步骤
1.下载源码包如下,下载 openssh、openssl 和 zlib 三个包。
openssh
•本地下载:openssh-6.6p1.tar.gz(1.22 MB, 下载次数: 2470)
•官网下载:/portable.html
openssl
•本地下载:openssl-1.0.1h.tar.gz(4.27 MB, 下载次数: 2647)
•官方下载:/source
zlib
•本地下载:zlib-1.2.8.tar.gz(557.71 KB, 下载次数: 3499)
•官方下载:/
2.部署工作目录创建用户主目录下创建工作目录:
1 2$ mkdir/home/gary/work $ cd/home/gary/work
在 work 目录下面创建安装目录:
1 2$ mkdirinstall$ mkdirinstall/zlib $ mkdirinstall/openssl
3.解压并编译
把以上下载的3个安装包复制到 work 目录下,并解压,解压命令:
1 2$ tarzxvf zlib-1.2.8.tar.gz
$ tarzxvf openssl-1.0.1h.tar.gz$ tarzxvf
openssh-6.6p1.tar .gz
a )交叉编译 zlib
1 2 3 $ cdzlib-1.2.8 $ ./configure--prefix=/home/gary/work/install/zlib
$ viMakefile
将 Makefile 中的交叉编译工具改成当前开发板使用的交叉编译工具:
1 2
3 4 5 6 CC=/usr/local/arm-2010q1/bin/arm-none-linux-
gnueabi-gcc AR=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-ar CPP=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc LDSHARED=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gcc $ make
$ makeinstall
b )交叉编译openssl
1 2 3 4
$ cd../openssl-1.0.1h $ ./Configure--prefix=/home/gary/work/install/openssl os/compiler:/usr/local/ar m-2010q1/bin/arm-none-linux-gnueabi-gcc $ make $ makeinstall
c )交叉编译openssh
1 2 3 $ cd ../openssh-6.6p1 $ ./configure--host=arm-none-linux-gnueabi --with-libs --with-zlib=/home/gary/work/install/zlib--with-
ssl-dir=/home/gary/work/install/openssl--disable-etc-default-login CC=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-gccAR=/usr/local/arm-2010q1/bin/arm-none-linux-
gnueabi-ar
$ make
注意:openssh 不需要make install
4.操作目标板
a )确保目标板上有以下目录,若没有,则新建:
1 2 /usr/local/bin
/usr/local/etc
3 4 5/usr/libexec /var/run
/var/empty
b)从PC机上将以下文件拷贝到目标板Linux系统中
PC机 /home/gary/work/openssh-6.6p1/ 目录下的
•scp sftp ssh sshd ssh-add ssh-agent ssh-keygen ssh-keyscan 共8个文件拷贝到目标板 /usr/local/bin
•moduli ssh_config sshd_config 共3个文件拷贝到目标板 /usr/local/etc •sftp-server ssh-keysign 共2个文件拷贝到目标板 /usr/libexec
c)生成Key文件
在PC机 /work/ssh/source/openssh-6.6p1/ 目录下运行:
1 2 3 4$ ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
$ ssh-keygen -t dsa -f ssh_host_dsa_key -N "" $ ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -
N ""
$ ssh-keygen -t dsa -f ssh_host_ed25519_key
-N ""
将生成的 ssh_host_*_key 这4个文件copy到目标板的 /usr/local/etc/ 目录下。
其中 ssh_host_ed25519_key 是SSH第二版协议用到的key,放到开发板之后,要修改权限为 600,否则会提示以下错误:
1 2 3 4 5Permissions 0644
for'/usr/local/etc/ssh_host_ed25519_key'are too open. It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key:
/usr/local/etc/ssh_host_ed25519_key
Could not load host key:
/usr/local/etc/ssh_host_ed25519_key
修改权限的命令为:
1# chmod 600
/usr/local/etc/ssh_host_ed25519_key
d)修改目标板passwd文件。
在 /etc/passwd 文件最后添加下面这一行:
1sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
5.测试
如果开发板的 root 用户还没有密码,键入以下命令然输入两次密码来修改,否其他设备无法连:
1# passwd root
在目标板上运行:
1# /usr/local/bin/sshd
可以用 ps 命令查看sshd是否在工作
如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!
OK!不出意外的话可以成功,
主机上:
1$***************.1.250(开发板的ip)
然后输入开发板的root密码就就可以了,如下图连接成功:
相关帖子
SSH 移植到 ARM Linux 开发板上错误总结:http://www.myir-
/bbs/thread-6167-1-1.html。