จะสร้าง Ubuntu Server ที่ปรับแต่งเองได้อย่างไร?


42

ฉันต้องการสร้าง Ubuntu Server 12.04 ISO ที่กำหนดเอง แต่ไม่พบวิธีการที่ชัดเจนเกี่ยวกับวิธีการทำ ฉันเห็นว่า Ubuntu-builder เป็นแอพที่ดีมากในการสร้าง Ubuntu Desktop ที่กำหนดเอง แต่สำหรับ Ubuntu Server แล้วล่ะ

คำตอบ:


61

ดาวน์โหลด

ดาวน์โหลด 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/
  • มันจะโยน 1 ข้อผิดพลาด: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

ตัวอย่างภาพว่าจะเป็นอย่างไร:

การดำเนินการ:

การดำเนินการ

ผลลัพธ์:

ผลลัพธ์

การเพิ่มตัวเลือกเมนูการบูต

เมนูตัวเลือกสำหรับการติดตั้งจะถูกเก็บไว้ในisolinux/txt.cfgและคุณสามารถสร้างทางเลือกใหม่ในระหว่างและdefault installlabel 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 เป็นเพียงป้ายกำกับที่คุณสามารถใช้เพื่อระบุตัวเลือกของคุณ
  • "ติดตั้งเซิร์ฟเวอร์ Ubuntu แบบกำหนดเอง" คือข้อความที่จะแสดงในเมนูการบู๊ต
  • หากคุณต้องการที่จะทำให้ตัวเลือกเมนูของคุณหนึ่งเริ่มต้นคุณจะต้องเปลี่ยนไปdefault installdefault 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 ตัวอย่าง
  • ตัวอย่างเกี่ยวกับ: การโลคัลไลซ์เซชัน, การกำหนดค่าเครือข่าย, คอนโซลเครือข่าย, นาฬิกาและเวลา, การแบ่งพาร์ติชัน
  • ในตอนท้ายของไฟล์ 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/
  • บรรทัดที่ 2 สร้างเช็คซัมใหม่และจำเป็นเฉพาะเมื่อเพิ่มแพ็คเกจ
  • ที่สามทำให้ ISO จากโครงการของคุณที่คุณสามารถเขียนลงดีวีดีได้

ผลลัพธ์:

ป้อนคำอธิบายรูปภาพที่นี่

และตอนนี้คุณสามารถลองใช้งานด้วยการเบิร์นและติดตั้งจริง ฉันอยากจะแนะนำให้ใช้เป็นเครื่องเสมือนเพราะมันจะเร็วกว่าสำหรับการทดสอบ 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)


สามารถใช้กับรุ่นเดสก์ท็อปได้หรือไม่
Braiam

ขอบคุณมาก!! ฉันไม่สามารถขอบคุณมากพอที่ทำให้กระบวนการนี้ง่ายและราบรื่น! ฉันเพิ่งมีปัญหาหนึ่งหลังจากติดตั้ง VirtualBox และเลือกที่จะติดตั้งเซิร์ฟเวอร์ที่กำหนดเองของฉันฉันได้รับข้อความแสดงข้อผิดพลาดนี้! XHTML ที่ถูกต้อง
Shadin

ใช่ฉันทำ. จริง ๆ แล้วฉันชอบถ้าคุณดูที่ไฟล์ seed ของฉัน [ megafileupload.com/en/file/493602/…ฉันไม่แน่ใจเกี่ยวกับวิธีที่ฉันเพิ่มแพ็กเกจตอนท้ายไฟล์
Shadin

โอ้! ขอบคุณ! ฉันจะลองและกลับไปหาคุณ นอกจากนี้ฉันต้องการทราบว่ามีวิธีใดที่จะลบเซิร์ฟเวอร์เพิ่มเติมใด ๆ ในระหว่างกระบวนการนี้จากภาพเช่นเซิร์ฟเวอร์อีเมลเว็บเซิร์ฟเวอร์ JBOSS .. ฯลฯ ฉันต้องการให้รวมเฉพาะ postgresql และแพ็คเกจ
Shadin

2
@shadin ไม่เป็นไรดูว่า Lucio ทำได้อย่างไร ;-) ล้างความคิดเห็น Braiam: สามารถทำได้ แม้ว่าจะมีสิ่งต่าง ๆ มากมายที่จะต้องแก้ไขบนเดสก์ท็อปนี่เป็นการเริ่มต้น (kickstart ใช้งานได้ดีถ้าคุณแก้ไข แต่ก็ยังมีข้อ จำกัด ที่สนับสนุนโดย Ubuntu)
Rinzwind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.