Monday, April 20, 2015

Target Board Booting

@ 1st step, Bootloader Loading
  1) Serial Port 연결
    -. 목적 : Debugging 용도
    -. 사용 툴 : DNW 실행
    -. 연결방법 : 메뉴에서 [Serial Port] - [Connect] 수행하여 PC와 Serial Port 연결
    -. 특징 : RS-232 port, 9 pin cable

  2) Target Board 부팅 시 Bootloader Prompt 진입
    -. Prompt 에서 어떤 명령을 내려야 하지?
    -. Bootloader 역할 : "OS Loading" 을 위한 SW
 
  3) 어떻게 OS Loading 하는가?
    -. Linux는 부팅을 위해 Bootloader, Kernel, File System이 필요
    -. 먼저, OS(Linux Kernel) Loading을 해야 하는데...
    -. Host PC에 존재하는 zImage(Kernel Image)를 어떻게 Target Board로 옮기지?

    --------------------
        File System
    --------------------
       Linux Kernel
    --------------------
        Bootloader        <-- 현재 위치, Host에 존재하는 Linux Kernel을 끌어올 방법이 필요...
    --------------------
            H/W
     

@ 2nd step, Kernel & FileSystem Loading
  ① TFTP는 source IP, destination IP, filename 만 있으면 파일 전송이 가능한 간단한 프로토콜임
  ② Host PC에서 build한 Kernel과 File System을 Target Board에 Loading하기 위해 사용
  ③ Host PC에 TFTP Server를 구동
  ④ Target Board는 TFTP Client를 이용하여 Server에 파일 전송을 요청

@ TFTP Server 설정 (Host PC)
  # apt-get install nfs-kernel-server tftpd tftp xinetd // nfs, tftp 설치
  # vi /etc/xinetd.d/tftpd // tftp scripter 파일 편집
service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /tftpboot
disable         = no
}
  # /etc/init.d/xinetd restart // xinetd 데몬 재시작
  # netstat -au // tftp server 동작 확인

  서버 설정 시 주의할 사항들
  1) Virtual Machine 네트워크 설정 : NAT -> Bridged 변경 후 Reboot
  2) eth0 인터페이스 up : ifconfig eth0 192.168.100.2 up
  3) Windows 네트워크 설정 : 사용할 '로컬 연결 영역' 제외하고 나머지 '사용 안함'으로 변경

  Reference
  http://askubuntu.com/questions/201505/how-do-i-install-and-run-a-tftp-server

@ TFTP Client 요청 (Target Board)
  -. DNW.exe 실행 후 Serial Port Connect 수행
  -. Target Board 전원 On
  -. 서버로 Kernel과 File System 전송 요청
    # tftp 30c00000 zImage
    # tftp 30800000 ramdisk.gz
    # go linux // or go 30c00000, Linux는 자체 부팅 능력이 없으므로 이렇게 실행해 줌


@ 3rd step, File Transfer from Host PC to Target 
  ① NFS는 원격의 물리 장치를 로컬 물리 장치처럼 사용하는 방법
  ② Host PC와 Target이 파일을 공유하기 위해 사용
  ③ Host PC에 NFS Server를 구동
  ④ Target Board는 Server의 특정 디렉터리를 NFS 타입으로 mount 하여 사용

@ NFS Server 설정 (Host PC)
  # vi /etc/exports // nfs 설정파일 편집
...

/tftpboot       *(rw,no_root_squash,no_all_squash,async)

  # exportfs -r // nfs 설정 확인
  # /etc/init.d/nfs-kernel-server restart // nfs server 재시작
  # netstat -au // nfs server 동작 확인

@ NFS Client 설정 (Target Board)
  -. Target Board 전원 On
  -. Kernel, File System Loading 하여 shell까지 진입
  -. NFS Server로 mount 요청
    # mount -t nfs 192.168.100.2:/tftpboot /mnt/nfs
  -. PC와 Target에서 동기화되는지 확인

@ TFTP와 NFS의 차이점
  ① NFS는 Linux 부팅 완료 후에만 가능
  ② 하지만 PC작업과 Target 작업이 그대로 동기화되는 장점이 있음

No comments:

Post a Comment