สร้างตัวติดตั้ง USB เพื่อติดตั้ง Ubuntu จากบรรทัดคำสั่ง?


22

ฉันกำลังพยายามสร้างอิมเมจ USB ที่บูตได้เพื่อติดตั้ง Ubuntu บนคอมพิวเตอร์เครื่องใหม่

ฉันได้ทำสิ่งนี้ก่อนที่จะทำตามคำแนะนำ" สร้างไดรฟ์ USB " สำหรับเดสก์ท็อป Ubuntu แต่ฉันไม่มีเดสก์ท็อป Ubuntu ที่พร้อมใช้งาน

ฉันจะทำเช่นเดียวกันโดยใช้เพียงบรรทัดคำสั่งได้อย่างไร

สิ่งที่ฉันได้ลอง:

  • สร้าง USB ที่บูตได้บน Mac OS X โดยทำตามคำแนะนำของ ubuntu.com "สร้างไดรฟ์ USB" สำหรับ Mac: ไม่บูต
  • usb-creator: ตามapt-cache search usb-creatorและ Wikipedia usb-creator นั้นมีอยู่เป็นเครื่องมือกราฟิกเท่านั้น
  • "สร้างด้วยตนเอง" คำแนะนำที่ help.ubuntu.com: ไม่มีไฟล์และไดเรกทอรีที่อธิบายไว้ (เช่นcasper, filesystem.manifest, menu.lst) ที่มีอยู่ในภาพ ISO และผมไม่ทราบว่าสิ่งที่ได้เข้ามาแทนที่พวกเขา
  • unetbootin scripting : ต้องใช้เซิร์ฟเวอร์ X (รองรับกราฟิก) เพื่อให้ทำงานได้แม้ในขณะที่สคริปต์อย่างสมบูรณ์ (คำสั่งsudo unetbootin lang=en method=diskimage isofile=~/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yesให้ข้อความแสดงข้อผิดพลาดunetbootin: cannot connect to X server)

ปรับปรุง

ลองเล่นซอ GRUB: รวมข้อมูลจาก

ฉันสามารถไปได้ครึ่งทาง - มันบูทจาก USB, แสดงเมนูด้วงและเริ่มการติดตั้ง แต่การติดตั้งไม่สมบูรณ์

สำหรับการอ้างอิงนี่คือสิ่งที่ฉันได้รับมากที่สุด:

sudo su
  # mount USB pen
mount /dev/sd[X]1 /media/usb
  # install GRUB
grub-install --force --no-floppy --root-directory=/media/usb /dev/sd[X]
  # copy ISO image to USB
cp ~/ubuntu-10.10-server-amd64.iso /media/usb
  # mount ISO image, copy existing grub.cfg
mount ~/ubuntu-10.10-server-amd64.iso /media/iso/ -o loop
cp /media/iso/boot/grub/grub.cfg /media/usb/boot/grub/

ฉันแก้ไขแล้ว/media/usb/boot/grub.cfgเพื่อเพิ่ม. iso loopback ตัวอย่างรายการด้วง:

menuentry "Install Ubuntu Server" {
  set gfxpayload=keep
  loopback loop /ubuntu-10.10-server-amd64.iso  
  linux (loop)/install/vmlinuz  file=(loop)/preseed/ubuntu-server.seed iso-scan/filename=/ubuntu-10.10-server-amd64.iso quiet --
  initrd (loop)/install/initrd.gz
}

เมื่อทำการบูทจาก USB สิ่งนี้จะให้เมนูการบูต Grub ให้ฉันและเริ่มตัวติดตั้ง แต่ตัวติดตั้งยอมแพ้หลังจากหน้าจอสองหน้าบ่นว่าไม่พบไดรฟ์ซีดีรอม (โดยธรรมชาติเนื่องจากกล่องที่ฉันติดตั้งไม่มีออปติคัลไดรฟ์)

ฉันแก้ไขปัญหานี้โดยการยกเลิกและทำตามขั้นตอน "สร้างไดรฟ์ USB" โดยใช้ Ubuntu Live Desktop CD (บนคอมพิวเตอร์ที่มีออปติคัลไดรฟ์) จากนั้นการติดตั้ง USB จะใช้งานได้

