CentOS7 Live CD iso 커스텀

매우 오래전부터 리눅스 배포판 설치 디스크는 라이브 부팅이라는 기능을 제공해 왔다.

말 그대로 설치가 필요없이 CD로 부팅을 하면 리눅스를 사용할 수 있는 기능이다.

이러한 기능은 윈도우에 익숙한 개인사용자들에게 리눅스를 보다 더 가깝고 쉽게 체험해 볼 수 있는 기회를 제공하였고,  리눅스 서버의 복구나, PC복구 등에도 간이로 사용 할 수 있어 유용한 기능이 되었다.(Windows PE와 비슷한 느낌)

이러한 라이브 CD에 몇가지 필요한 툴이나 파일을 포함하여 서버 복구 등에 사용할 수 있다.

다음 테스트 과정은 CentOS7 기준이다.

1. squashfs-tools 설치

과정에 앞서 CentOS7에 squashfs-tools를 설치해 준다.

squashfs-tools는 라이브OS의 루트 파티션을 담고 있는 squashfs.img를 생성하기 위한 툴을 제공한다.

yum install -y squashfs-tools

2. CentOS 7 ISO다운로드

커스텀할 라이브CD이미지인 CenOS7 Live CD이미지를 다운로드 한다.

3. 작업 경로 생성

이제 커스텀 작업을 하기 위해 이미지의 파일을 추출하고, 마운트 하는 등에 필요한 경로들을 생성해준다.

  • iso : 원본ISO 마운트
  • new_iso : 새로 만들 iso 타겟 경로
  • new_squashfs : 새로 만들 squashfs 타겟 경로
  • squashfs : 원본 squashfs 마운트 경로
  • root : ext3fs.img 마운트 경로
[root@localhost centos_custom]# mkdir iso[root@localhost centos_custom]# mkdir new_iso[root@localhost centos_custom]# mkdir new_squashfs[root@localhost centos_custom]# mkdir root[root@localhost centos_custom]# mkdir squashfs

4. 원본 ISO마운트

다운받은 라이브CD iso파일을 앞서 생성한 iso폴더에 마운트 해준다. 마운트 명령어 예는 다음과 같다.

[root@localhost centos_custom]# mount CentOS-7-x86_64-LiveGNOME-2003.iso ./iso

5. iso 파일 복사하기

마운트된 iso이미지의 내부에 있는 파일을 모조리 iso_new폴더에 복사해준다. 복사 명령은 다음과 같다.  iso_new는 새로운 iso이미지가 될 폴더이다.

[root@localhost centos_custom]# cp -a ./iso/* ./new_iso/

복사 후 new_iso의 디렉터리 구조는 다음과 같다.

6. squashfs.img 마운트하기

LiveOS/squashfs.img 파일을 우리가 생성한 squashfs폴더에 마운트해준다. 마운트 명령어 예는 다음과 같다.

[root@localhost centos_custom]# mount ./new_iso/LiveOS/squashfs.img ./squashfs

7. suqashfs.img 폴더 복사하기

squashfs.img에는 ext3fs.img라는 파일이 있다. 이 파일은 라이브 부팅된 리눅스 루트 파티션을 담고 있다. 즉 이 파일의 내용을 수정하면 우리가 원하는 목적을 달성할 수 있는 것 이다.

마운트한 squashfs.img는 readonly이므로 수정이되지 않아 squashfs.img의 내부 모든 파일을 새로 생성한 new_squashfs 폴더에 복사 해준다. 복사 명령어 예는 다음과 같다.

[root@localhost centos_custom]# cp -a ./squashfs/* ./new_squashfs

8. ext3fs.img 마운트하기

new_squashfs에 ext3fs.img 파일을 앞서 생성한 root 디렉터리에 마운트한다. 마운트 명령어 예는 다음과 같다.

[root@localhost centos_custom]# mount new_squashfs/LiveOS/ext3fs.img ./root

마운트 후 root폴더를 보면 리눅스의 그 루트 폴더인 것을 볼 수 있다. 우리는 여기를 커스텀하면된다.

9. 파일 추가하기

테스트 목적으로 임의의 폴더를 하나 생성해 보았다. hello라는 폴더를 최상단에 만들었다.

10. ext3fs.img 마운트 해제하기

파일 변경 작업이 완료 되었으면 ./root에 마운트한 ext3fs.img를 마운트 해제한다.

[root@localhost centos_custom]# umount ./root/

11. squashfs.img파일 다시 만들기

수정한 ext3fs.img가 들어있는 new_suqashfs폴더의 내용을 squashfs.img파일로 다시 만들어 줘야한다. 그 명령어는 다음과 같다.

mksquashfs ./new_squashfs ./squashfs.img

완료되면 정보가 표시된다.

이렇게 생성된 squashfs.img파일을 새로운 iso를 위한 폴더인 앞서 만든 iso_new/LiveOS/squashfs.img에 덮어 써준다.

[root@localhost centos_custom]# cp squashfs.img new_iso/LiveOS/squashfs.imgcp: overwrite `new_iso/LiveOS/squashfs.img'? y

복사가 끝나면 드디어 iso파일만 생성해주면된다.

12. iso파일 만들기

우리가 최종적으로 작업한 iso_new폴더를 iso이미지로 변환하는 작업을 해줘야 한다.

그 명령어는 다음과 같다.

mkisofs -o Custom-CentOS.iso \              -J -r -hide-rr-moved -hide-joliet-trans-tbl -V CentOS-7-x86_64-GNOME-2003 \              -b isolinux/isolinux.bin -c isolinux/boot.cat \              -no-emul-boot -boot-load-size 4 -boot-info-table \              ./new_iso

작업이 완료되면 Custom-CentOS.iso파일이 생성된 것을 볼 수 있다. 이 것이 우리가 커스텀한 라이브 CD이다.

13. 테스트

생성된 iso를 KVM의 VM에서 부팅해 보았다.

 부팅화면이 뜨고 라이브 부팅이 정상적으로 되었다. 

루트파티션에는 우리가 생성한 hello폴더가 들어있음을 확인 할 수 있었다.

※해당 포스팅이 문제될 시 삭제처리 하겠습니다.

출처 : https://lucidmaj7.tistory.com/253

댓글 없음:

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.

Powered by Blogger.