강좌 & 팁
이번 시간에는 임베디드 개발자에 ramdisk를 만들 때 사용하고 있는 loopback device에 대해
알아보고자 한다. 루프백 디바이스라는 것은 간단히 말하면, 파일을 블록디바이스처럼 사용하기위한
장치지원이다. 아래 그림을 보면 블럭디바이스 /dev/mmcblk0위에 ext2파일시스템을 만들었고
그 위에 루프백 노드들이 나열되어 있는 것을 볼 수 있다.
유닉스초기에 설계개념은 것이 디바이스위에 파일시스템을 올리는 것이었는데, 후에 파일을 디바이스처럼 사용할 수
있으면 좋을 것 같다는 생각이 떠 오른 것이다.
디바이스로부터 파일시스템을 만들고 다시 파일시스템으로부터 디바이스를 만든다.
파일시스템으로부터 디바이스로 되돌아(back)와서 루프(loop)가 형성되었다고 할 수 있다.
이 루프백노드들(/dev/loop0, ...)은
단지 디바이스의 타입이나 인스턴스를 나타내는 노드들이다. 이 노드에 실제 디바이스를 연결하여야 하는데
빈 파일을 하나 생성시킨다. dd를 사용해 32MB짜리 빈파일(ramdisk_32M.img)을 만들어 보기로 하자.
/dev/zero는 읽기전용 char-dev인데, 읽은 데이타의 모든 바이트가 0x00이다.
dd if=/dev/zero of=ramdisk_32M.img bs=1M count=32
losetup /dev/loop0 /root/ramdisk_32M.img
losetup명령을 이용해서 /dev/loop0노드에 ramdisk_32M.img을 연결하였다.
/dev/loop0는 임의로 선택한 것이며, 사용되지 않는 노드를 선택하면 된다.
ramdisk_32M.img파일 반드시 0으로 clear시키지 않아도 된다. 하지만 그 파일을 압축하게 될 경우
zerofy시킨 것이 그렇지 않은 것에 비해 압축율이 좋아 진다.
이제 /dev/loop0는 32MB짜리 블록디바이스이다.ext2파일시스템을 포맷하여 보자.
e2mkfs /dev/loop0
연결을 제거하여 보자.
losetup -d /dev/loop0