1. 목적 : OpenSSH 를 내가 사용할 Embedded Linux 에 이식 하기 위한 CrossCompile 방법
2. 빌드해야 되는 패키지
- zlib v1.3
- openssl v1.1.1w
- openssh v9.4p1
빌드 시작
사전에 실행할 Terminal 에서 tool chain 의 path 를 등록한다.
각자 설치된 위치에 맞게 입력하시면 됩니다.
# export PATH=${PATH}:/tools/arm/gcc/gcc-arm-11.2-2022.02-x86_64-arm-none-linux-gnueabihf/bin/
zlib 빌드
1. 다운로드
https://zlib.net 에서 다운로드가 가능합니다.
또는
# wget https://www.zlib.net/zlib-1.3.tar.gz
2. 빌드
아래와 같이 수행하면 결과가 ./result 디렉토리에 생성됩니다
# mkdir ./result
# sudo chmod -R 777 ./result
# export PATH=${PATH}:/tool/chain/path/bin/
# CC=arm-none-linux-gnueabifh-gcc prefix=/zib/path/result/ ./configure
# make
# make install
openssl v.1.1.1w 빌드
1. 다운로드
https://www.openssl.org/source/
또는
# wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
2. 빌드하기
# tar xvf ./openssl-1.1.1w.tar.gz
# cd openssl-1.1.1w
# mkdir result
# sudo chmod -R 777 ./result
# ./Configure linux-generic32 --prefix=/absolute/path/openssl-1.1.1w/result --cross-compile-prefix=arm-linux-gnueabi-
# make
# make install
-> 1.0.1 을 빌드해야 되는 상황이라면 (내부 GLIBC 버전이 안맞거나) 기본 빌드 조건이 static 이므로 shared 옵션을 추가해야 한다.
./Configure linux-generic32 shared .....
openSSH 빌드
1. 다운로드
https://www.ftp.ne.jp/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz
또는
#wget https://www.ftp.ne.jp/pub/OpenBSD/OpenSSH/portable/openssh-9.5p1.tar.gz
2. 빌드하기
# tar xvf openssh-9.5p1.tar.gz
# cd openssh-9.5p1.tar.gz
# mkdir ./result
# chmod -R 777 ./result
# ./configure --host=arm-none-linux-gnueabihf --target=arm-none-linux-gnueabihf --prefix=/output/path/result --with-zlib=/zlib/path --with-ssl-dir=/openssl/path --disable-strip
configure 에서의 패스는 모두 절대 경로로 입력해야 됩니다.
이후 Makefile 에서 아래 내용을 임시 경로로 변경해야 합니다. 아니면 /var 권한이 없기 때문에 생성 실패가 발생합니다.
PRIVSEP_PATH=/var/empty
아래와 같이 자신의 디렉토리로 또는 이 권한은 777 로 주고 하면 됩니다.
PRIVSEP_PATH=/myhome/ssh/openssh-9.4p1/empty
** 생성된 config.h 파일에서
자신의 Target Device 의 기본 PATH 를 변경해야 한다.
USER_PATH 값에서 자신의 PC 값으로 되어 있는 것을 target device 의 path 에 맞게 수정해야 됩니다.
** Makefile 에서도 prefix 디렉토리를 제거 해야 한다. Target device 에서 잘못된 path 처리가 됨.
make install path 를 위해 Makefile 에 있는 DESTDIR path 만 존재 하면 된다.
# make
# make install-nokeys
arm 보드에서 빌드한 것이 아니기 때문에 key 생성 실패가 발생하기 때문에 위와 같은 옵션으로 설치를 하게 되면
result 디렉토리에 최종 파일들이 모입니다.
* ssh_config, sshd_config 파일 설치 위치 -> /etc/ssh/
디바이스에는 위 3가지 패키지의 생성물 및 라이브러리들을 복사해서 설치하시면 됩니다.
make install 대신에 생성된 파일을 각각 아래 Target Device 에 복사 하면 됩니다.
prefix 문제로 키 생성이 정상적으로 되지 않는 문제가 생김
[ERROR]
libcrypt.so 가 없다고 나올 경우
<Solution>
glibc 라이브러리를 빌드하여 나오는 libcrypt.so 를 /usr/lib 에 복사하면 실행이 된다.
[ERROR]
sshd: no hostkeys available -- exiting.
아래와 같이 키를 생성해 주어야 한다.
<Solution>
ssh-keygen -A
'Development > Linux' 카테고리의 다른 글
[Linux] Build Error : more undefined references to '__alloca' follow (0) | 2023.10.11 |
---|---|
[LINUX] glibc Cross Complie (1) | 2023.10.06 |
[SHELLSCRIPT] 쉘스크립트 $# 의미? (0) | 2023.05.31 |
[Petalinux] Release Note and 기초 사항 정리 (0) | 2023.05.30 |
[LINUX] ext4 tool e2fsprogs 컴파일 하기 (0) | 2023.04.28 |
댓글