Créer un programme d'installation USB pour installer Ubuntu à partir de la ligne de commande?


22

J'essaie de créer une image USB de démarrage pour installer Ubuntu sur un nouvel ordinateur.

J'ai fait cela avant de suivre les instructions " créer une clé USB " pour le bureau Ubuntu, mais je n'ai pas de bureau Ubuntu disponible.

Comment puis-je faire de même en utilisant uniquement la ligne de commande?

Ce que j'ai essayé:

  • Créez une clé USB amorçable sur Mac OS X en suivant les instructions ubuntu.com «créer une clé USB» pour Mac: ne démarre pas.
  • usb-creator: Selon apt-cache search usb-creatoret Wikipédia, le créateur d'usb n'existe qu'en tant qu'outil graphique.
  • « Créer manuellement » instructions à help.ubuntu.com: Aucun des fichiers et des répertoires décrits (par exemple casper, filesystem.manifest, menu.lst) existe dans l'image ISO, et je ne sais pas ce qui les a remplacé.
  • script unetbootin : nécessite le serveur X (support graphique) pour s'exécuter, même lorsqu'il est entièrement scripté. (La commande sudo unetbootin lang=en method=diskimage isofile=~/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yesdonne un message d'erreur unetbootin: cannot connect to X server.)

Mise à jour

Également essayé le violon GRUB: Fusionner les informations de

J'ai pu arriver à mi-chemin - il a démarré à partir d'USB, a affiché le menu grub et a commencé l'installation, mais l'installation n'a pas été terminée.

Pour référence, c'est le plus proche que j'ai obtenu:

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/

J'ai ensuite modifié /media/usb/boot/grub.cfgpour ajouter un bouclage .iso, exemple d'entrée grub:

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
}

Lors du démarrage à partir de l'USB, cela me donnerait le menu de démarrage Grub et démarrerait le programme d'installation, mais le programme d'installation a abandonné après quelques écrans se plaignant de ne pas trouver le lecteur de CD-ROM. (Naturellement, comme la boîte sur laquelle j'installe n'a pas de lecteur optique.)

J'ai résolu ce problème particulier en abandonnant et en faisant la routine "créer un lecteur USB" en utilisant le CD de bureau Ubuntu Live (sur un ordinateur qui a un lecteur optique), puis l'installation USB fonctionne.

Mais je m'attends à ce qu'il y ait un moyen de le faire à partir de la ligne de commande d'un système Ubuntu sans serveur X et sans lecteur optique, donc la question se pose toujours.

Est-ce que quelqu'un sait comment?


essayez unetbootin.
RolandiXor

@Roland unetbootin: cannot connect to X server - semble nécessiter X même lorsqu'il est entièrement scripté ( unetbootin lang=en method=diskimage isofile=/srv/share/ubuntu-10.10-server-amd64.iso installtype=USB targetdrive=/dev/sdg1 autoinstall=yes), et je préférerais rester sans tête. Merci pour l'astuce, cependant; Je peux installer X si je manque d'autres options.
jg-faustus

Celles-ci semblent prometteuses: pendrivelinux.com/install-grub2-on-usb-from-ubuntu-linux et unix.stackexchange.com/questions/665/… Nécessite quelques ajustements, mais va l'essayer.
jg-faustus

@ jg-faustus: Si les choses étaient si compliquées, j'aurais abandonné Linux, peut-être. utiliser dd. C'est un petit bijou. ne peux pas en dire assez. Et chaque distribution Linux a dd; vous avez donc une solution universelle, sans rien à écrire / écrire / configurer. juste une belle ligne.
Mahesh

Cette grub.cfgentrée doit indiquer file=/cdrom/preseed/ubuntu-server.seedsur la linuxligne (et non file=(loop)/preseed/ubuntu-server.seed), pour éviter une erreur fatale «Échec de la récupération du fichier de préconfiguration» une fois que l'image du CD a été détectée avec succès.
Paul Whittaker

Réponses:


9

Lors du démarrage à partir de l'USB, cela me donnerait le menu de démarrage Grub et démarrerait le programme d'installation, mais le programme d'installation a abandonné après quelques écrans se plaignant de ne pas trouver le lecteur de CD-ROM.

