Làm cách nào để tạo ISO Ubuntu Server tùy chỉnh?


42

Tôi muốn tạo một Ubuntu Server 12.04 ISO tùy chỉnh nhưng không thể tìm thấy một cách tiếp cận rõ ràng về cách thực hiện. Tôi thấy rằng Ubuntu-builder là một ứng dụng rất tốt để tạo Ubuntu Desktop tùy chỉnh, nhưng Ubuntu Server thì sao?

Câu trả lời:


61

Tải xuống

Tải xuống ISO máy chủ Ubuntu từ vị trí này . Bạn có tùy chọn để đi 32 bit hoặc 64 bit. Tên tệp cho phiên bản máy chủ sẽ trông giống như sau:

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

Tôi sẽ giả sử phiên bản 13.10 64 bit theo các hướng dẫn sau, vì vậy hãy điều chỉnh các lệnh để tải xuống bạn đã làm. Giữ một bản sao tải xuống của bạn để bạn có thể tạo nhiều phiên bản mới từ bản tải xuống ban đầu trong trường hợp bạn cần cải thiện dự án của mình. Tôi cũng sẽ cho rằng chúng tôi sử dụng ~/Downloads/để làm tất cả công việc của chúng tôi.

Thiết lập ban đầu

Điều này sẽ tạo 2 thư mục "iso" và "isoNew" trong thư mục Tải xuống của bạn, gắn ISO và sao chép nội dung từ "iso" sang "isoNew" để bắt đầu một dự án mới.

Đặt cái này trong một tệp văn bản, lưu nó, làm cho nó thực thi và thực thi nó:

# 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/
  • Nó sẽ ném 1 thông báo lỗi: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

Hình ảnh ví dụ về cách nó sẽ trông như thế nào:

Đang thực hiện:

Thi công

Kết quả:

Kết quả

Thêm tùy chọn menu khởi động

Các tùy chọn menu cho trình cài đặt được lưu trữ trong isolinux/txt.cfgvà bạn có thể tạo các tùy chọn mới ở giữa default installlabel install.

Điều này sẽ tạo ra một tùy chọn mới gọi là "Cài đặt máy chủ Ubuntu tùy chỉnh" và nó sẽ thêm tệp khởi động (tệp khởi động được sử dụng để thay đổi tùy chọn; giải thích bên dưới):

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 chỉ là một nhãn bạn có thể sử dụng để xác định tùy chọn của bạn.
  • "Cài đặt máy chủ Ubuntu tùy chỉnh" là văn bản sẽ hiển thị trong menu khởi động.
  • Nếu bạn muốn đặt tùy chọn menu của mình thành mặc định, bạn chỉ cần thay đổi default installthành default myownoption.

Thí dụ:

nhập mô tả hình ảnh ở đây

và chỉnh sửa tệp (Tôi đã sử dụng nano nhưng nếu có, hãy sử dụng gedit, vim hoặc trình chỉnh sửa khác). Đây là phần bổ sung của tôi vào tập tin này, nơi tôi đã sử dụng "máy chủ đèn" làm nhãn và hạt giống của tôi cũng sẽ được đặt tên là "máy chủ đèn".

nhập mô tả hình ảnh ở đây

Kickstart (thiết lập đồ họa một tập tin cấu hình)

Phương pháp cài đặt Red Hat Kickstart được sử dụng chủ yếu (nhưng không phải độc quyền) bởi hệ điều hành Red Hat Enterprise Linux để tự động thực hiện cài đặt và cấu hình hệ điều hành không giám sát.

Tài liệu về preseising / kickstart cho Ubuntu . Ubuntu đã hỗ trợ hạn chế cho khởi động (và sắp đặt trước); một trong những điều còn thiếu là giao diện đồ họa để đoán trước. Kickstart không có tùy chọn cho việc này (xem hình ảnh) nhưng những thứ này dường như không hoạt động trên Ubuntu. Bạn có thể làm điều này bằng tay mặc dù (xem Preseising bên dưới).

Cài đặt và bắt đầu khởi động:

sudo apt-get install system-config-kickstart
ksconfig

** CẢNH BÁO **

kickstart bị lỗi trong Ubuntu 13.10 và khi khởi động nó, nó bị lỗi. Đây là một sửa chữa . Đặt bản vá trong nhận xét vào một tệp văn bản, lưu nó (tôi đặt tên là "bản vá") và cam kết:

nhập mô tả hình ảnh ở đây

Sau đó ksconfig, nó sẽ khởi động trình chỉnh sửa cấu hình cho phép bạn thao tác rất nhiều tùy chọn.

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Xem Red Hat Linux 7.2: Hướng dẫn tùy chỉnh Red Hat Linux chính thức để biết mô tả cho tất cả các tùy chọn bạn có thể đặt.

Sau khi hoàn tất, hãy lưu các thay đổi vào một ks.cfgtệp và sao chép nó sang ISO mà chúng tôi đang thay đổi:

sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
  • Nếu bạn thay đổi bất cứ điều gì ở đây, trình cài đặt sẽ SKIP yêu cầu thông tin đó nếu nó được coi là hợp lệ. Nếu bạn không thay đổi tùy chọn, trình cài đặt vẫn sẽ yêu cầu bạn trả lời.
  • Bạn cũng có thể tải xuống các tập tin khởi động và lưu chúng vào như ks-custom.cfgtrong ~/Downloads/newIso/preseed/.

Ví dụ nơi tôi đã chèn thông tin đăng nhập của mình. Tôi bắt đầu nó với sudo ksconfigtừ dòng lệnh.

