ฉันจะสร้างการติดตั้ง Ubuntu Desktop 16.04.1 LTS แบบอัตโนมัติได้อย่างไร


43

วัตถุประสงค์

ฉันต้องการติดตั้ง Ubuntu Desktop 16.04.1 LTS โดยอัตโนมัติ ใส่ ISO CD แล้วเดินไป

ประเด็น

  • พารามิเตอร์การบูตไม่ถูกต้อง
  • คำถามยังคงถูกถามและต้องการการคลิกเมาส์
  • คำตอบที่ซับซ้อนโดยใช้ kickstart / preseed
  • ตัวอย่างเอกสารไม่ทำงานตามที่ระบุไว้โดยเฉพาะจากพาร์ทแมนและอูบุนตู

ฉันเจอโพสต์นี้ที่นี่และมันใกล้เคียงกับสิ่งที่ฉันต้องการ แต่ก็ไม่ประสบความสำเร็จเท่าที่ฉันต้องการเพราะมันเป็นเซิร์ฟเวอร์ Ubuntu โพสต์แนะนำให้ใช้การติดตั้ง Ubuntu แบบ "ไม่ใช้กราฟิก" แต่ฉันไม่พบการติดตั้งแบบไม่ใช่กราฟิกสำหรับ Ubuntu Desktop ซึ่งเหมาะสม ฉันพยายามปรับขั้นตอนต่าง ๆ และทำให้มันใช้งานได้กับ Ubuntu Desktop 16.04.1 LTS

เอกสารที่ใช้

ฉันใช้ทรัพยากรต่อไปนี้ทั้งหมด ...

เห็นได้ชัดว่าฉันไม่สามารถรวมทรัพยากรทั้งหมดของฉันได้เพราะ Askubuntu ไม่อนุญาตให้มีลิงก์มากกว่า 2 ลิงก์ ไม่เป็นประโยชน์ - นี่คือรายการ:

  • AskUbuntu
  • Ubuntu install.en.pdf
  • ยกตัวอย่าง
  • เอกสารการติดตั้ง Ubiquity
  • เอกสารและตัวอย่างของพาร์ทแมน
  • สูตรการแบ่งส่วนการอธิบายตัวเลข 3 ตัวและการถ่วงน้ำหนัก
  • ตัวอย่าง Preseed ที่ซับซ้อนยิ่งขึ้น

ทางออกปัจจุบัน

ฉันได้สร้างการติดตั้งแบบไม่ต้องใส่ข้อมูล แต่ไม่แน่ใจว่าถูกต้องหรือไม่ - หมายความว่าฉันควรจะแก้ไข isolinux / isolinux.cfg

มีความแตกต่างมากมายระหว่างโพสต์ที่ฉันเชื่อมโยงกับอิมเมจ Ubuntu Desktop นี่คือทางออกของฉัน:

ขั้นตอนที่ 1

ติดตั้ง Ubuntu ISO เพื่อให้ฉันสามารถคัดลอกเนื้อหาไปยังไดเรกทอรีอื่นแล้วแก้ไขไฟล์ที่เกี่ยวข้อง

mkdir -p /mnt/iso
mount -o loop ubuntu.iso /mnt/iso

ขั้นตอนที่ 2

ฉันคัดลอกไฟล์ ISO ไปยังไดเรกทอรีอื่นเพื่อแก้ไข

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

ขั้นตอนที่ 3

ฉันแก้ไขisolinux/isolinux.cfgไฟล์และแทนที่ทุกอย่างภายในด้วยสิ่งต่อไปนี้:

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

บรรทัดต่อท้ายนั้นยาวมากดังนั้นเพื่อให้ง่ายต่อการอ่านนี่คือตัวเลือกทั้งหมดที่ฉันใช้:

file=/cdrom/ks.preseed 
auto=true 
priority=critical 
debian-installer/locale=en_US 
keyboard-configuration/layoutcode=us 
ubiquity/reboot=true 
languagechooser/language-name=English 
countrychooser/shortlist=US 
localechooser/supported-locales=en_US.UTF-8 
boot=casper 
automatic-ubiquity 
initrd=/casper/initrd.lz 
quiet 
splash 
noprompt 
noshell

ฉันพบว่าพารามิเตอร์การบูตเหล่านี้จำเป็นสำหรับการติดตั้งแบบอัตโนมัติ สำหรับ Ubuntu Server นั้นอาจแตกต่างกัน

