Ubuntu Server를 설치하기 위해서는 많은 추가 입력이 있어야 합니다. 사용자가 어떻게 설치하기를 원하는지 모르기 때문에, 또 다양한 옵션을 사용자가 선택하기 위해서는 어찌보면 당연한 것이겠지요. 하지만 만약 똑같은 설정을 사용할 것인데, 여러대의 서버에 OS를 설치하는 상황이라고 생각해보면 정말 암울합니다. 온전히 시간을 OS 설치에만 투자하자니 이건 간단한 업무로 인해 다른 업무를 보지 못하게 됩니다. 또 다른 업무와 동시에 하자니 다음 입력창이 뜰 때인지 한번씩 확인해 주어야 합니다.
따라서 어차피 같은 설정을 한다면, 이러한 설정을 미리 해 놓는 방법이 Ubuntu iso 파일 내부에 있을 것이라고 추측했습니다.
분명 누군가가 이런 불편함을 해결했으리라 생각했죠.
다행이 몇번의 구글링을 통해 preseed.cfg
라는 파일이 제가 말했던 사용자의 입력을 미리 정해놓는 파일이라는 것을 알 수 있었습니다.
이 preseed.cfg
파일을 잘만 활용한다면, 서버에 OS를 설치할 때 불필요한 시간 낭비를 줄일 수 있을 것입니다.
차라리 VM이었다면, 그냥 VM을 복사해서 IP나 MAC, hostname 같은 것들만 변경해도 됐을 수 있습니다.
하지만 preseed.cfg
를 이해하게 되면 언제 어디서든 내가 원하는 설정을 해주는 우분투 설치 파일을 만들 수 있을 것입니다.
먼저, 설정을 넣어줄 Ubuntu 18.04 Server가 필요합니다. 물론 Ubuntu 18.04 Desktop에도 적용이 될 것으로 보입니다. (검색했을 때 대부분이 Desktop 설치 이미지에 관한 내용이었으니까요.)
여기서 중요한 점은 live
라고 적혀있는 이미지가 아니어야 합니다. live가 붙은 것은 인터넷으로 파일들을 다운로드 받게 되고,
그럴 경우 오프라인 설치가 필요한 환경에서는 적합하지도 않고 작업할 때 필요한 파일 또한 없습니다.
두번째로 중요한 점은 amd64
입니다. 처음에 잘못받고 arm64
를 다운받았었는데, 내부 파일들의 폴더 명도 다르고 동작방식도 달라
구글링을 통해 amd64
이미지를 따로 받았습니다.
제가 설정했던 preseed.cfg 파일은 다음과 같습니다.
설명은 후에 추가하도록 하겠습니다.
크게 순서를 정한다면 이렇게 됩니다.
initrd.gz
를 압축해제한 뒤 preseed.cfg
관련 정보를 initrd.gz
에 추가initrd.gz
로 압축md5sum
을 통한 checksum 재생성genisoimage
를 통한 부팅용 이미지 생성그러나 preseed.cfg
를 수정할 때마다 이를 반복하는 것은 여간 귀찮은 일이 아닐 수 없습니다.
그래서 저는 이를 bakeIsoImage.sh
이라는 간단한 shell 프로그램으로 만들어서 iso파일을 생성하도록 하였습니다.
위의 방식대로 진행을 했다면 baked-ubuntu.iso
라는 파일이 생성되었을 것입니다.
이를 virt-manager
나 virtual box
등을 통해 가상머신을 생성하여 설치 테스트를 합니다.
설치를 하면서 아무런 입력을 하지 않았다면, 원래의 의도대로 잘 설치가 된 것이라고 볼 수 있겠네요.
preseed.cfg
라는 엄청나게 유용한 방법이 있음에도 불구하고, 공식적인 가이드 자체가 많이 없는 상황입니다.
어떤 옵션들이 있는지도 잘 모르고, 설명도 자세히 되어있지 않았습니다.
단지 주어진 것이라고는 공식 문서에서 예시로 제공하는 preseed.cfg
파일 하나와, 다른사람들이 작성해 놓은 파일들 뿐이었습니다.
저 또한 입력없이 설치하는 우분투 설치 이미지를 만들기 위해 고군분투했습니다. 누군가가 이 글을 통해서 환경에 맞는 설정을 해주는 우분투 설치 이미지를 생성하여 자동화를 할 수 있게된다면 정말 좋을 것 같습니다.