ฉันต้องการสร้าง Ubuntu Server 12.04 ISO ที่กำหนดเอง แต่ไม่พบวิธีการที่ชัดเจนเกี่ยวกับวิธีการทำ ฉันเห็นว่า Ubuntu-builder เป็นแอพที่ดีมากในการสร้าง Ubuntu Desktop ที่กำหนดเอง แต่สำหรับ Ubuntu Server แล้วล่ะ
ฉันต้องการสร้าง Ubuntu Server 12.04 ISO ที่กำหนดเอง แต่ไม่พบวิธีการที่ชัดเจนเกี่ยวกับวิธีการทำ ฉันเห็นว่า Ubuntu-builder เป็นแอพที่ดีมากในการสร้าง Ubuntu Desktop ที่กำหนดเอง แต่สำหรับ Ubuntu Server แล้วล่ะ
คำตอบ:
ดาวน์โหลด
ดาวน์โหลด ISO เซิร์ฟเวอร์ Ubuntu จากตำแหน่งนี้ คุณมีตัวเลือกในการไป 32- บิตหรือ 64- บิต ชื่อไฟล์สำหรับรุ่นของเซิร์ฟเวอร์จะมีลักษณะเช่นนี้:
ubuntu-13.10-server-i386.iso
ubuntu-13.10-server-amd64.iso
ฉันจะสมมติว่าเป็นเวอร์ชั่น 13.10 64- บิตในคำแนะนำต่อไปนี้ดังนั้นให้ปรับคำสั่งเพื่อดาวน์โหลดที่คุณทำ เก็บสำเนาการดาวน์โหลดของคุณเพื่อให้คุณสามารถสร้างเวอร์ชันใหม่หลายเวอร์ชันจากการดาวน์โหลดต้นฉบับในกรณีที่คุณต้องการปรับปรุงโครงการของคุณ ฉันจะถือว่าเราใช้~/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/
mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only
ตัวอย่างภาพว่าจะเป็นอย่างไร:
การดำเนินการ:
ผลลัพธ์:
การเพิ่มตัวเลือกเมนูการบูต
เมนูตัวเลือกสำหรับการติดตั้งจะถูกเก็บไว้ในisolinux/txt.cfg
และคุณสามารถสร้างทางเลือกใหม่ในระหว่างและdefault install
label install
วิธีนี้จะสร้างตัวเลือกใหม่ที่เรียกว่า "ติดตั้งเซิร์ฟเวอร์ Ubuntu แบบกำหนดเอง" และจะเพิ่มไฟล์ kickstart (ไฟล์ kickstart จะใช้เพื่อแก้ไขตัวเลือกดังอธิบายด้านล่าง):
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
เป็นเพียงป้ายกำกับที่คุณสามารถใช้เพื่อระบุตัวเลือกของคุณdefault install
default myownoption
ตัวอย่าง:
และแก้ไขไฟล์ (ฉันใช้ nano แต่ถ้ามีให้ใช้ gedit, vim หรือโปรแกรมแก้ไขอื่น) นี่คือการเพิ่มของฉันไปที่ไฟล์นี้ที่ฉันใช้ "lampserver" เป็นป้ายกำกับและเมล็ดของฉันจะมีชื่อว่า "lampserver" ด้วย
Kickstart (การตั้งค่าไฟล์กำหนดค่าแบบกราฟิก)
วิธีการติดตั้ง Red Hat Kickstart ใช้เป็นหลัก (แต่ไม่เฉพาะ) โดยระบบปฏิบัติการ Red Hat Enterprise Linux เพื่อทำการติดตั้งและกำหนดค่าระบบปฏิบัติการแบบอัตโนมัติโดยอัตโนมัติ
เอกสารเกี่ยวกับ preseeding / คิกสตาร์ทสำหรับอูบุนตู Ubuntu ได้รับการสนับสนุนอย่าง จำกัด สำหรับการเริ่มต้น (และคาดการณ์ล่วงหน้า); หนึ่งในสิ่งที่ขาดหายไปคือส่วนต่อประสานกราฟิกสำหรับการคิดล่วงหน้า กระตุ้นจะมีตัวเลือกสำหรับการนี้ (ดูภาพ) แต่เหล่านี้ดูเหมือนจะไม่ทำงานในอูบุนตู คุณสามารถทำได้ด้วยตนเอง (ดูที่การคาดการณ์ด้านล่าง)
การติดตั้งและเริ่มต้น kickstart:
sudo apt-get install system-config-kickstart
ksconfig
** คำเตือน **
kickstart ถูกบั๊กใน 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
ks-custom.cfg
~/Downloads/newIso/preseed/
ตัวอย่างที่ฉันใส่ข้อมูลประจำตัวของฉัน ฉันเริ่มsudo ksconfig
จาก commandline
และบันทึกลงในโครงการ:
แสดงล่วงหน้า (การตั้งค่าไฟล์กำหนดค่าด้วยตนเอง)
การจัดเตรียมล่วงหน้ามีวิธีตั้งค่าคำตอบสำหรับคำถามที่ถามในระหว่างกระบวนการติดตั้งโดยไม่ต้องป้อนคำตอบด้วยตนเองในขณะที่กำลังติดตั้ง สิ่งนี้ทำให้เป็นไปได้ที่จะทำการติดตั้งเกือบทุกประเภทโดยอัตโนมัติและยังมีคุณสมบัติบางอย่างที่ไม่สามารถใช้ได้ในระหว่างการติดตั้งปกติ
คัดลอกค่าล่วงหน้าสำหรับการติดตั้งปกติไปยังป้ายกำกับของคุณ:
sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
myownoption
สิ่งที่คุณใช้ตอนนี้สำหรับการเปลี่ยนการตั้งค่า การใช้debconf-get-selections
จากdebconf-utils
คุณสามารถตรวจสอบว่าคุณสามารถใช้พารามิเตอร์ใดกับซอฟต์แวร์เฉพาะ
ตัวอย่างการตั้งค่านี้:
และการเพิ่ม lamp-server ที่จะติดตั้งกับ taskel:
หากคุณต้องการเพิ่มแพ็คเกจ "openssh" และ "build-essential" คุณสามารถรวมสิ่งนี้ไว้ในไฟล์ seed:
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
คุณสามารถเพิ่มตัวเลือกเหล่านี้จะ
ในตอนท้ายของไฟล์ preseed คุณสามารถเพิ่มแพ็คเกจ (ตัวอย่างแบบสุ่ม) ดังนี้:
% แพ็คเกจ openssh-server mysql-server apache2
การติดตั้งออฟไลน์
ในกรณีที่คุณเพิ่มแพ็กเกจและไม่อยู่ใน ISO ตัวติดตั้งจะดาวน์โหลดจากที่เก็บ หากคุณไม่มีการเชื่อมต่ออินเทอร์เน็ตที่ใช้งานอยู่นี่จะเป็นปัญหาดังนั้นคุณจะต้องเพิ่มแพ็คเกจเหล่านั้น (และการอ้างอิง) ลงในโครงการของคุณและเขียนลงในดีวีดี โชคดีที่เซิร์ฟเวอร์ ISO ปกติมีพื้นที่เยอะ แต่ระวัง: ซีดีและ / หรือดีวีดีมีขนาด จำกัด
ดาวน์โหลดแพคเกจ DEB ~/Downloads/
ทั้งหมดที่คุณต้องการและเก็บไว้ใน 2 ไดเรกทอรีเหล่านี้จำเป็นสำหรับ 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 ที่สร้างขึ้นครั้งแรก (มิฉะนั้นคุณจะทำการรีบูตเครื่อง)
และหลังจากติดตั้ง VirtualBox ฉันได้รับเมนูต่อไปนี้:
การล่าสัตว์บั๊ก
พบปัญหา 1 ข้อขณะติดตั้ง: ไม่ได้เลือกค่าเริ่มต้น
Shadin จากไฟล์ seedของคุณในความคิดเห็น
### 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
ทิ้งบรรทัด taskel ของคุณไม่ต้องการเซิร์ฟเวอร์ LAMP (เช่น Apache, Mysql, Php)