ขั้นตอนที่ 4

ฉันลองใช้และสร้างไฟล์ preseed จำนวนมาก แต่ฉันพบว่ามีความซับซ้อนมากขึ้นมีโอกาสมากขึ้นสำหรับข้อผิดพลาด ปัจจุบันนี้เป็นไฟล์แบบง่ายของฉันที่ทำงานกับisolinux.cfgไฟล์ด้านบน

### Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i base-installer/kernel/override-image string linux-server
d-i base-installer/kernel/override-image string linux-image-amd64
d-i mirror/country string US
d-i mirror/http/proxy string
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i pkgsel/install-language-support boolean false
tasksel tasksel/first multiselect ubuntu-desktop

# Users
d-i passwd/user-fullname string Liason
d-i passwd/username string liason
d-i passwd/user-password-crypted password [crpyt 3]
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password [crypt 3]
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands

ฉันไม่ได้รวมรหัสผ่านที่เข้ารหัสของฉันดังนั้นหากคุณลองใช้ไฟล์ preseed นี้โปรดเปลี่ยนเป็นรหัสผ่านที่เข้ารหัส นี่คือ 3 วิธีในการสร้างรหัสผ่าน

ขั้นตอนที่ 5

ฉันสร้าง ISO ใหม่จาก/opt/ubuntuiso/ไดเรกทอรี

mkisofs -D -r -V ATTENDLESS_UBUNTU -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

ขั้นตอนที่ 6

ในที่สุดฉันก็ทดสอบมันด้วย Virtualbox และสร้างการติดตั้งแบบอัตโนมัติ

คำถาม

ฉันจะต้องแก้ไขisolinux/isolinux.cfgไฟล์หรือไม่

ในโพสต์อื่น ๆ ดูเหมือนว่าพวกเขาจะสามารถแก้ไขisolinux/txt.cfgไฟล์และสามารถทำงานได้ ฉันพยายามประมาณหนึ่งชั่วโมงเพื่อใช้งานisolinux/txt.cfgแต่มันไม่ทำงาน

ไม่มีใครมีสูตร partman ที่ซับซ้อนมากขึ้นซึ่งระบุพาร์ติชันโดยตรง หรือการตั้งค่า LVM ที่ใช้งานได้? ฉันพยายามใช้การตั้งค่า LVM แบบง่าย ๆ แต่หลังจากรีบูตเครื่องมันจะไม่บูตและจะนั่งหน้าจอสีดำ นอกจากนี้ยังไม่มีตัวอย่างของพรีเซ็นต์เดียวที่ฉันระบุไว้ในเอกสารประกอบการทำงานเช่นกัน

ขอบคุณสำหรับความช่วยเหลือ

คำตอบ:


21

ตอบ

ฉันให้เวลาจากเดิมที่ถามคำถามเพื่อดูว่ามีวิธีแก้ไขปัญหาอื่น ๆ หรือไม่ แต่ดูเหมือนว่าโซลูชันที่ฉันคิดขึ้นขณะที่รอเป็นโซลูชันที่ทำงานได้เดียวที่ฉันเคยเห็น

ความเข้าใจผิด

เนื่องจากนี่เป็นแหล่งของความสับสนมากมายฉันจะพยายามทำให้ชัดเจนขึ้น ดูเหมือนว่าคำตอบบางข้อพยายามใช้อิมเมจUbuntu 16 Serverเมื่อฉันพยายามสร้างอิมเมจ Ubuntu 16 Desktop แบบไม่ต้องใส่ข้อมูลโดยเฉพาะ ปัญหาเกิดขึ้นเนื่องจากความแตกต่างของการนำไปใช้ของ di (ตัวติดตั้งเดเบียน) และ ubiquity เนื่องจากอิมเมจของเซิร์ฟเวอร์จะให้ความสนใจและใช้คำสั่ง di ทั้งหมดในไฟล์ preseed คำถามส่วนใหญ่ที่ฉันถามจึงไม่เกี่ยวข้องกับอิมเมจของเซิร์ฟเวอร์ อย่างไรก็ตามเนื่องจากการใช้งานแพร่หลายในฐานะที่เป็นผู้ติดตั้งภาพเดสก์ทอปคำสั่ง di จำนวนมากจะถูกเพิกเฉยและคุณมีข้อ จำกัด มากและเอกสารจำนวนมากหายไป

