Raspberry Pi에서 Docker와 CRIU를 통해 checkpoint/restore기능을 사용하기 위해서는 먼저 실험 환경을 구축하여야 합니다.
저희는 여러 실험을 통해 현재 CRIU는 Ubuntu 16버전, Docker 17버전에서 정상구동되는 것을 확인하였습니다.
Raspberry pi에서는 라즈베리 전용 Ubuntu버전인 Ubuntu mate의 16.04.2버전에서 정상 구동되는 것을 확인하였습니다.
이 글에서는 Ubuntu mate16.04.2를 라즈베리 파이에 설치 및 커널 컴파일을 하여 CRIU를 사용하기 위한 OS구축에 대해 설명하겠습니다.
raspberry pi의 와이파이 설정, 사용자 이름 등 기본 설정을 해준다.
설정을 마치면 다음과 같이 ubuntu의 바탕화면이 나올 것입니다.
처음 부팅을 하면 설정에서 Wifi연결을 하였음에도 불구하고 Wifi연결이 안 될 것입니다.
이럴때는 Raspberry pi를 재부팅해주시면 다시 wifi연결이 됩니다.
CRIU를 실행하기 위해서는 CRIU 홈페이지에 있는 설정대로 kernel의 option을 설정하여 컴파일해줘야 합니다.
Raspberry Pi Linux Compile문서에 따라 커널 컴파일을 진행해보도록 하겠습니다.
sudo apt-get update
sudo apt install git bc bison flex libssl-dev make
git clone --depth=1 --branch rpi-4.12.y https://github.com/raspberrypi/linux
cd linux
KERNEL=kernel7
make bcm2709_defconfig
CRIU 홈페이지에 있는 설정 외에도 CONFIG_VDSO=n와 CONFIG_IDLE_PAGE_TRACKING=y을 변경해줘야합니다.
make -j4 zImage modules dtbs
다음 코드를 통해 커널 설치를 완료해줍니다.
KERNEL=kernel7
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img