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폴더가 들어있음을 확인 할 수 있었다.
※해당 포스팅이 문제될 시 삭제처리 하겠습니다.
댓글 없음:
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.