Làm cách nào để tạo một bản cài đặt Ubuntu hoàn toàn không giám sát?


91

Tôi cần một đĩa CD hoặc USB, nó sẽ cài đặt Ubuntu trên một máy hoàn toàn không đầu. Dán CD vào và khởi động lại, không nên tham gia bàn phím hoặc màn hình.

Có một vài trở ngại:

  1. Menu chọn ngôn ngữ khi bạn khởi động CD lần đầu tiên.
  2. Thực tế là menu CD chờ đợi.
  3. Trình cài đặt đặt câu hỏi trong khi cài đặt.

Liên kết sử dụng đầy đủ: help.ubfox.com/lts/installation-guide/i386/ trên
Nanne

Vì vậy, tôi đã làm điều này. tuy nhiên với iso kickstart mới khi tôi khởi động lại máy chủ ubunutu của tôi, tôi gặp lỗi sau khi ubfox không tải được tệp amd-ucode / microcode_amd.bin Tôi đã cố gắng tìm kiếm tệp trên máy chủ ubunutu được cài đặt "thường xuyên" của mình nhưng tôi không thể tìm thấy nó .. và tôi không nhận được thông báo lỗi khi tôi khởi động lại nó
Rayman81

Câu trả lời:


83

Giải pháp hoàn chỉnh là:

Làm lại CD, tức là tải xuống ISO cài đặt không phải đồ họa ub Ubuntu (máy chủ hoặc CD cài đặt thay thế), gắn nó

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

Sao chép các tập tin liên quan vào một thư mục khác

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

Ngăn menu chọn ngôn ngữ xuất hiện

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

Sử dụng chương trình GUI để thêm tệp khởi động có tên ks.cfg

# apt-get install system-config-kickstart
# system-config-kickstart # save file to ks.cfg

Để thêm các gói để cài đặt, hãy thêm một %packagephần vào ks.cfgtệp khởi động, nối vào cuối ks.cfgtệp giống như thế này.

%packages
@ ubuntu-server
openssh-server
ftp
build-essential

Điều này sẽ cài đặt ubuntu-server "bó", và sẽ bổ sung openssh-server, ftpbuild-essentialgói.

Thêm một tập tin có sẵn, để loại bỏ các câu hỏi khác

# 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

Đặt dòng lệnh khởi động để sử dụng các tập tin khởi động và chèn sẵn

# vi isolinux/txt.cfg

Tìm kiếm

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

thêm ks=cdrom:/ks.cfgpreseed/file=/cdrom/ks.preseedvào dòng chắp thêm. Bạn có thể loại bỏ các từ quietvga=788. Nó sẽ trông giống như

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

Bây giờ tạo một iso mới

# 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

Đó là nó. Bạn sẽ có một đĩa CD sẽ cài đặt một hệ thống Ubuntu sau khi bạn khởi động từ nó, mà không cần một lần nhấn phím.


1
Cảm ơn bạn đã giải thích tuyệt vời, rất hữu ích! Tuy nhiên, tôi thấy rằng người ta không cần chỉ định tệp preseed, chỉ cần điền vào tệp ks.cfg là đủ (cũng chỉ định các phân vùng, v.v. trong đó thông qua khởi động). [Ubuntu 10.04 64 bit]
symaedr

1
Tôi dường như vẫn cần nhấn enter khi nó khởi động.
Catskul

5
Để bỏ qua sự cần thiết phải nhấn enter khi khởi động, thay đổi giá trị thời gian chờ từ 0 đến 10 in /isolinux/isolinux.cfg: thời gian chờ 10 Lưu ý rằng giá trị 10 đại diện cho 1 giây.
Digitalsanctum 7/2/13

1
Tôi thích các isolinux/langthiết lập, cảm ơn bạn.
Chu-Siang Lai

5
Để cài đặt từ thẻ nhớ USB, bạn chỉ cần thêm một bước nữa để chuyển đổi ISO sang định dạng khởi động ổ đĩa USB:# isohybrid path/to/image.iso
jjnebeker

5

Các hướng dẫn tại câu hỏi này bao gồm quá trình tạo ISO có thể khởi động EFI (như ISO x86_64 ISO chính thức):

Làm cách nào để tạo ISO khởi động EFI của phiên bản Ubuntu tùy chỉnh?

Sự khác biệt chính là đặt tệp này dưới dạng tệp chèn sẵn:

d-i partman-auto/method string lvm
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/choose_recipe select atomic
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/confirm_write_new_label     boolean true
d-i partman/choose_partition            select  finish
d-i partman/confirm_nooverwrite         boolean true
d-i partman/confirm                     boolean true
d-i partman-auto/purge_lvm_from_device  boolean true
d-i partman-lvm/device_remove_lvm       boolean true
d-i partman-lvm/confirm                 boolean true
d-i partman-lvm/confirm_nooverwrite     boolean true
d-i partman-auto/init_automatically_partition       select      Guided - use entire disk and set up LVM
d-i partman/choose_partition                select      Finish partitioning and write changes to disk
d-i partman-auto-lvm/no_boot            boolean true
d-i partman-md/device_remove_md         boolean true
d-i partman-md/confirm                  boolean true
d-i partman-md/confirm_nooverwrite      boolean true

Sử dụng tệp này làm tệp khởi động:

lang en_US
langsupport en_US
keyboard us
mouse
timezone America/Los_Angeles
rootpw --disabled
user USERNAME --fullname "USERNAME" --password "PASSWORD"
reboot
text
install
cdrom
auth  --useshadow  --enablemd5 
network --bootproto=dhcp --device=eth0
firewall --disabled 
skipx
%packages
@ ubuntu-server
openssh-server

