• 리눅스 커널 빌드 과정
1. 빌드에 필요한 패키지 설치(* ubuntu 18 OS 사용)
sudo apt-get install build-essential libncurses5 libncurses5-dev bin86 kernel-package libssl-dev bison flex libelf-dev
2. 원하는 버전의 리눅스 커널 소스 다운로드
sudo xz -d 리눅스커널파일 -> sudo tar xf 리눅스커널 파일
3. make defconfig // 해당 아키텍처의 default 옵션을 사용 sudo make defconfig
4. make menuconfig // 메뉴 기반 설정 화면을 이용 -> 안 해도 됨?
5. make -j N // N개의 CPU core를 이용해 커널 이미지 빌드(설치하는데 오래 걸림) -> sudo make -j 4
-> 커널 빌드가 끝나면 vmlinux, bzImage 두개의 커널 이미지가 생성됨
bzImage는 arch/x86/boot/bzImages 위치에 있음
• 파일 시스템 빌드(루트 파일 시스템 빌드 과정)
1. busybox 다운로드
https://www.busybox.net/downloads/
2. make menuconfig // 메뉴 기반 설정 화면을 이용
settings -> Build static binary 옵션 체크
Networking Utilities -> inetd 옵션 해제
3. target 디렉토리에 make 진행
-> mkdir ../target 명령으로 빌드 결과물이 저장될 target 디렉터리를 생성
-> sudo make CONFIG_PREFIX=../target install 명령을 통해 파일 시스템 빌드를 진행
4. target 디렉토리에 각종 디렉터리 세트 생성 및 init 스크립트 작성
-> mkdir dev etc lib proc tmp sys
-> sudo vi init
#!bin/sh mount -t proc none /proc mount -t sysgs none /sys mount -t devtmpfs devtmpfs /dev exec 0</dev/console exec 1>/dev/console exec 2>/dev/console setsid cttyhack setuidgid 1000 sh umount /proc umount /sys poweroff -d 0 -f |
-> init 스크립트가 바로 커널이 부팅되고 가장 먼저 실행되는 1번 프로세스
-> chmod 755 init 명령을 통해 권한 수정
5. cpio 확장자로 압축
find . | cpio -o --format=newc > rootfs.cpio
-> rootfs.cpio 파일이 지금까지 빌드한 루트 파일 시스템이다.
'모의해킹 > 시스템 해킹' 카테고리의 다른 글
shell_basic (0) | 2023.12.09 |
---|---|
Welcome (0) | 2023.12.09 |
qemu & gdb 세팅 (0) | 2023.05.30 |
리눅스 커널 해킹 (배경 지식) (0) | 2023.05.27 |
시스템 해킹 기본 지식 (0) | 2023.05.11 |