Il s'agit d'un bogue connu avec iso du serveur ubuntu (iso de bureau fonctionne très bien), mais il existe un correctif pour obtenir les packages de l'iso sur le lecteur USB: une fois sur le programme d'installation, Ctrl + Alt + f2 pour ouvrir un tty et dans le terminal:

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

Revenez ensuite au programme d'installation et réessayez de scanner le CD pour les packages. Ça devrait marcher.


Je n'ai pas de système pour l'essayer pour le moment, mais oui - il semble que cela devrait fonctionner :) Merci!
jg-faustus

J'ai trouvé que l'option de menu "Détecter et monter le CD-ROM" reviendrait /dev/sr0, annulant lnet revenant à son état d'origine (cassé). Cependant, si j'attendais "Réessayer de monter le CD-ROM?" invite, a fait le lnin tty2, puis est revenu à appuyer sur "Oui", cela a fonctionné. (Cette boîte de dialogue "Réessayer?" N'apparaîtrait toutefois qu'une fois la mountcommande passée.)
Paul Whittaker

10

Avez-vous essayé avec # dd if=path/to/image.iso of=/dev/sd# ?


Celui-ci est un joyau. Le meilleur. fonctionne sur n'importe quelle distribution linux. mais vous devez être extrêmement prudent. l'ajout bs=20Mou toute autre valeur appropriée accélère les choses. pour plus de détails, reportezman dd
Mahesh

1
@Mahesh Non, certaines distributions Linux ne fonctionnent même pas avec cette commande, l'une d'elles est OpenSUSE
Anwar

ou MeeGo et leurs dérivés, ces images sont appelées images hybrides
rzr

5

Supposons que vous n'ayez rien d'autre qu'une invite devant vous. Si vous avez une interface graphique, vous pouvez ouvrir un terminal et faire tout ce qui est décrit ici. Ou vous pouvez utiliser un tty.

AVERTISSEMENT:
pour éviter tout dommage potentiel, suivez très attentivement les instructions.

  • Passez à une invite racine en tapant sudo su

    Détectez le périphérique USB.

  • tail -f /var/log/syslog

Vous avez maintenant une vue en direct sur syslog. Branchez votre clé USB. Vous devriez voir quelques messages à l'écran. Quelque chose comme ça.

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

regardez-le et trouvez une chose entre crochets qui se répète? sdcdans ce cas. Notez-le sur un morceau de papier. Tapez Ctrl+ Cpour accéder à l'invite.

Localisez le fichier iso à graver sur USB.

Si le fichier iso est à /path/to/iso/somecd.iso; notez ce chemin sur un morceau de papier.

Écrire sur USB

Attention:

Cela effacera tout le disque USB. Sauvegardez avant de continuer.

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

Remplacez /path/to/iso/somecd.isopar le chemin réel vers votre fichier iso.

Remplacez /dev/sdcpar tout ce que vous avez noté plus tôt. Si la partie répétitive est sdb; utiliser /dev/sdbet ainsi de suite.

Attention:

Taper une lettre de lecteur incorrecte entraînera une perte de données permanente sur un autre lecteur. Faites particulièrement attention lors de l'émission de la ddcommande.


2
Afin d'éviter la perte de données en sélectionnant le mauvais disque, il est conseillé d'utiliser à la /dev/disk/by-label/LABELplace de/dev/sdc
totti

1
Suggestion sensée. Mais quand vous n'êtes pas sûr de l'étiquette, ou que vous avez une tonne de «nouveaux volumes», cela devient une douleur. Je préfère toujours le sdX, mais c'est un choix personnel.
Mahesh

1
Meilleure réponse. Une amélioration suggérée consiste à utiliser pv sur le flux d'entrée vers dd, afin que l'utilisateur reçoive un retour d'information sur la progression (c'est-à-dire que pv lit l'iso, le diffuse sur dd et affiche la progression sur stderr).
Stabledog

2