แต่ฉันคาดหวังว่าจะมีวิธีการทำสิ่งนี้จากบรรทัดคำสั่งของระบบ Ubuntu โดยไม่มีเซิร์ฟเวอร์ X และไม่มีออปติคัลไดรฟ์ดังนั้นคำถามยังคงอยู่

ไม่มีใครรู้ได้อย่างไร


ลอง unetbootin
RolandiXor

@Roland unetbootin: cannot connect to X server - ดูเหมือนว่าจะต้องใช้ X แม้ว่า scripted เต็ม ( unetbootin lang=en method=diskimage isofile=/srv/share/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yes) และฉันต้องการหัวขาด ขอบคุณสำหรับเคล็ดลับแม้ว่า; ฉันอาจติดตั้ง X หากฉันไม่มีตัวเลือกอื่น
jg-faustus

สิ่งเหล่านี้ดูมีแนวโน้ม: pendrivelinux.com/install-grub2-on-usb-from-ubuntu-linux และunix.stackexchange.com/questions/665/…ต้องการ tweaking แต่จะลองใช้ดู
jg-faustus

@ jg-faustus: หากสิ่งต่าง ๆ มีความซับซ้อนฉันก็จะได้ลินุกซ์ abondoned บางที ddใช้ มันเป็นอัญมณี ไม่สามารถพูดได้มากพอ และทุก distro Linux ได้dd; ดังนั้นคุณจึงมีโซลูชันที่เป็นสากลโดยไม่ต้องมีสคริปต์ / เขียน / กำหนดค่า เพียงเส้นเดียวที่สวยงาม
Mahesh

grub.cfgรายการนั้นต้องพูดfile=/cdrom/preseed/ubuntu-server.seedบนlinuxบรรทัด (และไม่ใช่file=(loop)/preseed/ubuntu-server.seed) เพื่อหลีกเลี่ยงข้อผิดพลาด 'ไม่สามารถเรียกคืนไฟล์การกำหนดค่าล่วงหน้า' ได้เมื่อตรวจพบภาพซีดีเรียบร้อยแล้ว
Paul Whittaker

คำตอบ:


9

เมื่อทำการบูทจาก USB สิ่งนี้จะให้เมนูการบูต Grub ให้ฉันและเริ่มตัวติดตั้ง แต่ตัวติดตั้งยอมแพ้หลังจากหน้าจอสองหน้าบ่นว่าไม่พบไดรฟ์ซีดีรอม

นี่เป็นข้อผิดพลาดที่ทราบกันดีกับเซิร์ฟเวอร์ ubuntu iso (เดสก์ท็อป iso ใช้งานได้ดี) แต่มีการแก้ไขเพื่อรับแพ็กเกจจาก iso บนไดรฟ์ usb: ครั้งเดียวในตัวติดตั้ง Ctrl + Alt + f2 เพื่อเปิด tty และใน ขั้ว:

mount -t vfat /dev/sdX1 /mnt
ln -sf /mnt/ubuntu-server.iso /dev/sr0

จากนั้นสลับกลับไปที่ตัวติดตั้งและลองสแกนซีดีเพื่อหาแพ็คเกจ มันควรจะทำงาน


ฉันไม่มีระบบที่จะลองทำในตอนนี้ แต่ใช่ - ฟังดูเหมือนว่ามันจะใช้ได้ :) ขอบคุณ!
jg-faustus

ฉันพบว่าตัวเลือกเมนู "ตรวจหาและเมานต์ซีดีรอม" จะเปลี่ยนกลับ /dev/sr0มาเลิกทำlnและกลับสู่สถานะเดิม (ใช้งานไม่ได้) อย่างไรก็ตามหากฉันรอที่ "ลองติดตั้งซีดีรอมอีกครั้ง" ให้ทำlnใน tty2 จากนั้นกลับสู่การกด "ใช่" มันทำงานได้ (กล่องโต้ตอบ "ลองใหม่?" จะปรากฏขึ้นก็ต่อเมื่อmountได้รับคำสั่งแล้ว)
Paul Whittaker

