クロスコンパイルopenssh(JZ 2440+linux kernel 2.6.22.6)

4539 ワード

常用リモートログイン埋め込みlinuxシステムボード開発方式紹介
多くの埋め込みlinuxを走るパートナーは、ブロックボードを作って低バージョンのlinux kernelを移植し、さまざまなクロスコンパイル開発を経験すると信じています.しかし、シリアルポートを使用して端末のインタラクションを行うのは効率が低すぎて、telnetとsshを使用するのが良い選択です.telnetはbusyboxを移植すれば基本的にあります.sshは自分でクロスコンパイルして移植する必要があります.telnetは簡単で乱暴で使いやすいので、自分で開発して使えばいいのですが、楽しく深く遊びたいなら、クロスコンパイルしないでsshを振り回すことはできませんか?この2つの方法を紹介します.
Telnet
基本的にこの投稿を見ることができるのはbusyboxの移植が実現しており、telnetツールがあります.では、ボードの上でサービスをしてくれればいいです.
telnetd -l /bin/sh  

ユーザーパスワードを追加したことがない場合はパスワードを追加し、rootユーザーをそのまま使えばいいので、自分のボードでも他のユーザーを使って遡及することは考えなくてもいいです.
# passwd root

一部のパートナーは以下のエラーに遭遇します:passwd:unknown uid 0ネット上でlibの下にいくつかのダイナミックライブラリがないからだと言われていますが、私のボードの上にあるのを見て、最後にボード/etc/passwdの中の情報が間違っていることに気づきました.以下の方法で変更できます.
# echo root:x:0:0:root:/root:/bin/sh > /etc/passwd
# chmod 755 /etc/passwd
# passwd  root

次はオープンnsslでパスワードを設定する場合もありますが、上記の問題があればこのように解決できます.
クロスコンパイルopenssh
私のツールチェーンはarm-linux-gcc-3.4.5-glibc-2.3.6を自分のディレクトリの下に解凍し、vim setenv.shはパスを以下のように設定します.
    :export PATH=$PATH:/work/ssh/tools/gcc-3.4.5/gcc-3.4.5-glibc-2.3.6/bin
  
chmod 777 setenv.sh
source setenv.sh 

