채피를 보고나서 뉴럴사이언스, 로봇공학, 인공지능, 빅데이타그리고 여러주제가 생각나지만,
아주 사소한 주제로 넘어갈려한다.
그것은 원격 유지 보수 체계이다.
페이스북은 서버엔지니어가 만대가 넘는 서버를 혼자서 운영할수 있도록 유지보수 체계를 세운다.
서버 한대의 장애는 서버 한대의 묻지마식 교체이고 이것은 서비스에 영향을 주지 않게 설계하고 운영하고 있다.
영화 채피에서는 안드로이드 경찰 로봇이 상용화가 성공하고
이 양산된 로봇의 펌웨어로 유지보수하기위해 원격 유지 보수 체계가 등장한다.
원격 펌웨어 업그레이드 체계로써 인증키 기반으로 펌웨어 업데이트를 승인한다.
USB에 담긴 이 인증키는 견고한 금고속에 보관한다.
이 원격유지보수체계에 유일한 취약점은 역시 사람이었다.
원격에서 운영체제를 재빠르게 업데이트 하겠다는 소리를 듣자 기억나는 게 있다.
kexec, 커널이 실행중에도 다른 커널을 부팅하겠다는 프로젝트로 오래전 기억속에 두었던 프로젝트이다.
2014년 10년 5일에 리눅스 커널 3.17 에서 인증된 커널을 kexec을 통해 부팅하도록 소스를 합쳤다.
이것은 루트 사용자가 임의의 코드를 kexec을 통해 로딩하고 실행하는 것을 허용하지 않지만,
보안책으로 UEFI secure boot와 커널 내부 보안 메카니즘이 확인한 리눅스 커널 모듈만이 실행중인 커널에 입력할 수 있다.
부팅할때 바이오스를 체크하는데 많은 시간이 소모하는데 kexec으로 실행하면 이러한 시간을 줄여준다.
당연히 kexec은 부팅시간을 줄여주는 것이다.
kexec을 통해 부팅하기 위해서는
먼저 kexec을 통해 부팅할 커널정보를 로드하고
마지막으로 리부팅을 실행한다.
그러면, BIOS나 펌웨어, 메모리 체크, 부트매니저 (grub, lilio) 없이 바로 새로운 커널로 부팅할 것이다.
사용예)
1) 부팅할 커널을 지정하기
kexec -l /boot/vmlinuz-linux –initrd=/boot/initramfs-linux.img –reuse-cmdline
kexec -l /boot/vmlinuz-2.6.15-1.1955_FC5smp \
–initrd=/boot/initrd-2.6.15-1.1955_FC5smp \
–command-line=”ro root=/dev/VolGroup00/LogVol100 rhgb”
kexec -l /boot/vmlinuz-2.6.15-1.1955_FC5smp \
–initrd=/boot/initrd-2.6.15-1.1955_FC5smp \
–command-line=”$(cat /proc/cmdline)”
2) 지정한 커널로 부팅하는 예
kexec -e
커널 실행하기
reboot
시스템의 모든 서비스를 정지한뒤 다시 부팅할때 kexec으로 지정한 커널로 실행한다.
reboot -f
서비스 정지 없이 커널을 실행한다.
sync; unmount -a; kexec -e
버퍼에 있는 모든 데이타를 파일시스템에 저장하고 모든 마운트된 장치를 언마운트한뒤 바로 지정한 새로운 커널을 시작한다.
kexec, 새로운 커널로 시스템을 빠르게 부팅함으로써,
서버의 다운타임을 줄이고 유지보수 시간을 줄일수 있게 해준다.
[polldaddy rating=”7739789″]