임베디드 리눅스 설치 및 동작 Lecture #5
목 차 임베디드 리눅스 설치 Bootloader 설치 커널 이미지 설치 루트파일시스템 이미지 설치 TFTP 기반 원격 부팅 설정
임베디드 리눅스 설치 타겟 시스템에서의 임베디드 리눅스 설치 부팅 저장 장치: 설치 이미지: 설치 위치: NOR Flash memory(32MB: 0x0000_0000~0x0200_0000) 설치 이미지: u-boot.bin (부트로더) uImage-2.6.21-pro3 (커널) rootfs-2.6-pro3.jffs2 (파일시스템) 설치 위치: u-boot 0x0000_0000 FLASH Memory 0x0030_0000 uImage 0x0008_0000 Root file system 0x0200_0000
Bootloader 설치 (1) U-boot 개요 U-boot 특징 U-boot 주요 기능 Universal Bootloader for Linux kernel ARM, PowerPC, MIPS 등 다양한 processor 환경 지원 필수적인 flash memory 지원 동작 및 다양한 유형의 flash memory 지원 가능 Tftp, dhcp 등 기본적인 네트워크 프로토콜 지원 Tftp 기반의 remote booting 지원 등 U-boot 주요 기능 POST(Power-On Self-Test) Linux kernel loading Linux kernel execution
Bootloader 설치 (2) U-boot 설치 U-boot 설치 이미지: u-boot.bin U-boot 설치 위치 메모리 절대번지 0x0000_0000~0x0007_FFFF(32KB) U-boot 설치 방법 Flash memory fusing 프로그램(jtag 또는 jflashmm)을 이용하여 host computer에서 직접 퓨징(Direct Fusing) HOST System FLASH Memory Boot Loader Target System 0x0008_0000 JTAG Interface 0x0000_0000 5 Direct Fusing
커널 이미지 설치 (1) 커널 이미지 설치 설치 이미지: uImage-2.6.21-pro3 설치 위치: 설치 방법: 메모리 절대 번지 0x0008_0000~0x002F_FFFF 설치 방법: u-boot를 이용한 Downloading & Fusing 방식 Step #1: Tftp 전송방식을 통해 Host system에서 target system의 SDRAM 영역으로 이미지를 downloading Target system의 u-boot 프로그램이 tftp client로 동작 Step #2: SDRAM에 다운로드된 이미지를 flash memory로 fusing(by u-boot) 6
커널 이미지 설치 (2) u-boot 0xA7F8_0000 TFTP 0x0030_0000 Flash Write Compressed Kernel Compressed Kernel 0xA100_0000 0x0008_0000 Decompressed Kernel u-boot 0xA000_8000 0x0000_0000 FLASH 0xA000_0000 SDRAM
커널 이미지 설치 (3) Host system 환경 설정 커널 이미지를 tftp 공유폴더인 /tftpboot로 복사한다. # cp /root/pxa255/images/uImage-2.6.21-pro3 /tftpboot IP Aliasing을 통한 IP 주소 추가 할당 추가 이더넷 장치: eth0:1 할당 IP 주소 IP Address: 192.168.1.10 Subnet Mask: 255.255.255.0 Gateway Address: 192.168.1.10 Tftp connection 지원 여부 확인 # netstat –a | grep tftp
커널 이미지 설치 (4) Target system 환경 설정 u-boot 부팅 Targetboard의 IP 주소 설정하기 PRO3> setenv serverip 192.168.1.10 [ host ip ] PRO3> setenv ipaddr 192.168.1.100 [ target ip ] PRO3> printenv 설정 내용 확인 PRO3> saveenv 설정 내용 저장
커널 이미지 설치 (5) 커널 이미지 다운로드 및 퓨징 PRO3> run linuxf
루트파일시스템 이미지 설치 (1) 루트파일시스템 이미지 설치 설치 이미지: rootfs-2.6-pro3.jffs2 설치 위치: 메모리 절대 번지 0x0030_0000~0x01FF_FFFF(29MB) 설치 방법: u-boot를 이용한 Downloading & Fusing 방식 11
루트파일시스템 이미지 설치 (2) u-boot 0xA7F8_0000 TFTP 0x0200_0000 Flash Write uImage 0x0008_0000 Root file system 0x0200_0000 Flash Write Root file system 0xA070_0000 0xA000_0000 SDRAM
루트파일시스템 이미지 설치 (3) Host system 환경 설정 - 설치 파일 복사 Target system 환경 설정 루트파일시스템 이미지를 tftp 공유폴더인 /tftpboot로 복사한다. # cp /root/prp3/Image/rootfs-2.6-pro3.jffs2 /tftpboot Target system 환경 설정 커널 이미지 퓨징 환경과 동일하게 설정 13
루트파일시스템 이미지 설치 (4) 파일 시스템 다운로드 및 퓨징 PRO3> run rootf
Targetboard Linux booting 리눅스 부팅 콘솔 화면
TFTP 기반 원격 부팅 설정
TFTP를 이용한 원격 부팅 (1) Target system의 부팅 모드 Kernel 및 root filesystem 이미지 위치에 따라 4가지 모드로 구분 Mode 1: flash kernel + flash root filesystem (local booting) Mode 2: flash kernel + nfs root filesystem Mode 3: tftp kernel + flash root filesystem Mode 4: tftp kernel + nfs root filesystem (remote booting) Kernel Flash Memory Network(TFTP) Root Filesystem Mode 1 Mode 3 Network(NFS) Mode 2 Mode 4 17
TFTP를 이용한 원격 부팅 (2) 원격 부팅(Remote Booting) Host system으로부터 커널 이미지를 다운로딩하고 커널 실행을 통해 부팅하는 과정 네트워크 부팅 Kernel – tftp 프로토콜을 이용하여 커널 이미지를 다운로딩 Root filesystem – nfs를 이용하여 마운팅 개발 과정 동안에 kernel 및 root filesystem에 대한 빈번한 수정이 발생함으로 이에 대한 플래시 메모리 퓨징 오버헤드를 줄임 18
TFTP를 이용한 원격 부팅 (3) 원격 부팅 설정 과정 원격부팅 가능한 커널 이미지 생성 및 복사 Root filesystem 디렉토리 생성 및 NFS 설정 Target system의 u-boot 환경 설정 원격부팅 실행 및 테스트 19
TFTP를 이용한 원격 부팅 (4) 원격 부팅 지원 커널 이미지 생성 및 복사 커널 소스를 다운로드하여 압축을 해제한다 # pwd /root/pxa255/kernel # tar xvfz linux-2.3.21-pro3/tar.gz Kernel configuration을 수정한다 Kernel configuration 수정 모드를 실행한다 /root/pxa255/kernel/linux-2.3.21-pro3 # make pro3_defconfig # make menuconfig 20
TFTP를 이용한 원격 부팅 (5) 원격 부팅 지원 커널 이미지 생성 및 복사 Kernel configuration을 수정한다 (계속) 다음의 설정항목을 순서대로 수정한다 “General setup”-> “Initial RAM filesystem and RAMdisk(initramfs/initrd) support” 선택 해제하기 “Networking”->”Network options”->”IP-kernel level autoconfiguration” 및 하위 메뉴 선택하기 “File Systems”->”Network File Stsrems”->”Root filesystem on NFS” 선택하기 “Boot options”->”Boot arguments” 수정하기 [console=ttyS0,115200n8 mem=64M@0xa0000000 mem=64M@0xa8000000 noinitrd rw ip=192.128.1.100:192.128.1.10:192.128.1.10:255.255.255.0::eth0:off root=/dev/nfs nfsroot=192.168.1.10:/mnt/rootfs-2.6-pro3,port=2049] 21
TFTP를 이용한 원격 부팅 (6) 원격 부팅 지원 커널 이미지 생성 및 복사 커널 컴파일을 수행하여 커널 이미지를 생성한다 # make oldconfig # make uImage 생성된 커널 이미지를 tftp 공유 디렉토리로 복사한다 # pwd /root/pxa255/kernel/linux-2.6.21-pro3 # cp ./arch/arm/boot/uImage /tftpboot 22
TFTP를 이용한 원격 부팅 (7) Root filesystem 디렉토리 생성 및 NFS 설정 # pwd /root/pxa255/rootfs # cp rootfs-2.6-pro3.tar.gz /mnt # cd /mnt # tar xvfz rootfs-2.6-pro3.tar.gz NFS 설정하기 /etc/exports 파일에 다음 항목을 추가한다 /mnt/rootfs-2.6-pro3 192.168.1.*(rw,sync,no_root_squash) NFS server 재시작하기 # service nfs restart 23
TFTP를 이용한 원격 부팅 (8) Target system의 u-boot 환경 설정 PRO3> setenv bootcmd “tftpboot a1000000 uImage;bootm a1000000” PRO3> printenv PRO3> saveenv 24
TFTP를 이용한 원격 부팅 (9) Target system에서 원격 부팅 실행 Target system을 리셋하거나 u-boot에서 “boot”명령어 실행 PRO3> boot 25
TFTP를 이용한 원격 부팅 (10) 원격 부팅 테스트 Host system Target system # cd /mnt/rootfs-2.6-pro3 # cd ./home # touch test Target system # cd /home # ls -al 26