আমি কীভাবে উবুন্টুর একটি কাস্টমাইজড সংস্করণটির EFI- বুটেবল ISO তৈরি করব?


16

আমি একটি নিজস্ব উবুন্টু বিতরণ তৈরি করেছি যা আমি আমার ম্যাকটিতে বুট করতে চাই (একটি ইউএসবি থেকে)।

উবুন্টু ওয়েবসাইট থেকে স্ট্যান্ডার্ড bit৪ বিবিট-উবুন্টু-আইসো ব্যবহার করার সময় এটি বুট হয়। তবে, আমার নিজস্ব বিতরণযুক্ত আইসো ফাইলের সাথে ঠিক একই জিনিসটি কাজ করার পরে এটি কার্যকর হয় না এবং এটি কেবলমাত্র উত্তরাধিকারের বুটকে সমর্থন করে বলে মনে হয়। যাইহোক, ওএসের মধ্যে / sys / ফার্মওয়্যার / efi ফোল্ডার রয়েছে, তাই আমি জানি এটি ইএফআই সমর্থন করে। আমি রিলিনাক্স ব্যবহার করে আইসো তৈরি করেছি।

আমি দুটি আইএসও ফাইলের মধ্যে পার্থক্য দেখেছি এবং দেখেছি যে স্ট্যান্ডার্ড উবুন্টুতে একটি EFI / BOOT ফোল্ডার রয়েছে যার মধ্যে grubx64.efi এবং BOOTx64.EFI রয়েছে এবং এতে একটি বুট ফোল্ডার রয়েছে যা অন্যটিতে নেই। আমি এই দুটি ডিরেক্টরি EFI এবং বুট ফোল্ডারটি আমার অন্যান্য ইউএসবিতে অনুলিপি করার চেষ্টা করেছি, কিন্তু কাজ করে না।

আমার প্রশ্নটি হ'ল:

  • আমি কীভাবে এই দুটি ফোল্ডারগুলিকে আমার বর্তমান আইসো ফাইলটিতে পেতে পারি?
  • এবং আমি কীভাবে আমার বিতরণের একটি আইসো তৈরি করতে পারি যাতে এটি EFI বুট সমর্থন করে?

উত্তর:


18

আপনার একটি দ্বৈত বুট ক্যাটালগ আইএসও তৈরি করতে হবে যাতে এটি EFI এবং এমবিআর বুট করবে। স্ট্যান্ডার্ড উবুন্টু 14.04 x64 আইএসও ফাইলটি এইভাবে কাজ করে তবে EFI সিস্টেমগুলির জন্য নতুন 14.04 বুট করার যোগ্য আইএসও করার জন্য কোনও নির্দেশিকা পাওয়া যায় না। আমি এই জাতীয় একটি আইএসও তৈরি করতে সঠিক পদক্ষেপ একসাথে সক্ষম হয়েছি।

এই নির্দেশাবলী আপনাকে একটি কাস্টম উবুন্টু 14.04 সার্ভার আইএসও তৈরি করতে দেবে যা EFI এবং এমবিআর বুট করতে পারে। ফাঁকা, অবিচ্ছিন্ন ডিস্ক (উদাহরণস্বরূপ হাইপার-ভি-তে একটি নতুন জেনারেশন 2 ভিএম) সহ কোনও সিস্টেমে ইএফআই বুট করার সময়, সেটআপ স্বয়ংক্রিয়ভাবে শুরু হবে, তারপরে স্বয়ংক্রিয়ভাবে ডিস্কটি মুছুন এবং বেস উবুন্টু-সার্ভার প্যাকেজগুলি এবং ওপেনএসএইচ ইনস্টল করুন। LVM এবং অটো-পার্টিশন ব্যবহার করে উবুন্টু 14.04 সহ নতুন সিস্টেমগুলি স্বয়ংক্রিয়ভাবে সরবরাহ করার জন্য এটি তৈরি করা হয়েছে। আপনি যদি বিদ্যমান লিনাক্স সিস্টেমে এই আইএসও ব্যবহার করেন তবে বিদ্যমান ডিস্কগুলি সনাক্ত করে ইনপুটটির জন্য অপেক্ষা করা হলে ইনস্টলারটি থামবে stop যদি আপনি এই আইএসওটি একটি নন-ইএফআই সিস্টেমে ব্যবহার করেন (উদাহরণস্বরূপ একটি জেনারেশন 1 হাইপার-ভি ভিএম) তবে এটি গ্রাফিকাল ইনস্টলার স্টার্টআপ স্ক্রিনে অপেক্ষা করবে এবং স্বয়ংক্রিয় ইনস্টলারটি চালিয়ে যাওয়ার আগে ইনপুট লাগবে।