พบลิงค์เอกสาร

  • นี่คือลิงค์สำหรับ Ubiquity โดยไม่สนใจ preseed / ล่าช้า_command (ฉันเชื่อว่ามันไม่สนใจ preseed / early_command ด้วย)
  • นี่คือเอกสารเกี่ยวกับ Ubiquity ที่พูดถึงส่วนประกอบของตัวติดตั้งที่จะไม่ใช้ใน Ubiquity แต่ตามที่คุณจะสังเกตเห็นแม้ในเอกสารนี้มันบอกว่า preseed / early_command แต่ฉันจะทดสอบอย่างละเอียดเพื่อตรวจสอบเนื่องจากดูเหมือนจะไม่ทำงาน ฉัน (ฉันยอมรับว่าฉันไม่ได้ทดสอบ Early_ คำสั่งอย่างจริงจังดังนั้นฉันอาจผิด)

กระบวนการที่ประสบความสำเร็จ

นี่คือขั้นตอนของฉันสำหรับการประสบความสำเร็จในการสร้างแบบอัตโนมัติอูบุนตูเดสก์ท็ 16.04 LTS ISO

Mount Ubuntu ISO

คุณจะต้องติดตั้งไฟล์ ISO เพื่อที่คุณจะสามารถแก้ไขไฟล์ที่เกี่ยวข้องได้

mkdir -p /mnt/iso
mount -o loop ~/Downloads/ubuntu-16.04.1-desktop-amd64.iso /mnt/iso

คัดลอกไฟล์ ISO

เราจะต้องคัดลอกไฟล์ใน ISO ที่ติดตั้งไปยังไดเรกทอรีอื่นเพื่อให้เราสามารถแก้ไขได้ รู้สึกฟรีที่จะใช้ไดเรกทอรีใด ๆ ที่คุณชอบฉันเลือกไดเรกทอรี / opt เนื่องจากวิธีการอื่น แต่ / tmp สามารถใช้ได้อย่างง่ายดาย

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

แก้ไขไฟล์ txt.cfg

ที่นี่เราจะแก้ไขไฟล์ /opt/ubuntuiso/isolinux/txt.cfg และปรับแต่งพารามิเตอร์การบู๊ตของเราเพื่อรับการติดตั้งแบบไม่ต้องใส่ข้อมูลโดยสมบูรณ์ซึ่งจะรวมไฟล์ preseed ใช้เครื่องมือแก้ไขที่คุณต้องการ:

#default live
#label live
#  menu label ^Try Ubuntu without installing
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ---
#label live-install
#  menu label ^Install Ubuntu
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash ---
#label check
#  menu label ^Check disc for defects
#  kernel /casper/vmlinuz.efi
#  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash ---
#label memtest
#  menu label Test ^memory
#  kernel /install/mt86plus
#label hd 
#  menu label ^Boot from first hard disk
#  localboot 0x80

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

โปรดทราบบางสิ่ง:

  • ฉันใส่ความคิดเห็นข้อความต้นฉบับทั้งหมดในไฟล์
  • ฉันเพิ่มข้อความทั้งหมดหลังและรวมถึง "default live-install" ที่ด้านล่าง
  • ฉันตั้งชื่อไฟล์ preseed "ks.preseed" และจะอยู่ในไดเรกทอรีระดับบนสุดของ ISO (/ opt / ubuntuiso)

ใช้หรือสร้างไฟล์ Preseed

ใช้ไฟล์ preseed ที่มีอยู่แล้วด้วยความระมัดระวัง! ฉันไม่พบสิ่งใดที่เพิ่งใช้งานได้ นี่ไม่ได้เป็นการบอกว่าพวกเขาไม่มีตัวตนฉันแค่ไม่พบสิ่งใดที่มีการค้นหาสักหน่อย มีหลายวิธีในการกำหนดค่าไฟล์ preseed แต่ฉันพบว่ามีตัวเลือกมากมายที่จะถูกละเว้นระบุไว้ใน Ubiquity Documentation ที่ฉันลิงก์ไว้ด้านบนและในลิงก์สำหรับ preseed / ล่าช้า_command vs ubiquity / success_command ฉันกำลังรวมไฟล์ preseed ที่ใช้งานได้ง่ายของฉันซึ่งทำงานกับไฟล์ txt.cfg ด้านบน