10

คุณลองกับ # แล้วdd if=path/to/image.iso of=/dev/sd# หรือยัง


อันนี้เป็นอัญมณี หนึ่งที่ดีที่สุด ทำงานบนลินุกซ์ distro ใด ๆ แต่คุณต้องระวังเป็นพิเศษ การเพิ่มbs=20Mหรือค่าที่เหมาะสมอื่น ๆ ช่วยเร่งความเร็ว สำหรับรายละเอียดอ้างอิงman dd
Mahesh

1
@Mahesh ไม่บางลินุกซ์ distro ไม่ทำงานแม้จะมีคำสั่งนี้หนึ่งในนั้นคือ OpenSUSE
Anwar

หรือ MeeGo และรับภาพเหล่านั้นเรียกว่าภาพไฮบริด
rzr

5

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

คำเตือน:
เพื่อหลีกเลี่ยงความเสียหายที่อาจเกิดขึ้นให้ทำตามคำแนะนำอย่างระมัดระวัง

  • สลับไปที่พร้อมต์รูทโดยพิมพ์ sudo su

    ตรวจสอบว่าอุปกรณ์ usb คืออะไร

  • tail -f /var/log/syslog

ตอนนี้คุณมีมุมมองสดที่ syslog เสียบไดรฟ์ usb ของคุณ คุณควรเห็นข้อความบนหน้าจอ บางสิ่งเช่นนี้

May 27 00:35:07 Mahesh kernel: [ 5054.646585] usb 2-1.1: new high-speed USB device number 5 using ehci_hcd
May 27 00:35:07 Mahesh kernel: [ 5054.741437] scsi8 : usb-storage 2-1.1:1.0
May 27 00:35:07 Mahesh mtp-probe: checking bus 2, device 5: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1"
May 27 00:35:07 Mahesh mtp-probe: bus: 2, device: 5 was not an MTP device
May 27 00:35:08 Mahesh kernel: [ 5055.739177] scsi 8:0:0:0: Direct-Access     JetFlash TS2GJFV30        8.07 PQ: 0 ANSI: 2
May 27 00:35:08 Mahesh kernel: [ 5055.740198] sd 8:0:0:0: Attached scsi generic sg3 type 0
May 27 00:35:08 Mahesh kernel: [ 5055.741593] sd 8:0:0:0: [sdc] 4005888 512-byte logical blocks: (2.05 GB/1.91 GiB)
May 27 00:35:08 Mahesh kernel: [ 5055.742214] sd 8:0:0:0: [sdc] Write Protect is off
May 27 00:35:08 Mahesh kernel: [ 5055.742218] sd 8:0:0:0: [sdc] Mode Sense: 03 00 00 00
May 27 00:35:08 Mahesh kernel: [ 5055.742712] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.742715] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.745326] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.745329] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.781564]  sdc: sdc1
May 27 00:35:08 Mahesh kernel: [ 5055.784191] sd 8:0:0:0: [sdc] No Caching mode page present
May 27 00:35:08 Mahesh kernel: [ 5055.784196] sd 8:0:0:0: [sdc] Assuming drive cache: write through
May 27 00:35:08 Mahesh kernel: [ 5055.784200] sd 8:0:0:0: [sdc] Attached SCSI removable disk

ดูมันและหาสิ่งหนึ่งที่อยู่ในวงเล็บสี่เหลี่ยมทำซ้ำ? sdcในกรณีนี้. จดไว้บนกระดาษแผ่นหนึ่ง พิมพ์Ctrl+ Cเพื่อไปที่พรอมต์

ค้นหาไฟล์ iso เพื่อเบิร์นลง usb

หากไฟล์ iso อยู่ที่ /path/to/iso/somecd.iso ; จดเส้นทางนี้ไว้บนกระดาษแผ่นหนึ่ง

เขียนลง USB

คำเตือน:

นี่จะเป็นการลบดิสก์ USB ทั้งหมด สำรองข้อมูลก่อนดำเนินการต่อ

  • dd if=/path/to/iso/somecd.iso of=/dev/sdc ibs=20M obs=20M