Création d'une clé USB Ubuntu amorçable à partir du terminal

  • Montez le ubuntu.isofichier. Pour cela, exécutez les commandes ci-dessous dans le terminal,

    sudo mkdir /media/iso
    sudo mount -o loop /path/to/ubuntu.iso /media/iso
    
  • Copiez ensuite tous les fichiers de /media/isovotre dossier de lecteur flash USB monté dans /media.

    Insérez votre clé USB.

    Il sera automatiquement monté, chaque fois que vous l'insérerez. Votre partition USB doit être montée à l'intérieur /media. Supposons que votre lecteur USB soit monté dans le /media/xxxxdossier. Ensuite, exécutez la commande ci-dessous,

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

    Exécutez la lsblkcommande pour connaître la partition du périphérique USB.

  • Collez ensuite le ldlinux.sysfichier dans votre partition de lecteur flash USB (dans mon cas / dev / sdd1 ) pour rendre l' amorçage USB . Pour cela, exécutez les commandes ci-dessous,

    sudo apt-get install syslinux mtools
    syslinux -s /dev/sdd1
    
  • Allez dans le /media/xxxdossier et renommez le isolinuxrépertoire en. syslinuxEnsuite, allez dans le dossier syslinux renommé et renommez le fichier isolinux.cfgen syslinux.cfg.

       mv /media/xxx/isolinux /media/xxx/syslinux
       mv /media/xxx/syslinux/isolinux.cfg /media/xxx/syslinux/syslinux.cfg
    
  • Redémarrez votre PC et changez le boot-orderbios en USB.Maintenant, votre clé USB Ubuntu va démarrer et vous pouvez l'installer.

Cette méthode fonctionne pour toutes les distributions Linux, pas seulement pour Ubuntu.


1

J'ai résolu ce problème particulier en utilisant le CD de bureau Ubuntu Live.

En démarrant le Live CD sur un ordinateur avec un lecteur optique, je pouvais utiliser les instructions du bureau Ubuntu pour créer le programme d'installation du stylet USB sans toucher à l'installation existante.


1

Vous pouvez pirater le créateur USB pour ce faire.

Vous devez déjà avoir une seule partition vfat en tant que partition 1 sur le périphérique USB (l'étape d'effacement du disque de usb-creator-gtk le fait) et elle doit être marquée comme amorçable.

Ensuite, nous obtiendrons du code python de créateur USB pour nous aider.

$ sudo apt-get install usb-creator

ou

$ bzr branch lp:usb-creator

créez un fichier avec ce contenu et nommez-le usb-creator-cli, si vous utilisez bzr à la dernière étape, placez ce fichier dans le répertoire usb-creator (racine de la branche 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()

Rendez-le exécutable

$ chmod +x usb-creator-cli

Montez maintenant votre iso sur / iso et montez votre périphérique USB sur / mnt

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

Si vous voulez des messages très verbeux sur votre console, vous pouvez suivre ~ / .cache / usb-creator.log

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

Maintenant, exécutez ce script usb-creator-cli

$ sudo ./usb-creator-cli

Et regardez défiler tous les messages.

Lorsque vous revenez à l'invite, n'oubliez pas de démonter / mnt avant de retirer votre périphérique de stockage USB.


-2

Vous pouvez installer une ligne de commande (CLI) Ubuntu à l'aide de l'installation alternative ou de la mini iso (qui devrait tenir sur votre clé 512 Mo)

Installez ensuite Crunchbang en utilisant la méthode alternative: http://crunchbanglinux.org/forums/topic/26/crunchbang-linux-81001-alternative-installation/

Vous pouvez également essayer la version Lite de CrunchBang, qui est inférieure à 512 Mo.

Vous pouvez utiliser Unetbootin pour préparer la clé USB.


crunchbang? haha?
RolandiXor

Je n'ai pas de problème pour installer l'ISO sur la clé (c'est 16 Go), c'est plutôt une question de savoir comment créer une clé USB qui démarre dans l'ISO en premier lieu, et la créer en utilisant uniquement la CLI.
jg-faustus

Et unetbootin ne fonctionne pas, malheureusement - il semble nécessiter un support graphique même lorsque vous l'exécutez à partir de la ligne de commande.
jg-faustus
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.