สำหรับสตริง netcfg / get_hostnameและสตริงnetcfg / get_domainคุณสามารถใส่อะไรก็ได้ที่คุณต้องการ ฉันใช้ชื่อโฮสต์และโดเมนที่ไม่ได้กำหนดเนื่องจากฉันจะเปลี่ยนในภายหลังผ่านกระบวนการสร้างสคริปต์

สำหรับคำสั่งที่กำหนดเองใด ๆ ที่คุณต้องการเรียกใช้หลังจากการติดตั้งคุณจำเป็นต้องใช้:

ubiquity ubiquity/success_command string

ตามด้วยคำสั่งใด ๆ ที่คุณต้องการเรียกใช้ ให้ความสนใจกับการดำเนินการกับสตริงด้วย"; \" และใช้"/ target"เพื่อเปลี่ยนแปลงสิ่งที่เกี่ยวข้องกับระบบใหม่ที่ติดตั้ง

# Partitioning
# Old style using d-i command
#d-i partman-auto/disk string /dev/sda
#d-i partman-auto/method string regular
#d-i partman-lvm/device_remove_lvm boolean true
#d-i partman-md/device_remove_md boolean true
#d-i partman-auto/choose_recipe select atomic

# Newer ubiquity command
ubiquity partman-auto/disk string /dev/sda
ubiquity partman-auto/method string regular
ubiquity partman-lvm/device_remove_lvm boolean true
ubiquity partman-md/device_remove_md boolean true
ubiquity partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i mirror/country string US
d-i apt-setup/multiverse boolean true
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true

# Users
d-i passwd/user-fullname string User
d-i passwd/username string user
d-i passwd/user-password-crypted password yourEncryptedPasswd
d-i passwd/user-default-groups string adm audio cdrom dip lpadmin sudo plugdev sambashare video
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password rootEncryptedPasswd
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands
ubiquity ubiquity/success_command string \
  sed -i -e 's/dns=dnsmasq/#dns=dnsmasq/' /target/etc/NetworkManager/NetworkManager.conf ;\
  cp -a /cdrom/scripts/ /target/root/ ;\
  cp -a /cdrom/salt/ /target/root/

โปรดสังเกตสิ่งเหล่านี้เมื่อฉันทิ้งมันไว้เพื่อจุดประสงค์ในการอธิบายและพวกมันจะแตกต่างกันในคำสั่ง preseed ของคุณ

  • คุณต้องเพิ่มรหัสผ่านผู้ใช้ / รูท นี่คือลิงค์ที่แสดง 3 วิธีในการสร้างรหัสผ่าน crypt 3
  • คุณอาจต้องการเปลี่ยนกลุ่มที่ผู้ใช้ของคุณได้รับมอบหมาย
  • คุณจะต้องเปลี่ยน success_command อย่างแน่นอน ฉันทิ้งไว้เพื่อแสดงว่าสามารถจัดรูปแบบได้อย่างไรและวิธีใช้สภาพแวดล้อม/ ปลายทาง

สร้าง ISO ใหม่

สร้าง ISO เพื่อให้คุณสามารถทดสอบไฟล์ preseed ของคุณ ถ้าคุณใช้หรือทำของคุณเองคุณจะต้องทดสอบเช่นนี้จะมีแนวโน้มที่จะเป็นสถานที่กระบวนการของคุณจะล้มเหลว ฉันเขียนสคริปต์สำหรับการทดสอบอย่างรวดเร็ว แต่คุณสามารถชี้ไฟล์ preseed ที่ http: // โฮสต์ไฟล์ preseed และทดสอบอย่างรวดเร็วด้วยวิธีนั้น

mkisofs -D -r -V "UNATTENDED_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /tmp/ubuntu16-desktop-unattended-install.iso /opt/ubuntuiso

อย่าลังเลที่จะเปลี่ยนชื่อเอาต์พุตและไดเรกทอรีที่คุณจะบันทึก

เบิร์น ISO

ฉันอยากจะแนะนำการทดสอบบน virtualbox หรือสิ่งที่ชอบและเมื่อคุณใช้งานได้ดีแล้วให้เขียนลงในดีวีดี ตอนนี้คุณควรจะมี Ubuntu Desktop 16.04 LTS ที่ทำงานอัตโนมัติ