ফলাফলটি কেবল উবুন্টু-সার্ভার এবং ওপেনস্প-সার্ভার সহ একটি উবুন্টু সার্ভার ইনস্টলেশন।

একটি EFI- বুটযোগ্য ISO তৈরি করার পদক্ষেপগুলি এখানে রয়েছে:

14.04 আইএসও পান:

wget http://releases.ubuntu.com/14.04/ubuntu-14.04-server-amd64.iso

এটিকে মাউন্ট করুন এবং একটি নতুন ফোল্ডারে এর সামগ্রীগুলি বের করুন:

sudo mkdir -p ~/iso
sudo mount -o loop ubuntu-14.04-server-amd64.iso.iso ~/iso
sudo mkdir ~/ubuntu
sudo cp -rT ~/iso ~/ubuntu

সেই ডিরেক্টরিতে পরিবর্তন করুন যেখানে আমরা আমাদের কাজ করব:

cd ~/ubuntu

ইংরেজী ভাষা সেট করুন:

sudo -i
echo en >/home/user/ubuntu/isolinux/lang
exit

একটি প্রিসড ফাইল তৈরি করুন যা সমস্ত উপলব্ধ স্থান ব্যবহার করে ডিস্কটিকে অটো-বিভাজনে LVM ব্যবহার করবে:

sudo nano ~/ubuntu/ks.preseed

এটির সাথে ফাইলের সামগ্রীগুলি প্রতিস্থাপন করুন:

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

একটি কিকস্টার্ট ফাইল তৈরি করুন যা ইনস্টলেশনের সময় উবুন্টুকে কনফিগার করবে: (নিশ্চিত হয়ে নিন যে আপনি ব্যবহারকারীর নামটি পরিবর্তন করেছেন, এবং আপনার এনক্রিপ্ট করা পাসওয়ার্ড ব্যবহার করা উচিত)

sudo nano ~/ubuntu/ks.cfg

এটির সাথে ফাইলের সামগ্রীগুলি প্রতিস্থাপন করুন:

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

গ্রাব কনফিগারেশন ফাইলটি সম্পাদনা করুন সুতরাং যখন আইএসও একটি EFI বুট সঞ্চালন করে তখন বুটলোডার আমাদের প্রিসিড এবং কনফিগারেশন ফাইলগুলি ব্যবহার করতে সঠিক বিকল্পগুলি ব্যবহার করে:

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

এটির সাথে ফাইলের সামগ্রীগুলি প্রতিস্থাপন করুন:

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
}

কাস্টম কনফিগারেশন এবং কাস্টম প্রিসিড ব্যবহার করতে নন-ইএফআই বুটিং (এমবিআর বুটিং) এর জন্য আইসোলিনাক্স বুট মেনু সম্পাদনা করুন:

sudo nano ~/ubuntu/isolinux/txt.cfg

এটির সাথে ফাইলের সামগ্রীগুলি প্রতিস্থাপন করুন:

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

আইএসও তৈরি করুন:

এই কমান্ডটি http://petersmithphotog.no-ip.biz/wiki/index.php/Unattended_Install এ প্রদর্শিত কমান্ডের একটি পরিবর্তিত সংস্করণ । এই নির্দেশাবলী উবুন্টু 14.04 এর জন্য কাজ করে না কারণ তারা efi.img ফাইলটির জন্য ভুল অবস্থানগুলিতে নির্দেশ করে। (আইএসও-তে /। বুট / গ্রাব / এ থাকা উচিত)

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 .

আইএসওর সঠিক শৈলীর বুট ক্যাটালগ রয়েছে যাচাই করুন:

আপনি উবুন্টু থেকে ডাউনলোড করেছেন আসল আইএসও:

dumpet -i ~/ubuntu-14.04-server-amd64.iso 

আউটপুট:

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: 8446 (0x000020fe)
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: 24754 (0x000060b2)

আপনার তৈরি করা নতুন আইএসও:

dumpet -i ~/Custom1404.iso 

আউটপুট:

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)