แทนที่ /path/to/iso/somecd.isoด้วยพา ธ ที่แท้จริงไปยังไฟล์ iso ของคุณ

แทนที่/dev/sdcด้วยสิ่งที่คุณจดบันทึกไว้ก่อนหน้านี้ หากส่วนที่ทำซ้ำคือsdb; ใช้/dev/sdbและอื่น ๆ

คำเตือน:

การพิมพ์อักษรชื่อไดรฟ์ผิดจะทำให้ข้อมูลสูญหายอย่างถาวรในไดรฟ์อื่น ให้ความสนใจเป็นพิเศษในขณะที่ออกddคำสั่ง


2
เพื่อหลีกเลี่ยงการสูญเสียข้อมูลโดยการเลือกดิสก์ผิดแนะนำให้ใช้/dev/disk/by-label/LABELแทน/dev/sdc
totti

1
คำแนะนำที่เหมาะสม แต่เมื่อคุณไม่แน่ใจในฉลากหรือคุณมี 'ปริมาณใหม่' มันจะกลายเป็นความเจ็บปวด ฉันชอบ SDX เสมอ แต่นั่นเป็นตัวเลือกส่วนบุคคล
Mahesh

1
คำตอบที่ดีที่สุด การปรับปรุงที่แนะนำอย่างหนึ่งคือการใช้ pv ในอินพุตสตรีมไปยัง dd ดังนั้นผู้ใช้จะได้รับข้อเสนอแนะความคืบหน้า (เช่น pv อ่าน iso สตรีมไปยัง dd และแสดงความคืบหน้าบน stderr)
Stabledog

2

การสร้างแฟลชไดรฟ์ Ubuntu USB ที่สามารถบูตได้จากเทอร์มินัล

  • เมานubuntu.isoต์ไฟล์สำหรับการรันคำสั่งด้านล่างในเทอร์มินัล

    sudo mkdir /media/iso
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • จากนั้นคัดลอกไฟล์ทั้งหมดจาก/media/isoไปยังโฟลเดอร์แฟลชไดรฟ์ usb ที่ติดตั้งใน/mediaแฟลชไดรฟ์โฟลเดอร์ของคุณ

    ใส่แฟลชไดรฟ์ usb ของคุณ

    มันจะติดตั้งโดยอัตโนมัติเมื่อใดก็ตามที่คุณใส่มันมันจะต้องติดตั้งพาร์ทิชัน/mediausb ของคุณไว้ภายในให้เราสมมติว่าไดรฟ์ usb ของคุณติดตั้งอยู่ใน/media/xxxxโฟลเดอร์

    cp -a /media/iso/. /media/xxx
    

    เรียกใช้lsblkคำสั่งเพื่อทราบพาร์ติชันอุปกรณ์ usb

  • จากนั้นวางldlinux.sysไฟล์ไว้ในพาร์ทิชันแฟลชไดรฟ์ USB ของคุณ (ในกรณีของฉัน/ dev / sdd1 ) เพื่อให้ยูเอสบีบูตได้สำหรับการรันคำสั่งด้านล่าง

    sudo apt-get install syslinux mtools
    syslinux -s /dev/sdd1
    
  • ไปลงใน/media/xxxโฟลเดอร์และเปลี่ยนชื่อisolinuxไดเรกทอรีไปsyslinuxจากนั้นไปลงในโฟลเดอร์ syslinux เปลี่ยนชื่อและเปลี่ยนชื่อไฟล์ไปisolinux.cfgsyslinux.cfg

       mv /media/xxx/isolinux /media/xxx/syslinux
       mv /media/xxx/syslinux/isolinux.cfg /media/xxx/syslinux/syslinux.cfg
    
  • รีบูทพีซีของคุณและเปลี่ยนboot-orderไบออสเป็น USB ตอนนี้แฟลชไดรฟ์ ubuntu usb ของคุณจะถูกบูทและคุณสามารถติดตั้งได้