ข้อเสนอแนะการแก้ไขข้อผิดพลาด

ฉันเขียนสิ่งนี้ทั้งหมดในครั้งเดียวและอาจมีข้อผิดพลาดความผิดพลาดหรือสิ่งต่าง ๆ ที่สับสนระหว่างทาง หากใครลองทำเช่นนี้โปรดแจ้งให้เราทราบหากคุณพบข้อผิดพลาดในกระบวนการ และโปรดจำไว้ว่าถ้าคุณสร้างไฟล์ preseed ของคุณเองฉันอาจจะไม่สามารถตอบได้ว่าทำไมการติดตั้งแบบไม่ต้องใส่ข้อมูลของคุณเสียและไม่ทำงานเนื่องจาก ubiquity ชอบที่จะเพิกเฉยและไม่ทำบางสิ่งในไฟล์ preseed ฉันหวังว่านี่จะเป็นประโยชน์กับใครบางคน


สวัสดี @BrandonAuthier ขอบคุณสำหรับข้อมูลที่คุณแบ่งปันที่นี่ ฉันทำตามขั้นตอนทั้งหมดของคุณอย่างระมัดระวังและในที่สุดก็พยายามสร้างคีย์ USB ที่สามารถบู๊ตได้จากภาพ /tmp/ubuntu16-desktop-unattended-install.iso ในที่สุด ต้องการทำเช่นนั้นผมใช้คำสั่งนี้เป็นราก (อุปกรณ์ USB ของฉันอยู่ที่ / dev / dd if=/tmp/ubuntu16-desktop-unattended-install.iso of=/dev/sdc bs=4M && syncSDC): น่าเสียดายที่คีย์ USB (เฉพาะเมื่อมันมี iso ที่กำหนดเองนี้: มันใช้งานได้กับต้นฉบับ) ไม่ได้อยู่ในตัวเลือกการบูตที่เสนอดังนั้นจึงดูเหมือนว่ามันไม่ใช่ "บูตได้" บางทีคุณอาจมีความคิดว่าเกิดอะไรขึ้น?
Hadrien TOMA

อันที่จริงกุญแจ USB ถูกมองว่าเป็น "ดิสเก็ตต์ไดรฟ์" แทนที่จะเป็น "อุปกรณ์เก็บข้อมูล USB" (ซึ่งฉันสามารถบูตได้)
Hadrien TOMA

1
ฉันคิดว่าการสร้างคีย์ USB ที่สามารถบู๊ตได้นั้นแตกต่างกันเล็กน้อยและต้องเปลี่ยนชื่อ isolinux / และ isolinux.cfg เป็น syslinux / และ syslinux.cfg ฉันเขียนสิ่งนี้สำหรับซีดี / ดีวีดีและใช้มันใน VM สำหรับการทดสอบแล้วติดตั้งผ่านทางดีวีดี ฉันไม่ได้ลองทำให้มันเป็น USB ที่สามารถบู๊ตได้ แต่อาจมีหลายสิ่งที่ผิดปกติกับคำสั่ง dd หากคุณไม่ได้เปลี่ยนชื่อเหล่านั้นนั่นอาจเป็นส่วนหนึ่งของชื่อนั้น หากคุณไม่ฟอร์แมต USB อย่างถูกต้องและตั้งค่าสถานะที่สามารถบูตได้ด้วย fdisk นั่นอาจเป็นอีกรูปแบบหนึ่ง เมื่อฉันมีเวลาเพิ่มอีกนิดหน่อยฉันสามารถหาวิธีที่จะทำและโพสต์มันได้
Brandon Authier

1
ฉันขอแนะนำให้ใช้mkusbการใส่ ISO ลงบน USB หากคุณไม่คุ้นเคยกับการบูท Linux ในระดับต่ำและการโหลด grub / syslinux
dragon788

1
@HadrienTOMA dragon788 อาจถูกต้องเกี่ยวกับการใช้ mkusb หากคุณมีเครื่อง Ubuntu เพราะดูเหมือนว่าจะติดตั้งโดย PPA ค้นหาวิธีการฟอร์แมต usb ด้วย fdisk สร้างระบบไฟล์ที่เหมาะสมจากนั้น dd-ing นั้นคุ้มค่าที่จะเรียนรู้ สิ่งเดียวที่ฉันกังวลก็คืออิมเมจ ISO ของฉันอาจไม่ทำงานเพียงแค่ทำให้เป็นแบบนั้น ฉันจะแจ้งให้คุณทราบเมื่อฉันมีโอกาสทดสอบ
Brandon Authier

