posted by 떠돌이늑대 2017. 11. 17. 13:42

https://help.ubuntu.com/community/InstallCDCustomization

 

 

 

 

https://askubuntu.com/questions/516687/how-do-i-make-a-custom-ubuntu-iso-for-fully-offline-installations

 

 

 

 

이 프로젝트는 HPE Proliant Gen10 우분투 설치를 하다 겪게 되었던 것을 발판삼아 도전해보는 것이다.

 

우분투에 대한 정보가 많이 부족하다. 실력도 부족하기 때문에 이것저것 시행착오가 많다.

 

P408i-a 는 Microsemi 에서 만든 컨트롤러다.

 

우분투에는 들어있지 않다.

 

microsemi 홈페이지에서는 14.04.4 부터 드라이버를 제공하고 있다.

 

우분투 Desktop 버전과 Server 버전과 다르다.

 

Server 버전에서는 설치과정중 grub 을 수정하여 modprobe.blacklist=aacraid 를 적용하면, 드라이버를 적용할 수 있다.

 

 

 

 

14.04.2 버전은 OS설치를 완료한 후 OS내에서 드라이버 설치가 가능하다. 재부팅하면 용량이 제대로 인식된다.

 

커널버전은 3.16.0-30 이다.

 

 

 

ko 라는 동적모듈이 연관이 큰데  이것을 OS에 넣고 insmod 를 통해 동적모듈을 올려보면 어떻게 될까?

 

 

hpdsa.ko 를 올려보기 테스트 해본다.

 

14.04.1 desktop 에 넣어보고 live로 부팅 후 insmod 를 해보자

 

 

live 모드로 부팅하고 insmod 를 통해서 디스크 인식 성공 후 설치도 성공한 것처럼 완료 표시와 리붓을 하라는 메세지가 나오나,

 

재부팅하면,  부팅이 되질 않음

 

무엇일까?

 

 

디스크의 내용을 살펴보니 hpdsa 모듈이 보이질 않는다.

 

 

그래서 live로 부팅하여 hpdsa.ko 를 넣어주었다.

 

 

테스트 결과 hpe에서 가이드 하고 있던 명령어의 문제인지 아니면 다른문제인지 정확하게 찾지 못했으나

 

chroot /target

echo "blacklist ahci" > /etc/modprobe.d/install-hpdsa.conf

depmod `uname -r`

update-initramfs -u       *이부분이 문제가 된것으로 생각된다        

exit

 

 

원인이 무엇인지는 모르겠지만. 14.04.1 desktop 을 설치하는 과정은

 

 live로 부팅하여,

 

insmod hpdsa.ko 로 디스크를 인식하여, 설치를 한다. hpdsa.ko 를 /lib/modules/3.13.0-32-generic/kernel/driver/scsi/ 에 넣어주었다.

 

그러나 내용을 들여다 보면

 

14.04.1 의 커널 버전은 3.13.0-32-genenric 이지만 이상하게도 3.13.0-135-generic 도 같이 들어있다. (인터넷이 연결되어있으면, 업데이트 된

 

커널이 자동으로 설치되는 것으로 확인, 외부인터넷을 차단하면 업데이트된 버전은 보이지 않는다. )

 

혹시나 해서 /lib/modules/3.13.0-135-generic/kernel/driver/scsi/ 에도 hpdsa.ko를 넣어주었다.

 

update-initramfs -u를 하게 되면 initrd.img-3.13.0-135-generic 으로 생성이 되었고 이것이 등록이 되어있었다.

 

그파일을 들여다보면, hpdsa가 포함되어있지 않았다.

 

그래서 인터넷을 검색하여 update-initramfs -c -k 3.13.0-32-generic 으로 다시 명령을 하여,

 

initrd.img-3.13.0-32-generic 이 생성이 되었고, 이 파일안에는 hpdsa가 있었다.

 

 

그리고 나서 grub에서 initrd.img-3.13-32-generic을 선택해서 부팅했더니 성공을 했다.

 

 

 

이 과정을 참고하여 smartpqi는 어떻게 적용을 할까 시나리오를 작성해본다.

 

1. 14.04.2 desktop 버전에 smartpqi.ko 를 포함해준다.

2. live 로 부팅하여, insmod scsi_transport_sas.ko 와 insmod smartpqi.ko 를 해준다.

   (smartpqi는 scsi_transport_sos 모듈이 먼저 작동해야하는 의존성이 있기 때문이며, 해당모듈은 기본내장되어있지만

   작동은 하고 있지는 않다.)

3. 디스크 인식이 성공하면, 설치를 진행한다.

4. 설치완료메세지가 나오면, 해당 볼륨에 접근하여, smartpqi를 넣어준다.

5. 커널버전을 살펴보고, 블랙리스트 작성과 해당커널버전에 맞는 initrd.img를 생성하고 grub에 등록을 해준다.

 

 

 

 

이방법으로 되지 않는 것을 확인했다.  

무엇이 잘못되었을까 생각을 하게 되었고,

Server edition 이 어떻게 드라이버를 인스톨하는지 확인을 해보았다.

우선 드라이버들의 압축을 풀어 해당경로에 있는 파일들의 위치를 살펴보았고,

최종적으로 볼륨에 복사가 되었는지 확인을 했더니 해당 경로대로 파일들이 있는 것을 확인하였다.

그래서 그것을 참고로 해서 해보도록 하자.

 

Server edition과 데스톱 버전은 기본적으로 드라이버가 작동되는 방법이 다르다.

 

 

 

성공했다.

 

새로운 squashfs와 새로운 initrd.lz를 생성하는 과정이다.

 

 

데스크탑 버전 iso를 수정해야 한다.

 

1. grub에서 modprobe.blacklist=aacraid 를 추가하여 aacraid 모듈이 사용되는 것을 방지해야 한다.

 

initrd.lz에서 불러온 smartpqi 모듈이 있다고 해도 기본적으로 aacraid 모듈을 먼저 사용되는것 같다.

 

 

 

https://ubuntuforums.org/showthread.php?t=1412132  의 내용을 참고했습니다. (글 내용중  Theemahn2003 의 답변을 참고)

 

 

1. 설치 iso 에 있는 /casper/filesystem.squashfs 를 지정된 디렉토리에 마운트
2. 마운트 된 디렉토리를 통째로 지정된 디렉토리로 복사
3. 복사된 디렉토리에 chroot 로 접근
4. Deb 패키지 설치
5. Initrd.lz 생성 후 chroot exit
6. 복사된 디렉터로리를 새로운 filesystem.squashfs 로 생성
7. Iso를 편집하여 initrd.lz 와 filesystem.squashfs를 새롭게 생성한 파일로 교체입니다.

 

 

 

 

 

 

 

 

 

 

 

 

'컴이야기 > linux' 카테고리의 다른 글

fail to open efi boot grubx64.efi  (0) 2018.09.20
yum 이 안되는 곳에서 PHP7 설치  (0) 2018.02.12
LVM을 사용하면서  (0) 2017.03.27
RHEL 7.x YUM DVD  (0) 2016.11.14
RHCE가 되기위한 과정  (0) 2016.10.18