วิธีนี้ใช้ได้กับลินุกซ์ดิสทริบิวชั่นไม่ใช่แค่ Ubuntu เท่านั้น


1

ฉันแก้ไขปัญหานี้โดยใช้ซีดีเดสก์ท็อป Ubuntu Live

ด้วยการบูต Live CD บนคอมพิวเตอร์ที่มีออปติคัลไดรฟ์ฉันสามารถใช้คำแนะนำบนเดสก์ท็อป Ubuntu เพื่อสร้างตัวติดตั้งปากกา USB โดยไม่ต้องแตะการติดตั้งที่มีอยู่


1

คุณสามารถแฮ็กผู้สร้าง usb เพื่อทำสิ่งนี้

คุณควรมีพาร์ติชัน vfat เดียวเป็นพาร์ติชัน 1 บนอุปกรณ์ usb (ขั้นตอนการลบดิสก์ของ usb-creator-gtk ทำสิ่งนี้) และควรทำเครื่องหมายว่าสามารถบูตได้

ต่อไปเราจะได้รับรหัส usb-creator python เพื่อช่วยเหลือเรา

$ sudo apt-get install usb-creator

หรือ

$ bzr branch lp:usb-creator

สร้างไฟล์ที่มีเนื้อหานี้และตั้งชื่อ usb-creator-cli หากคุณใช้ bzr ในขั้นตอนสุดท้ายให้วางไฟล์นี้ในไดเรกทอรี usb-creator (root ของสาขา bzr)

#!/usr/bin/env python
from __future__ import print_function
from usbcreator.misc import sane_path, setup_gettext, setup_logging, text_type

from usbcreator.install import install

sane_path()
setup_logging()
setup_gettext()

#/dev/sdb1 should be mounted on /mnt
#iso should be mounted to /iso
dev = '/dev/sdb1'
source = '/iso'
target = '/mnt' 
ugh = install(source, target, False, device=dev)
ugh.success = print
ugh.failure = print
ugh.progress = print
ugh.progress_message = print
ugh.progress_pulse = print
ugh.progress_pulse_stop = print
ugh.retry = print
ugh.run()

ทำให้สามารถเรียกใช้งานได้

$ chmod +x usb-creator-cli

ตอนนี้เมานท์ iso to / iso ของคุณและเมานท์อุปกรณ์ usb ของคุณไปที่ / mnt

$ sudo mkdir /iso ; sudo mount ubuntu-server-12.10-amd64.iso /iso
$ sudo mount /dev/sdb1 /mnt

หากคุณต้องการข้อความที่ verbose มากที่คอนโซลของคุณคุณสามารถ tail ~ / .cache / usb-creator.log

$ tail -f ~/.cache/usb-creator.log &

ตอนนี้เรียกใช้สคริปต์ usb-creator-cli

$ sudo ./usb-creator-cli

และดูข้อความทั้งหมดเลื่อนตาม

เมื่อคุณกลับไปที่พรอมต์อย่าลืมถอดออก / ถอดก่อนที่จะดึงอุปกรณ์เก็บข้อมูล usb ของคุณ


-2

คุณสามารถติดตั้งบรรทัดคำสั่ง (CLI) Ubuntu โดยใช้ Alternate Install หรือ Mini iso (ซึ่งควรพอดีกับ 512mb stick ของคุณ)

จากนั้นติดตั้ง Crunchbang โดยใช้วิธีสำรอง: http://crunchbanglinux.org/forums/topic/26/crunchbang-linux-81001-alternative-installation/

คุณสามารถลองใช้ CrunchBang รุ่น Lite ซึ่งน้อยกว่า 512mb

คุณสามารถใช้ Unetbootin เพื่อเตรียมแท่ง USB


crunchbang? ฮ่า ๆ ?
RolandiXor

ฉันไม่มีปัญหาในการปรับ ISO บนแท่ง (มันคือ 16GB) มันเป็นคำถามที่ว่าฉันจะสร้างแท่ง USB ที่บู๊ตเข้า ISO ได้อย่างไรในตอนแรกและสร้างมันโดยไม่ใช้อะไรเลยนอกจาก CLI
jg-faustus

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