(우분투)initramfs에 개발한 Device 모듈을 집어 넣고 싶습니다..
글쓴이: multibg / 작성시간: 토, 2014/05/03 - 3:07오후
안녕 하세요..
우분투 부팅 단계에서 특정 디바이스 모듈을 올리고 싶습니다.
Root filesystem 이 로딩 되기전에 개발한 device 드라이버을 먼저 구동 하고 싶습니다.
자료 조사 결과,initramfs을 수정 하여 개발한 Device드라이버을 올리면 될것 같은데..
..생각 보다 자료가 많이 없고.. 벌써 1주일째 삽질 중 입니다.
질문 )
아시는 바와 같이 initramfs이 gizp으로 압축된 CPIO 아카이브 형태 입니다.initramfs에 Device 모듈을 집어 넣고(update-initramfs 명령어 수행시 자동으로 initramfs에 Device 모듈이 자동으로 들어 가고 싶습니다.) 그리고 부팅시 Ram FileSystem에서 해당 Device 모듈을 로딩 하고 싶습니다.
말이 두서 없는 데요,,
1) initramfs에 개발한 Device 모듈을 집어 넣는 방법?
2) 부팅시 (initramfs이 Ramfilesytem에 압축을 풀고)개발한 Device 모듈을 실행 할수 있는 방법?
을 알고 싶습니다.
읽어 주셔서 감사 합니다.
Forums:
Ubuntu 매우 의존적
일단 하고자 일이 Ubuntu 플랫폼 자체 매우 의존적입니다. 다른 리눅스 플랫폼은 또 다릅니다.
>1) initramfs에 개발한 Device 모듈을 집어 넣는 방법?
#A 하기 디렉토리로 이동
#B 가장 쉬운 모듈 로딩 예제 " verafb"를 사용하는 파일을 찾아 복사한 후 파일 이름 변경
> 2) 부팅시 (initramfs이 Ramfilesytem에 압축을 풀고)개발한 Device 모듈을 실행 할수 있는 방법?
이 부분이 "1)" 보다 먼저 선행 되어야합니다.
먼저 Ubuntu에서 custom 커널을 어떻게 빌드해야 하는지 찾아 봐야됩니다. Please Googling
커널을 많이 빌드했지만, Ubuntu용으로 커널을 만드는 것은 다시 하고 싶지 않습니다.. ^^ (짜증, 시간 소비..)
대략 순서:
#A-1 커널 빌드
#A-2 패키지 빌드
------ 싸인도 해야 되구, 패키지 변화 툴도 사용해야합니다.
#B-1 다시 본인이 만들 모듈 커널 디렉토리에 넣고
커널 설정하고, #A-1, #A-2 실행
정말로 감사 드립니다..
몇일을 삽질 하였는데 답글이 여러가지 아이디어를 주셔서 문제 해결에 많은 도움이 되었습니다.
정말로 감사 드립니다 ^^.
아래의 부팅 절차 상에서 Real Root을 올리기 전에 D)단계에서 특정 Device 모듈을 메모리 상에 올리는것이 목적 이었습니다.
(일단은 기본적으로 커널 커스터마이징을 하지 않는 기본 전제가 있었기 때문에 약간은 제약 사항이 있었습니다.)
A) BIOS (부팅 Order)
B) MBR (grub 등의 부트 로더)
C) vmlinuz (커널)
D) initrd (/init) => 이곳이서 모듈을 로딩.
E) real root (/ dev/sda1 등의) /sbin/init
F) /etc/inittab의 등등 처리
1) initramfs에 개발한 Device 모듈을 집어 넣는 방법?
/usr/share/initramfs-tools/hooks 아래에 스크립트을 아래와 같이 작성 하여 initramfs이지미에 모듈을 집어 넣었습니다.
#cp ./XXX_detours.ko /sbin/XXX_detours
#cd /usr/share/initramfs-tools/hooks
#touch XXXdetours
#vi XXXdetours
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /sbin/XXX_detours
#chmod a+x XXXdetours
#update-initramfs -u => initramfs을 업데이트을 수행.
2) 부팅시 (initramfs이 Ramfilesytem에 압축을 풀고)개발한 Device 모듈을 실행 할수 있는 방법?
/usr/share/initramfs-tools/scripts 아래에 스크립트을 아래와 같이 작성 하여 부팅시 Ram Filesystem에서 구동이 되도록 한다.
#cd /usr/share/initramfs-tools/scripts/local-top
#touch XXXdetours
#vi XXXdetours
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
prereqs)
prereqs
exit 0
;;
esac
insmod /sbin/XXX_detours <= 1단계에서 initramfs 아카이브에 등록된 모듈
#chmod a+x XXXdetours
#update-initramfs -u
rebooting...
#lsmod => 로딩 되었는지 모듈을 확인
그럼 수고 하세요.
댓글 달기