사용자 정의 된 Ubuntu 서버 ISO를 작성하는 방법은 무엇입니까?


42

사용자 정의 된 Ubuntu Server 12.04 ISO를 만들고 싶지만 수행 방법에 대한 명확한 접근 방법을 찾지 못했습니다. Ubuntu-builder는 사용자 정의 된 Ubuntu Desktop을 만드는 데 매우 유용한 앱이지만 Ubuntu Server는 어떻습니까?

답변:


61

다운로드

이 위치 에서 Ubuntu 서버 ISO를 다운로드하십시오 . 32 비트 또는 64 비트로 이동할 수있는 옵션이 있습니다. 서버 에디션의 파일 이름은 다음과 유사합니다.

ubuntu-13.10-server-i386.iso 
ubuntu-13.10-server-amd64.iso 

다음 지침에 13.10 64 비트 버전이 있다고 가정하므로 다운로드 한대로 명령을 조정하십시오. 프로젝트를 개선해야 할 경우에 대비하여 원본을 다운로드하여 여러 개의 새 버전을 만들 수 있도록 다운로드 사본을 보관하십시오. 또한 ~/Downloads/모든 일을 하는 데 사용한다고 가정하겠습니다 .

초기 설정

이렇게하면 Downloads 디렉토리 내에 2 개의 디렉토리 "iso"및 "isoNew"가 생성되고 ISO를 마운트하고 "iso"에서 "isoNew"로 내용을 복사하여 새 프로젝트를 시작합니다.

이것을 텍스트 파일에 넣고 저장하고 실행 가능하게 만들고 실행하십시오.