nhập mô tả hình ảnh ở đây

Và lưu nó vào dự án:

nhập mô tả hình ảnh ở đây

Đặt trước (cài đặt thủ công tệp cấu hình)

Preseinating cung cấp một cách để đặt câu trả lời cho các câu hỏi được hỏi trong quá trình cài đặt, mà không cần phải nhập câu trả lời theo cách thủ công trong khi cài đặt đang chạy. Điều này cho phép tự động hóa hoàn toàn hầu hết các loại cài đặt và thậm chí cung cấp một số tính năng không khả dụng trong quá trình cài đặt thông thường.

Sao chép phần chèn sẵn để cài đặt bình thường vào nhãn của riêng bạn:

sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
  • thay đổi myownoptionnhững gì bạn đã sử dụng.

Bây giờ để thay đổi cài đặt. Sử dụng debconf-get-selectionstừ debconf-utilsbạn có thể điều tra những thông số bạn có thể sử dụng với phần mềm cụ thể.

Ví dụ thiết lập này:

nhập mô tả hình ảnh ở đây

Và thêm máy chủ đèn được cài đặt với taskel:

nhập mô tả hình ảnh ở đây

  • Nếu bạn muốn thêm các gói "openssh" và "build-Essential", bạn có thể đưa gói này vào tệp hạt giống:

    d-i pkgsel/include string openssh-server build-essential
    
  • Một ví dụ cho 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
    
  • Bạn có thể thêm các tùy chọn này vào custom-iso/preseed/ubuntu-myownoption.seed.

  • Giải thích / ví dụ sử dụng cài đặt debconf .
  • Một ví dụ tập tin preseed
  • Ví dụ về: Bản địa hóa, Cấu hình mạng, Bảng điều khiển mạng, Đồng hồ và thời gian, phân vùng
  • Ở cuối tệp preseed, bạn có thể thêm các gói (ví dụ ngẫu nhiên) như thế này:

    % gói openssh-server mysql-server apache2

Cài đặt ngoại tuyến

Trong trường hợp bạn thêm các gói và những gói KHÔNG có trong ISO, trình cài đặt sẽ tải xuống các gói này từ kho lưu trữ. Nếu bạn không có kết nối internet đang hoạt động thì điều này sẽ có vấn đề, do đó bạn sẽ cần thêm tất cả các gói (và phụ thuộc) đó vào dự án của mình và ghi chúng vào đĩa DVD. May mắn thay, máy chủ ISO bình thường có rất nhiều chỗ nhưng hãy cẩn thận: CD và / hoặc DVD có kích thước hạn chế.

Tải xuống tất cả các gói DEB bạn cần và lưu trữ chúng trong ~/Downloads/. 2 thư mục này là cần thiết trên ISO mới:

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

Và điều này sẽ cập nhật dự án của chúng tôi với các gói mới:

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/

Tạo 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/
  • dòng thứ 2 tạo tổng kiểm tra mới và chỉ cần thiết khi thêm gói.
  • thứ 3 tạo ra một ISO từ dự án của bạn mà bạn có thể ghi vào đĩa DVD.

Kết quả:

nhập mô tả hình ảnh ở đây

Và bây giờ bạn có thể thử nó bằng cách thực sự ghi và cài đặt nó. Tôi khuyên bạn nên sử dụng như một máy ảo vì nó sẽ nhanh hơn để kiểm tra ISO được tạo ban đầu (nếu không bạn tiếp tục khởi động lại).

Và sau khi cài đặt VirtualBox, tôi nhận được menu sau:

nhập mô tả hình ảnh ở đây

Săn bọ

Chạy vào 1 vấn đề trong khi cài đặt: mặc định không được chọn.

Shadin. Từ tập tin hạt giống của bạn trong bình luận

### 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

có lẽ cần phải như thế này:

### 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

Bỏ dòng nhiệm vụ của bạn không muốn máy chủ LAMP (ví dụ: Apache, Mysql, Php)


Điều này có thể được sử dụng cho các phiên bản máy tính để bàn?
Braiam

CẢM ƠN BẠN RẤT NHIỀU!! Tôi thực sự không thể cảm ơn bạn đủ để làm cho quá trình này dễ dàng và trơn tru! Tôi chỉ gặp một vấn đề, sau khi tôi cài đặt VirtualBox và chọn cài đặt máy chủ tùy chỉnh của mình, tôi đã nhận được thông báo lỗi này! XHTML hợp lệ .
Shadin

Có tôi đã làm. thực sự tôi thích nếu bạn xem tập tin hạt giống của tôi [ megafileupload.com/en/file/493602/. Tôi không chắc về cách tôi đã thêm các gói ở cuối tập tin
Shadin

Oh! cảm ơn! Tôi sẽ thử điều đó và lấy lại cho bạn. Ngoài ra, tôi muốn biết liệu có cách nào để loại bỏ bất kỳ máy chủ bổ sung nào trong quá trình này khỏi hình ảnh như máy chủ thư, máy chủ web, JBOSS không, v.v. Tôi muốn nó chỉ bao gồm postgresql và các gói của nó.
Shadin

2
@shadin đó là ok xem cách Lucio làm điều đó ;-) Làm sạch bình luận. Braiam: vâng, nó có thể. Mặc dù có rất nhiều thứ để thay đổi trên máy tính để bàn nhưng đây là một sự khởi đầu (kickstart cũng hoạt động nếu bạn vá nó nhưng nó vẫn bị giới hạn bởi Ubuntu).
Rinzwind
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.