1

ฉันเสียใจที่ทราบว่าวิธีการเดิมของฉันไม่ทำงาน โชคดีที่ฉันพบสคริปต์ที่ออกแบบโดย Rinck Sonnenberg ( netson ) ที่จะสร้าง AMD64 ISOs ของ Ubuntu Server บน GitHub โดยไม่ต้องใส่ข้อมูล ฉันปรับปรุงสคริปต์โดยการเพิ่มความสามารถในการสร้าง I386 ISO ฉันเปลี่ยนระบบปฏิบัติการจากเซิร์ฟเวอร์ Ubuntu ไปเป็น Ubuntu Desktop คุณไม่จำเป็นต้องไปที่ที่เก็บ GitHub คุณสามารถทำตามคำแนะนำด้านล่าง

รันคำสั่งเหล่านี้:

$ wget https://raw.githubusercontent.com/iPlus-TechNet/ubuntu-unattended/master/create-unattended-iso.sh
$ chmod +x create-unattended-iso.sh
$ sudo ./create-unattended-iso.sh

บางครั้งwgetไม่สามารถใช้ได้ หากเป็นกรณีนี้ให้ใช้curl:

$ curl -O https://raw.githubusercontent.com/iPlus-TechNet/ubuntu-unattended/master/create-unattended-iso.sh

หากไม่มีงานใดให้ดาวน์โหลดและย้ายไปยังโฟลเดอร์บ้านของคุณ

คุณจะถูกถามว่าจะติดตั้ง Ubuntu รุ่นใดแล้วคำถามที่ Ubuntu จะถามว่าคุณติดตั้งด้วยตนเองหรือไม่ สคริปต์จะดาวน์โหลด Ubuntu ISO จากนั้นใช้การเปลี่ยนแปลงที่ร้องขอ ตอนนี้คุณมี ISO ที่พร้อมสำหรับการติดตั้งแบบอัตโนมัติ!

สิ่งนี้ควรตอบคำถามของคุณเพราะมันใช้ได้ดีสำหรับฉัน นอกจากนี้ยังเป็นการดีที่วิธีนี้ง่ายกว่าคำตอบเดิมของฉัน ฉันหวังว่าจะได้ผลกับคุณเหมือนที่เราทำ


1
ฉันขอบคุณคำตอบและหลังจากอ่านสคริปต์ของคุณฉันเห็นว่าคุณกำลังใช้เซิร์ฟเวอร์ Ubuntuซึ่งฉันได้กล่าวอย่างชัดเจนหลายครั้งแล้วตอนนี้ฉันไม่ต้องการใช้ ฉันรู้อยู่แล้วว่า Ubuntu Server ใช้ di และใช้พารามิเตอร์ preseed ดั้งเดิม อย่างไรก็ตามฉันต้องการ Ubuntu Desktop เป็นคำถามที่ชัดเจน ฉันไม่ต้องการติดตั้งเซิร์ฟเวอร์และต้องสร้างเวอร์ชันเดสก์ท็อปหลังจากติดตั้ง
Brandon Authier

ตกลง. ฉันจะเปลี่ยนเป็น Ubuntu Desktop
iplustech.net

ฉันซ่อมมัน. ฉันหวังว่าจะได้ผลกับคุณในตอนนี้
iplustech.net

1
มันควรจะง่ายมาก - สคริปต์ของคุณดาวน์โหลดเฉพาะอิมเมจ SERVER - ซึ่งไม่ใช่สิ่งที่ฉันขอและนั่นคือสาเหตุที่โซลูชันการเขียนสคริปต์ของคุณล้มเหลว มันมีทุกอย่างเกี่ยวกับระบบของฉันและไม่มีอะไรแปลกเพราะเป็นรุ่นเดสก์ท็อปซึ่งฉันระบุไว้อย่างชัดเจนในคำถามของเธรดนี้ ขอบคุณที่ทดลองใช้ แต่อิมเมจเซิร์ฟเวอร์จะไม่สามารถแก้ปัญหานี้ได้
Brandon Authier