আপনি এই আউটপুটটি কোনও আইএসও থেকে প্রাপ্ত আউটপুটটির সাথে তুলনা করতে পারেন এখানে নির্দেশাবলী ব্যবহার করে আমি কীভাবে উবুন্টুর সম্পূর্ণ অপ্রত্যাশিত ইনস্টল তৈরি করব? : (তারা একটি এমবিআর কেবল আইএসও তৈরি করে, দ্বৈত বুট ক্যাটালগ আইএসও নয়)

sudo mkisofs -D -r -V "non-efi-ubuntu" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../non-efi-ubuntu.iso .

আইএসও তথ্য পান:

dumpet -i ~/non-efi-ubuntu.iso 

আউটপুট:

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: 1925 (0x00000785)

2
এটি কোনও EFI বুটযোগ্য ISO তৈরি করার চেয়ে আরও বেশি কিছু করে। এই নির্দেশাবলী থেকে কিকস্টার্ট এবং প্রিসিড বিকল্পগুলি সরিয়ে আপনি একটি আদর্শ উবুন্টু 14.04 আইএসও তৈরি করতে পারেন। উত্তরে সুনির্দিষ্ট পরিবর্তনগুলি লক্ষ করা গেছে।
anothermh

1
তারপরে আমি আপনাকে কেবলমাত্র প্রাসঙ্গিক বিভাগগুলি এখানে রাখার জন্য অনুরোধ করছি, যেহেতু আপনার কাছে ইতিমধ্যে অন্য সমস্ত কিছুর সাথে অপ্রত্যাশিত ইনস্টলেশন প্রশ্নের উত্তর ইতিমধ্যে রয়েছে।
মুরু

2
হ্যাঁ! আমি কাস্টমাইজড ফোল্ডার থেকে একটি EFI বুটেবল আইএসও তৈরির উপায়ের জন্য অনেকদূর থেকে অনুসন্ধান করে যাচ্ছি .. খুশি আপনি এখানে সবকিছু এক জায়গায় রেখে দিয়েছেন!
অ্যালেক্স আর

1
এটি ভার্চুয়াল মেশিনে দুর্দান্ত কাজ করে তবে কোনও ইউএসবি ড্রাইভে অনুলিপি উবুন্টু চিত্রের মতো অনুলিপি করার সময় আমি এটি বুট করতে পারি না।
হারলেমস্পাইরেল

2
@ হারলেমস্পাইরেল, একটি ইউএসবি স্টিক থেকে ইনস্টল করতে আপনার আইএসওকে একটি ইউএসবি ড্রাইভ বুটেবল ফরম্যাটে রূপান্তর করতে আরও একটি পদক্ষেপ দরকার:# isohybrid path/to/image.iso
jjnebeker

1

ইউইএফআই ইউএসবি ড্রাইভ সক্ষম করেছে

আপনি যদি ইউএসবি মিডিয়াম থেকে কোনও ইনস্টলেশন চান, আপনার প্রথমে একটি কাস্টমাইজড আইএসও তৈরি করার দরকার নেই।

কেবলমাত্র ইউইএফআই-র বুট করা ইউএসবি লাইভ মিডিয়া তৈরি করা বেশ সোজা। কেবল আপনার FAT32- ফর্ম্যাটযুক্ত ইউএসবি ড্রাইভে ফাইলগুলি অনুলিপি করুন । এটাই! এটি বৈধ UEFI বুট মিডিয়াম হিসাবে সনাক্ত করা হবে।

তারপরে আপনি ফাইলগুলি সরাসরি ইউএসবি ড্রাইভে সংশোধন করতে পারেন।

উত্স এবং বিশদ: ইউইএফআই-কেবল বুটযোগ্য ইউএসবি লাইভ মিডিয়া কীভাবে তৈরি করবেন?


0

আমার জন্য সবচেয়ে ভাল উপায়:

1) সিস্টেমেব্যাক লাইভ আইসো তৈরি করুন

sudo apt-get install systemback
sudo apt-get install live-boot
sudo apt-get autoremove --purge casper

2) আইসোতে এইভাবে একটি ইউয়েফি পার্টিশন যুক্ত করুন:

cd /home
cat `ls -1 -t syst*.iso|head -1` efi.img >/tmp/live.iso
echo -e "n\np\n2\n\n\nt\n2\nef\nw\n"|fdisk /tmp/live.iso

3) মিডিয়াতে আইসো অনুলিপি করুন (এই ক্ষেত্রে আমার / পেনড্রাইভ / ডিভ / এসডিবিতে

pv /tmp/live.iso | dd of=/dev/sdb conv=notrunc,noerror
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.