Linux/CentOS

CentOS7 LiveGNOME iso 커스텀

쿠파이너스 2021. 1. 5. 15:37
728x90

매우 오래전부터 리눅스 배포판 설치 디스크는 라이브 부팅이라는 기능을 제공해 왔다. 말 그대로 설치가 필요없이 CD로 부팅을 하면 리눅스를 사용할 수 있는 기능이다.(물론 모든 기능은 아니지만) 이러한 기능은 윈도우에 익숙한 개인사용자들에게 리눅스를 보다 더 가깝고 쉽게 체험해 볼 수 있는 기회를 제공하였고,  리눅스 서버의 복구나, PC복구 등에도 간이로 사용 할 수 있어 유용한 기능이 되었다.(Windows PE와 비슷?)

 

다음 과정은 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이미지를 다운로드 한다. 적절한 위치에 CentOS-7-x86_64-LiveGNOME.iso를 다운로드 하였다.

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.img
cp: 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-LiveGNOME \
              -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폴더가 들어있음을 확인 할 수 있었다.

 

참고

 

CentOS7 Live CD iso 커스텀하기

매우 오래전부터 리눅스 배포판 설치 디스크는 라이브 부팅이라는 기능을 제공해 왔다. 말 그대로 설치가 필요없이 CD로 부팅을 하면 리눅스를 사용할 수 있는 기능이다.(물론 모든 기능은 아니

lucidmaj7.tistory.com

 

 

Custom CentOS Live CD

This is a tutorial on creating a custom CentOS live CD. A custom live CD can be useful for many different purposes. I will just cover my specific use case in the post below, but you should be able to follow along and customize where you see fit. If you fol

vittegleo.com

 

 

728x90