2
github.com/iPlus-TechNetไม่มีอยู่อีกต่อไป? ฉันมีข้อผิดพลาด 404
Hadrien TOMA

1

ดูที่: https://github.com/core-process/linux-unattended-installation

โครงการนี้ให้ทุกสิ่งที่คุณต้องการในการสร้างการติดตั้งแบบไม่ต้องลงแรงสำหรับการตั้งค่าขั้นต่ำของ Linux ในขณะที่การแปลขั้นต่ำจะเป็นการตั้งค่าที่เบาที่สุดรวมถึงบริการ OpenSSH และ Python ซึ่งคุณสามารถหามาได้จากผู้ติดตั้งมาตรฐาน แนวคิดคือคุณจะทำการปรับใช้การกำหนดค่าและบริการเพิ่มเติมทั้งหมดด้วยความช่วยเหลือของเครื่องมือ Ansible หรือเครื่องมือที่คล้ายกันเมื่อคุณเสร็จสิ้นการตั้งค่าขั้นต่ำ


อืมมันดูน่าสนใจทีเดียว แน่นอนฉันจะรอ 18.04 LTS แต่ฉันอาจยุ่งกับสิ่งนี้เพียงเพื่อดูว่ามันทำงานอย่างไร ฉันสิ้นสุดการแก้ไขโดยการหาทุกสิ่งตามที่โพสต์ด้านบน อย่างไรก็ตามการเห็นว่าคนอื่นแก้ปัญหาได้ดีเสมอสำหรับแนวคิดที่แตกต่าง
Brandon Authier

1
เพิ่งเพิ่มการสนับสนุนเพื่อสร้างอิมเมจดิสก์รวมถึงอิมเมจ ISO สนุก!
Niklas

1

ผลงานยอดเยี่ยมของ Brandon Authier สำหรับการโพสต์และคำแนะนำของคุณคุณช่วยฉันได้มาก

ฉันมีปัญหาหนึ่งกับวิธีการของคุณแม้ว่า: ฉันพบว่าหลังจากติดตั้งเสร็จสิ้นและพีซีรีบูตด้วง GRUB

ดังนั้นฉันเพิ่ม ks.preseed ต่อไปนี้:

# Due notably to potential USB sticks, the location of the MBR can not be
# determined safely in general, so this needs to be specified:

d-i grub-installer/bootdev  string /dev/sda

# To install to the first device (assuming it is not a USB stick):
#d-i grub-installer/bootdev  string default

สิ่งนี้จะช่วยป้องกันไม่ให้การติดตั้งด้วงหยุดทำงานหากคุณไม่ถอด USB Stick ฉันได้รับจากhttps://www.debian.org/releases/stable/example-preseed.txt


ดังนั้นมันจึงแขวนเนื่องจาก USB ยังคงเสียบอยู่และพยายามบูตจาก USB อีกครั้งหรือไม่ ฉันสามารถเพิ่มไฟล์นี้ลงในไฟล์ preseed ด้านบนได้ แต่ต้องการให้แน่ใจว่าฉันรู้ว่าเกิดอะไรขึ้นและสิ่งนี้จะป้องกันอย่างไร
Brandon Authier

0

โปรดอย่าลองวิธีนี้ ไม่ทำงาน (เว้นแต่คุณกำลังพยายามฆ่าเวลา):

ฉันได้เห็นคำตอบของสิ่งนี้รอบตัว ฉันจะบอกวิธีแก้ปัญหาที่พบบ่อยที่สุดให้กับคุณ ฉันไม่เคยลองมาก่อนเลยดังนั้นมันอาจล้าสมัยไปแล้ว ฉันไม่เข้าใจจุดของมันจริงๆเพราะเพียงแค่ทำการติดตั้งด้วยตนเองจะง่ายขึ้นแต่ทว่า ...

เข้าสู่ระบบในฐานะรูทหรือรัน $ sudo su -

ดาวน์โหลดและติดตั้ง ISO อย่าทำสิ่งนี้ด้วยตนเองจากเว็บไซต์ Ubuntu

# mkdir -p /mnt/iso
# mount -o loop ubuntu.iso /mnt/iso

สำรองและย้ายไฟล์ที่เกี่ยวข้อง

# mkdir -p /opt/ubuntuiso
# cp -rT /mnt/iso /opt/ubuntuiso