Chỉnh sửa cấu hình khởi động EFI grub cho ISO:

sudo nano ~/ubuntu/boot/grub/grub.cfg

Đặt thành:

if loadfont /boot/grub/font.pf2 ; then
    set gfxmode=auto
    insmod efi_gop
    insmod efi_uga
    insmod gfxterm
    terminal_output gfxterm
fi

set menu_color_normal=white/light-blue
set menu_color_highlight=light-blue/light-gray
set timeout=10
set default=0

menuentry "Automatically Install Ubuntu Server with Custom Config" {
    set gfxpayload=keep
    linux   /install/vmlinuz  file=/cdrom/preseed/ubuntu-server.seed quiet ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
    initrd  /install/initrd.gz
}
menuentry "OEM install (for manufacturers)" {
    set gfxpayload=keep
    linux   /install/vmlinuz  file=/cdrom/preseed/ubuntu-server.seed quiet oem-config/enable=true --
    initrd  /install/initrd.gz
}
menuentry "Multiple server install with MAAS" {
    set gfxpayload=keep
    linux   /install/vmlinuz  modules=maas-enlist-udeb vga=788 initrd=/install/initrd.gz quiet --
    initrd  /install/initrd.gz
}
menuentry "Check disc for defects" {
    set gfxpayload=keep
    linux   /install/vmlinuz  MENU=/bin/cdrom-checker-menu quiet --
    initrd  /install/initrd.gz
}
menuentry "Rescue a broken system" {
    set gfxpayload=keep
    linux   /install/vmlinuz  rescue/enable=true --
    initrd  /install/initrd.gz
}

Đặt isolinux / txt.cfg như thế này:

default install
label install
  menu label ^Install Ubuntu Server with Custom Config
  kernel /install/vmlinuz
  append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
label cloud
  menu label ^Multiple server install with MAAS
  kernel /install/vmlinuz
  append   modules=maas-enlist-udeb vga=788 initrd=/install/initrd.gz quiet --
label check
  menu label ^Check disc for defects
  kernel /install/vmlinuz
  append   MENU=/bin/cdrom-checker-menu vga=788 initrd=/install/initrd.gz quiet --
label memtest
  menu label Test ^memory
  kernel /install/mt86plus
label hd
  menu label ^Boot from first hard disk
  localboot 0x80

Tạo một danh mục khởi động kép ISO:

sudo mkisofs -U -A "Custom1404" -V "Custom1404" -volset "Custom1404" -J -joliet-long -r -v -T -o ../Custom1404.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot .

Xác minh ISO khởi động EFI đã được tạo:

dumpet -i Custom1404.iso 

Đầu ra:

Validation Entry:
    Header Indicator: 0x01 (Validation Entry)
    PlatformId: 0x00 (80x86)
    ID: ""
    Checksum: 0x55aa
    Key bytes: 0x55aa
Boot Catalog Default Entry:
    Entry is bootable
    Boot Media emulation type: no emulation
    Media load segment: 0x0 (0000:7c00)
    System type: 0 (0x00)
    Load Sectors: 4 (0x0004)
    Load LBA: 3100 (0x00000c1c)
Section Header Entry:
    Header Indicator: 0x91 (Final Section Header Entry)
    PlatformId: 0xef (EFI)
    Section Entries: 1
    ID: ""
Boot Catalog Section Entry:
    Entry is bootable
    Boot Media emulation type: no emulation
    Media load address: 0 (0x0000)
    System type: 0 (0x00)
    Load Sectors: 4672 (0x1240)
    Load LBA: 1932 (0x0000078c)

5

Dưới đây là tập lệnh shell thực hiện quy trình này, cảm ơn vì đã giới thiệu: http://www.utech.de/2013/05/shell-script-creating-a-cd-for-unattends-ubfox-server-installations/

Kịch bản bạn tìm thấy sau liên kết về cơ bản thực hiện quy trình mà @Elazar đã mô tả, vì vậy các phần thiết yếu chỉ là một màn hình ở trên. Tôi đã thêm liên kết để tiết kiệm thời gian cho ai đó và để dễ dàng lặp lại điều này hơn cho các phiên bản Ubuntu khác.


2
Chào mừng bạn đến hỏi Ubuntu! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Oyibo

1
Tôi hiểu rồi. Kịch bản bạn tìm thấy sau liên kết về cơ bản thực hiện quy trình mà Elazar đã mô tả, vì vậy các phần thiết yếu chỉ là một màn hình ở trên. Tôi đã thêm liên kết để tiết kiệm thời gian cho ai đó và để dễ dàng lặp lại điều này hơn cho các phiên bản Ubuntu khác.
Michael

1
Vui lòng thêm lời giải thích từ nhận xét của bạn vào câu trả lời của bạn.
guntbert

3
Liên kết dường như bị phá vỡ.
Reggie

2
Kịch bản bây giờ ở đâu?
gà con

1

Một phương pháp khá đơn giản được mô tả tại liên kết sau đến câu trả lời tại AskUbfox,

Làm cách nào để tạo đĩa khôi phục USB không có khả năng khởi động?

  • Tạo hệ thống mà bạn muốn với kết nối mạng di động, ví dụ như theo

  • Tạo một tập tin hình ảnh dd [nén] của hệ thống (Tôi nghĩ rằng điều này dễ hơn so với việc làm lại).

  • Tạo một shellscript và gọi nó thông qua 'autostart' trong một hệ thống trực tiếp liên tục theo mô tả này . Bạn có thể làm điều đó với các sửa đổi tối thiểu (có thể chỉ khớp với tên của tệp hình ảnh nén) hoặc bạn có thể sửa đổi nó để phù hợp với trường hợp cụ thể của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.