以下の流れは主に以下のリンクのこの2人の方法を参考にして、ダウンロード、構成、コンパイル、コピー、ソフト接続、実行などの各ステップから詳しく紹介するのが便利です.http://blog.sina.com.cn/s/blog_86d540e401019yie.html http://bbs.100ask.org/forum.php?mod=viewthread&tid=17941&highlight=ssh 具体的な方法は以下の通りです:1)ダウンロードする必要があるソースコードは公式サイトの下あるいは国外のミラーの下からとても遅くて、ネット上で検索することができて、あるいはgithubから上下しましょう:github-tools.zlib:zlib-1.2.3.tar.gzをダウンロードしますhttp://www.zlib.net ダウンロードssl:openssl-0.9.8 e.tar.gzhttp://www.openssl.org/source/ダウンロードssh:openssh-4.6 p 1.tar.gzhttp://mirror.aarnet.edu.au/pub/OpenBSD/OpenSSH/portable/2』コンパイル/home/armの下で新しいディレクトリsshworkを作成し、ソースコードをディレクトリの下mkdir/home/arm/sshwork cp zlib-1.2.3.tar.gz openssl-0.9.8 e.tar.gzopenssh-4.6 p 1.tar.gz/home/arm/sshwork/home/arm/sshworkの下に新しいディレクトリlibを作成し、生成したライブラリファイルを保存します.mkdir/home/arm/sshwork/lib 1、zlib tar zxvfzlib-1.2.3.tar.gz-C.cd zlib-1.2.3/./configure-prefix=/home/arm/sshwork/lib/zlib-1.2.3修正Makefile:CC=gccを変更:CC=arm-linux-gcc LDSHARED=gccを変更:LDSHARED= arm-linux-gccccCPP=gcc-Eを変更:CPP=arm-linux-gcc-gcc-ARE=AREを変更:CPP=arm-linux-gcc-gcc-ARE=ARE=ARE=ARE=ARE=ARArrc変更:AR=arm-linux-arrcコンパイル開始:make make install 2、コンパイルopenssl tar zxvf openssl-0.9.8 e.tar.gz./configure--prefix=/home/arm/sshwork/lib/openssl-0.9.8 dos/compiler:arm-linux-gcc make install 3、コンパイルopenssh tar zxvf openssh-4.6 p 1.tar.gz cd openssh-4.6 p 1/./configure-host=arm-linux-with-libs-with-zlib=/home/arm/sshwork/lib/zlib-1.2.3-with-ssl-dir=/home/arm/sshwork/lib/openssl-0.98 e-disable-etc-default-login CC=arm-linux-gcc AR=arm-linux-arke##make install
3』インストールターゲットボードに次のディレクトリがあることを確認し、ない場合は新規(ディレクトリ階層が重要で変更しない)/usr/sbin/usr/local/bin/usr/local/libexec/usr/local/etc/1、openssh-4.6 p 1ディレクトリの下でusr binディレクトリを作成し、ファイルを一時的にここにコピーします.次に開発ボードcd openssh-4.6 p 1 mkdir-p bin mkdir-p usr/sbin mkdir-p usr/local/bin mkkdir-p usr/local/bin mkdir-p usr/local/libexecmkdir-p usr/local/etc#sshd作業ディレクトリmkdir-p var/run mkdir-p var/empty/shd chmod sshd var/empty 2、opnssh-4.6 p 1に録画したsshdをターゲットボードにコピーする/usr/usr/sbir/sbir/sbir/sbir/sbir/sbir/sbir/sbir/sbir nディレクトリ下cp sshd./usr/sbin 3、copy scp sftp sshssh-add ssh-agent ssh-keygen ssh-keyscanをターゲットボード/usr/local/binディレクトリの下cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan./usr/local/bin 4、sshd_config ssh_configコピー/usr/local/etc/ディレクトリ下cp sshd_config ssh_config./usr/local/etc 5、sftp-server ssh-keysignから/usr/local/libexec cp sftp-server ssh-keysign./usr/local/libexec 6、ホスト上で鍵ssh-keygen-t ecdsa-f ssh_を生成host_ecdsa_key -N “” ssh-keygen -t rsa -f ssh_host_rsa_key -N “” ssh-keygen -t dsa -f ssh_host_dsa_key-N""が生成するssh_host_keyこの3つのファイルcopyから./usr/local/etc/ディレクトリの下cp ssh_host./usr/local/etc/7、開発ボードbinディレクトリの下でソフト接続ln-s/usr/local/bin/scn/scpln-s/usr/local/bin/sftpln-s/usr/local/bin/ssh ln-s/usr/local/bin/ssh-addln-s/usr/usr/local/bin/bin/bin/ssh-agent ln-s/usr/local/usr/local/bin/s/usr/usr/local/bin/ssh-keygenln-s/usr/usr/local/bin/bin/sh-keyscan 8 can/ssh-keysca、パッケージmkdir.../final cp-r bin sbin usr.../final cd.../final tar czvf openssh.tgz./openssh.tgzを開発ボードルートディレクトリ解凍9にコピーし、開発ボードを起動し、ユーザーtouch/etc/passwd touch/etc/group mkdir-p/home/sshd adduser root passwd rootを追加してrootユーザーにパスワードを設定
開発ボード/usr/local/sshd_config、PermitRootLogin yes前のコメント「#」を削除
終わりの言葉
このツールの移植の過程はやはり面白くて、一人一人の環境が違っていて、出会った問題も違っているかもしれません.ネット検索で多くの人が遭遇する状況を解決できると推定されていますが、真相を探るにはソースコードを分析するのも難しくありません.後で似たような方法の文章を更新してレンガを投げて玉を引く.