บล็อกส่วนภาษาของ GUI ไม่ให้ปรากฏ

# cd /opt/ubuntuiso
# echo en >isolinux/lang

เพิ่มไฟล์ "Kickstart"

# apt install system-config-kickstart
# system-config-kickstart

[ตัวเลือก] เพิ่มแพ็คเกจสำหรับการติดตั้งของคุณ

# vim /path/to/ks.cfg #[OPTIONAL]

หรือเพียงแค่ค้นหาในไฟล์ของคุณและแก้ไขโดยตรง เพิ่ม%packagesส่วนและวางแพ็คเกจของคุณ

%packages
# Add your packages below. Example:
@ ubuntu-server
apache2
mysql-server
php7.0
php-pear
libapache2-mod-php7.0 
php7.0-mysql
php7.0-curl
php7.0-json
php7.0-cgi

อย่างที่ฉันบอกไปฉันไม่เคยทำแบบนี้มาก่อนดังนั้นถ้าคุณมีการตั้งค่าตามที่กล่าวไว้ข้างต้นมันอาจไม่ได้ติดตั้ง LAMP stack และคุณจะต้องทำมันด้วยตัวเองในภายหลัง

ระงับคำถามด้วยไฟล์ "preseed"

# echo 'd-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i partman/confirm boolean true' > ks.preseed

เปิดใช้งานไฟล์:

# vi isolinux/txt.cfg

จากนั้นค้นหา:

label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --

จากนั้นคุณจะต้องเพิ่มและks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseedลบคำquietและvga=788ดังนั้นจึงมีลักษณะเช่นนี้:

append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --

ตอนนี้คุณสามารถสร้างคำตอบใหม่ได้:

# mkisofs -D -r -V "ATTENDLESS_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

และไปที่นั่น!


ตอนนี้ที่ผมได้มองไปรอบ ๆ ผมเห็นสูตรที่แน่นอนเดียวกันที่นี่จากElazar Leibovich ฉันคิดว่าฉันพูดถูกว่ามันเป็นเรื่องธรรมดาที่สุด
iplustech.net

1
อืมผมไม่แน่ใจว่าเกิดอะไรขึ้นกับความคิดเห็นของฉันก่อนเกี่ยวกับการโพสต์นี้ ... วิธีการดังกล่าวนี้ไม่ได้ทำงาน หากคุณกำลังอ่านคำตอบนี้อยู่โปรดอย่าลองทำเช่นนี้เป็นการเสียเวลาของคุณ ฉันเชื่อมโยงกระบวนการที่แน่นอนนี้ในคำถามเดิมของฉันอย่างชัดเจนโดยสรุปข้อบกพร่องของวิธีการนี้: ks มีไฟล์ ps ที่ จำกัด มากเกินไปเมื่อเทียบกับ Ubuntu 16.01 เนื่องจากแพร่หลายใช้งานไม่ได้สนใจคุณสมบัติจำนวนมาก ระบุโดยโพสต์นี้หรือโพสต์อื่นคุณต้องผ่านพารามิเตอร์การบู๊ตจำนวนเล็กน้อยเพื่อข้ามและเคยเข้าถึง ps-ding เพื่อความแพร่หลาย
Brandon Authier

3
โปสเตอร์ชัดเจนไม่ได้อ่านโพสต์ของฉัน เขาเขียนว่า "ฉันไม่เคยลองมาก่อนเลยดังนั้นมันอาจจะล้าสมัยฉันไม่เข้าใจจุดนี้เพราะการติดตั้งด้วยตนเองจะทำได้ง่ายขึ้นแต่ทว่า ... " ไม่แม้แต่จะลองและอ้างว่าเป็นวิธีการแก้ปัญหา ??? ประการที่สองฉันอธิบายว่าฉันต้องการการติดตั้งแบบไม่ต้องใส่ข้อมูลซึ่งฉันสามารถเดินจากไปได้ ไม่ใช่คู่มือ ลองนึกภาพการติดตั้ง 100 กล่องคุณต้องการทำสิ่งนั้นด้วยตนเองหรือไม่ ไม่
แบรนดอน Authier

โอ้ ขอโทษสำหรับเรื่องนั้น. ฉันอาจดูวิธีอื่นในการทำเช่นนี้
iplustech.net
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.