# Ubuntu custom server 
# rinzwind askubuntu.com
# topic: http://askubuntu.com/questions/409607/how-to-create-a-customized-ubuntu-server-iso/409651#409651
cd ~/Downloads/    
mkdir -p iso newIso
sudo mount -o loop ./ubuntu-13.10-server-amd64.iso ./iso    
sudo cp -r ./iso/* ./newIso/
sudo cp -r ./iso/.disk/ ./newIso/    
sudo umount ./iso/
cd ~/Downloads/newIso/
  • 오류 메시지가 1 개 발생합니다. mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

이것이 어떻게 보일지에 대한 예제 이미지 :

실행 :

실행

결과:

결과

부팅 메뉴 옵션 추가

설치 프로그램에 대한 메뉴 옵션에 저장됩니다 isolinux/txt.cfg그리고 당신은 그 사이 새로운 옵션을 만들 수 있습니다 default installlabel install.

"Install Custom Ubuntu server"라는 새로운 옵션이 생성되고 킥 스타트 파일이 추가됩니다 (킥 스타트 파일은 옵션을 변경하는 데 사용됩니다. 아래 설명).

label myownoption
  menu label ^Install Custom Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/preseed/ks-custom.cfg --
  • myownoption 옵션을 식별하는 데 사용할 수있는 레이블 일뿐입니다.
  • "Custom Ubuntu Server 설치"는 부팅 메뉴에 표시되는 텍스트입니다.
  • 메뉴 옵션을 기본 옵션으로 만들려면로만 변경하면 default install됩니다 default myownoption.

예:

여기에 이미지 설명을 입력하십시오

파일 편집 (나노를 사용했지만 가능한 경우 gedit, vim 또는 다른 편집기를 사용하십시오). 여기에 "lampserver"를 레이블로 사용한이 파일에 추가 한 내용이 있으며 시드 이름도 "lampserver"입니다.

여기에 이미지 설명을 입력하십시오

킥 스타트 (구성 파일을 그래픽으로 설정)

Red Hat Kickstart 설치 방법은 주로 Red Hat Enterprise Linux 운영 체제에서 자동으로 운영 체제 설치 및 구성을 자동으로 수행하기 위해 사용됩니다.

우분투 사전 설정 / 킥 스타트에 대한 문서 . 우분투는 킥 스타트 (및 미리 설정)를 제한적으로 지원합니다. 누락 된 것 중 하나는 미리 설정하기위한 그래픽 인터페이스입니다. 킥 스타트 에는 이것에 대한 옵션이 있지만 (이미지 참조) 우분투에서는 작동하지 않는 것 같습니다. 그래도 수동으로 수행 할 수 있습니다 (아래 미리 설정 참조).

킥 스타트 설치 및 시작 :

sudo apt-get install system-config-kickstart
ksconfig

** 경고 **

킥 스타트는 Ubuntu 13.10에서 버그가 발생했으며 시작할 때 오류가 발생합니다. 여기 수정이 있습니다. 주석에 패치를 텍스트 파일에 넣고 저장 한 다음 ( "패치"라고 함) 커밋합니다.

여기에 이미지 설명을 입력하십시오

그 후에 ksconfig는 많은 옵션을 조작 할 수있는 구성 편집기가 시작됩니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

설정할 수있는 모든 옵션에 대한 설명 은 Red Hat Linux 7.2 : 공식 Red Hat Linux 사용자 정의 안내서참조 하십시오.

완료 한 후 변경 사항을 ks.cfg파일에 저장하고 변경 중인 ISO에 복사하십시오.

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • 여기에서 아무것도 변경하면 설치 프로그램은 SKIP가 유효한 것으로 간주 될 경우 해당 정보를 요구합니다. 옵션을 변경하지 않은 경우 설치 관리자는 여전히 응답을 요구합니다.
  • 또한 킥 스타트 다운로드 할 수있는 파일 과 같은 사람들을 저장 ks-custom.cfg~/Downloads/newIso/preseed/.

자격 증명을 삽입 한 예입니다. 나는 sudo ksconfig커맨드 라인에서 시작했다 .

여기에 이미지 설명을 입력하십시오

그리고 프로젝트에 저장 :

여기에 이미지 설명을 입력하십시오

미리 설정 (수동으로 구성 파일 설정)

미리 설정을 사용하면 설치가 진행되는 동안 수동으로 답변을 입력하지 않고도 설치 과정에서 질문에 대한 답변을 설정할 수 있습니다. 따라서 대부분의 설치 유형을 완전히 자동화 할 수 있으며 일반 설치 중에 사용할 수없는 일부 기능도 제공합니다.

일반 설치에 필요한 미리 설정을 자신의 레이블로 복사하십시오.

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • myownoption를 사용한 것으로 변경하십시오 .

이제 설정을 변경합니다. 사용 debconf-get-selections으로부터 debconf-utils당신은 당신이 특정 소프트웨어와 함께 사용할 수있는 매개 변수를 조사 할 수 있습니다.

이것을 설정하는 예 :

여기에 이미지 설명을 입력하십시오

tasksel과 함께 설치 될 램프 서버 추가 :

여기에 이미지 설명을 입력하십시오

  • "openssh"및 "build-essential"패키지를 추가하려면이를 시드 파일에 포함시킬 수 있습니다.

    d-i pkgsel/include string openssh-server build-essential
    
  • openssh의 예 :

    debconf-get-selections | grep openssh
    openssh-server  ssh/vulnerable_host_keys    note
    openssh-server  ssh/use_old_init_script boolean true
    openssh-server  ssh/encrypted_host_key_but_no_keygen    note
    openssh-server  ssh/disable_cr_auth boolean false
    
  • 이 옵션을에 추가 할 수 있습니다 custom-iso/preseed/ubuntu-myownoption.seed.

  • debconf 설정을 사용한 설명 / 예 .
  • 미리 설정 한 예제 파일
  • 에 관한 : 현지화, 네트워크 구성, 네트워크 콘솔, 시계, 시간, 분할
  • 미리 설정 파일의 끝에 다음과 같이 패키지 (임의 예제)를 추가 할 수 있습니다.

    % packages openssh-server mysql-server apache2

오프라인 설치

패키지를 추가하고 ISO에없는 패키지는 저장소에서 패키지를 다운로드합니다. 인터넷에 연결되어 있지 않으면 문제가되므로 모든 패키지 (및 종속성)를 프로젝트에 추가하고 DVD로 구워야합니다. 운 좋게도 일반 서버 ISO에는 많은 공간이 있지만주의하십시오. CD 및 / 또는 DVD의 크기는 제한적입니다.

필요한 모든 DEB 패키지를 다운로드하여에 저장하십시오 ~/Downloads/. 새로운 ISO에는 다음 두 디렉토리가 필요합니다.

mkdir -p ~/Downloads/newIso/dists/stable/extras/binary-i386
mkdir -p ~/Downloads/newIso/pool/extras/
sudo cp ~/Downloads/*.deb newIso/pool/extras/

그러면 새 패키지로 프로젝트가 업데이트됩니다.

cd ~/Downloads/newIso
sudo apt-ftparchive packages ./pool/extras/ > dists/stable/extras/binary-i386/Packages
sudo gzip -c ./dists/stable/extras/binary-i386/Packages | tee ./dists/stable/extras/binary-i386/Packages.gz > /dev/null
cd ~/Downloads/

ISO 만들기

cd ~/Downloads/     
sudo md5sum `find ! -name “md5sum.txt” ! -path “./isolinux/*” -follow -type f` > md5sum.txt
sudo mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-13.10-myowninstall-amd64.iso -joliet-long newIso/
  • 두 번째 줄은 새로운 체크섬을 생성하며 패키지를 추가 할 때만 필요합니다.
  • 세 번째는 프로젝트에서 ISO를 만들어 DVD로 구울 수 있습니다.

결과:

여기에 이미지 설명을 입력하십시오

이제 실제로 레코딩하고 설치하여 사용해 볼 수 있습니다. 초기 생성 ISO를 테스트하는 데 더 빠르기 때문에 가상 머신으로 사용하는 것이 좋습니다 (그렇지 않으면 재부팅을 계속합니다).

그리고 VirtualBox를 설치하면 다음 메뉴가 나타납니다.

여기에 이미지 설명을 입력하십시오

버그 사냥

설치하는 동안 1 개의 문제가 발생했습니다 : 기본값이 선택되지 않았습니다.

샤딘. 당신의에서 시드 파일 주석에

### Package Selection
tasksel tasksel/first multiselect Custom-Ubuntu-Server
d-i pkgsel/include string openssh-server build-essential
%packages openssh-server postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

아마도 다음과 같아야합니다.

### Package Selection
tasksel tasksel/first multiselect lamp-server
d-i pkgsel/include string openssh-server build-essential postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3

당신의 tasksel 라인을 버리고 LAMP 서버를 원하지 않습니다 (예 : Apache, Mysql, Php)


데스크톱 버전에 사용할 수 있습니까?
Braiam

정말 고맙습니다!! 이 과정을 쉽고 원활하게 해주셔서 감사합니다. VirtualBox를 설치하고 사용자 정의 서버를 설치하기로 선택한 후 한 가지 문제가 발생했습니다.이 오류 메시지가 나타납니다! 유효한 XHTML .
Shadin

그래, 내가 했어. 실제로 나는 당신이 내 seed 파일을 보길 원한다 [ megafileupload.com/en/file/493602/… 파일 의 끝에 패키지를 추가 한 방법에 대해 잘 모르겠다
Shadin

오! 감사! 나는 그것을 시도하고 당신에게 돌아올 것이다. 또한 메일 서버, 웹 서버, JBOSS 등과 같은 이미지 에서이 프로세스 중에 추가 서버를 제거 할 수있는 방법이 있는지 알고 싶습니다. postgresql과 패키지 만 포함하고 싶습니다.
Shadin

2
@shadin 괜찮습니다. Lucio가 어떻게 작동하는지 지켜보십시오. ;-) 의견을 정리했습니다. 브라이 암 : 그렇습니다. 데스크탑에는 변경해야 할 것이 더 많지만 이것은 시작입니다 (패치하면 킥 스타트도 작동하지만 여전히 우분투에서는 지원되지 않습니다).
Rinzwind
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.