Forum général.général Installer Linux sur PC pouvant booter uniquement un disque dur.

Posté par . Licence CC by-sa
Tags : aucun
3
19
juil.
2014

Salut à tous.

Je cherche une méthode pour installer Linux sur un PC qui ne peut booter que depuis un disque dur. Il ne dispose d'aucun lecteur CD/DVD, plus de lecteur de disquette bien sûr, pas de boot réseau et pas de support boot USB non plus (cette dernière méthode étant la plus pratique à mes yeux). Je suis donc bloqué.

Mais est-il possible de procéder ainsi ? :

1) J'installe le DD sur le PC sur lequel je veux installer Linux et le fait reconnaître par le BIOS.
2) Puis je démonte ce DD que je place dans un boîtier externe avec connexion USB.
3) Depuis un autre PC pleinement fonctionnel je connecte par port USB le disque en question temporairement externe. À partie de là, j'ai un contrôle total du disque.
4) J'en profite pour vérifier le disque (badblock en écriture), puis je place une image iso dessus (dans mon cas je voudrais essayer une image Debian du type minimale, qui finit l'installation par connexion à un serveur ftp sur la Toile).
Il faut que j'utilise "dd", avec "if=" qui pointe sur l'image source, le disque n'étant pas à formater, juste créer une partition totale dessus, exact ?
5) Je remonte mon DD sur le PC originel et je lance le boot.

Si j'ai bien compris… lors du processus de boot, le BIOS va lire le premier secteur du disque. Si tout est bien présent, on peut booter de cette façon, vrai ? Je ne vois pas la différence avec ce qui se passe dans le cas de figure où on charge en RAM une image depuis un CD/DVD/clef USB.

J'ai fureté sur la Toile, mais ce que j'ai trouvé parle du cas de figure où un booloader est déjà installé (Grub), ce qui n'est pas mon cas de figure.

Est-ce que le procédé est valide ? Il aurait l'avantage d'être générique.

D'avance merci.

  • # Presque pareil avec MultiSystem

    Posté par . Évalué à 1.

    Salut,

    Ton idée me semble bonne mais je ne pourrais te valider le bon fonctionnement pour autant.

    J'aurais une idée similaire sans garantie que cela fonctionne.
    Tu sors ton disque dur et le connecte dans un boitier externe.
    Tu crées une partition FAT de 5 Go et tu y installe MultiSystem, ensuite tu y met l'iso de ton choix.
    Tu remet ce disque dans le PC d'origine et tu boot sur le disque et donc sur MultiSystem qui te permet de lancer l'ISO de ton choix.
    Depuis le live CD tu fais l'installation sur ton disque.
    Inconvénient, tu te retrouves avec une partition de 5Go en FAT en début de HDD.
    Éventuellement test en mettant la partition en fin de disque, comme ça une fois ton OS installé, tu supprime cette partition et tu l'ajoutes à le dernière partition que tu as créé lors de l'installation de ton PC

    Julien_c'est_bien (y'a pas que Seb)

  • # simple et efficace

    Posté par . Évalué à 9. Dernière modification le 19/07/14 à 03:05.

    l'avantage de linux c'est la "portabilité"

    tu met donc le disque de la machine finale, dans une autre machine, tu installes ton linux
    quand tu as finis tu remet le disque dans la machine d'origine

    ca roule ;)

    faut juste faire gaffe à l'histoire de 32 et 64bits
    et eventuellement debrancher les autres disques de la machine lors de l'installation (pour ne pas ecraser une config qui fonctionne)

    • [^] # Re: simple et efficace

      Posté par . Évalué à 3.

      La solution de NeoX me parait la plus simple et la plus efficace.

    • [^] # Re: simple et efficace

      Posté par . Évalué à 2.

      Méthode testé avec deux portables lenovo : installation sur le premier, ça fonctionne ; déplacement du DD dans le deuxième, ça fonctionne pas.
      Je pense à un problème de driver de carte graphique.
      Peut être qu'en installant directement sur le deuxième, j'aurai eu le même problème. Mais je pense que la détection matérielle faite sur le premier portable a sélectionné des drivers qui ne correspondent pas au deuxième.
      Bref, pas convaincu par cette méthode.

  • # Copie de l'iso

    Posté par (page perso) . Évalué à 3.

    J'ai des doutes sur la copie de l'iso directement sur le disque dur. Je pense qu'en théorie, cela devrait marcher, mais tu vas te retrouver avec un disque dur sans table des partitions. Et te retrouver au mieux avec un espace disque équivalent à celui de l'image utilisée comme source.

    Sans oublié que la recherche des secteurs défectueux est une bonne idée en soit, mais si c'est pour écraser de manière brutale les données via un dd derrière, alors cela ne servira à rien (car si des secteurs défectueux sont détecté, ton dd va simplement écraser la liste des secteurs trouvés).

    Ne serait-il pas plus simple, depuis ton autre PC, de démarre le processus d'installation et d'installer ton système sur le disque dur externe ? Ou sinon, d'installer un gestionnaire de boot comme grub, afin de pouvoir ensuite choisir en ligne de commande au démarrage le périphérique de boot ? Je pense que c'est ce que je ferais si j'étais dans ton cas. Je créé 2 partitions sur le disque, une pour le boot, sur laquelle installer grub, et l'autre pour le système à installer. Lorsque ton disque est branché en tant que disque externe, j'installerai simplement grub. Ensuite, je remet le disque dans le PC d'origine et là, je pourrais choisir le média de démarrage (par exemple, le réseau, ou de l'usb)

    • [^] # Re: Copie de l'iso

      Posté par . Évalué à 2.

      Je dirai même que cela ne fonctionnera pas.
      Le MBR du disque doit pointer (= adresse d'un bloc du disque) vers un exécutable (souvent Grub).
      En copiant l'iso à partir du bloc 0, ou même du bloc 1, le MBR ne pointera vers rien du tout et ça bootera pas.

  • # tu vas juste livebooter sur le disque, pas installer

    Posté par . Évalué à 2.

    Pourquoi tu ne peux pas booter sur l'usb?

    Sinon ta méthode as au moins deux gros soucis :
    - Tu ne vas pas installer linux sur le dd. tu vas juste le rendre livebootable (même process que pour faire une clef usb bootable). donc à chaque reboot, tu perds tout, update, conf, data
    - Comme le dis Francesco, tu ne vas pas pouvoir utiliser l'intégralité de la taille de ton disque

    Si tu veux faire une install propre sur ce disque, à partir d'un autre ordinateur tu peux le partitionner, le formater puis utiliser debootstrap+chroot (pour du debian based, ou les archinstall scripts pour archlinx) sans oublier d'installer grub. Là tu auras une vraie install.

    Tu peux te baser là dessus : https://help.ubuntu.com/community/Installation/FromLinux#Without_CD

  • # Réponse.

    Posté par . Évalué à 1.

    Merci pour vos réponses. En fait, je crois que je soulève un cas d'école intéressant. J'aimerais vraiment bien épuiser le sujet et comprendre. Je précise qu'il faut que ce soit une méthode légère, si ça nécessite des tas de manipulations, ça aurait peu d'intérêt.

    @Julien_J06
    Extrait de la page d'accueil :
    "MultiSystem vous propose La première clé USB MultiBoot du marché."
    Voir remarque suivante.

    @machmalabala
    Le BIOS ne supporte pas le boot depuis le port USB. Encore une fois, ça serait la méthode de choix.

    @NeoX
    Je ne comprends pas du tout. Tu vas installer un système relatif à l'autre matériel (avec les modules spécifiques pour gérer cette configuration matérielle précise). Il ne suffit pas du tout que ce soit tous les deux des 32 ou 64 bits.

    @Francesco
    "la recherche des secteurs défectueux est une bonne idée en soit, mais si c'est pour écraser de manière brutale les données via un dd derrière"
    Exact. Je vais postuler que le disque est sans défaut (j'ai un stock de vieux DD).

    "tu vas te retrouver avec un disque dur sans table des partitions"
    Oui… mais est-ce gênant ? ; pas sûr à ce niveau.

    @machmalabala
    "Tu ne vas pas installer linux sur le dd. tu vas juste le rendre livebootable".
    À supposer que ce soit vrai, en quoi serait-ce un problème ? Parce qu'une fois qu'on a un noyau en RAM, je dois pouvoir partitionner, formater puis lancer l'installation proprement dite.

    Effectivement, "debootstrap" est peut-être une solution. Je viens de voir aussi "ISOLINUX".

    Je suis presque sûr que je suis près de la solution avec ma méthode.

    • [^] # Re: Réponse.

      Posté par . Évalué à 9. Dernière modification le 19/07/14 à 12:53.

      Je ne comprends pas du tout. Tu vas installer un système relatif à l'autre matériel (avec les modules spécifiques pour gérer cette configuration matérielle précise). Il ne suffit pas du tout que ce soit tous les deux des 32 ou 64 bits.

      avec tout le respect, tu as un reflexe de windowsiens avec les problemes de drivers tres (trop) specifiques à la machine.

      sous linux, sauf si tu installes les modules prorietaires graphiques, tout est detecté en automatique et beaucoup de pilotes sont "generiques" et inclus dans le noyau.

      tu peux donc installé le systeme de base sur une machine rapide, equipée d'un DVD, d'une connexion internet ou bootant sur USB,
      puis transferer le disque dur sur la machine d'à coté et finir l'installation ainsi.

      si tu savais le nombre de fois ou j'ai fais mes installations comme ca.
      le seul piege c'est installé un linux 32/64bits en fonction de la machine finale

      "Tu ne vas pas installer linux sur le dd. tu vas juste le rendre livebootable".

      À supposer que ce soit vrai, en quoi serait-ce un problème ? Parce qu'une fois qu'on a un noyau en RAM, je dois pouvoir partitionner, formater puis lancer l'installation proprement dite.

      parceque l'integralité de l'ISO ne va pas rentrer en RAM
      et que pendant l'installation il aura besoin d'acceder aux données qui sont …
      dans l'image ISO, sur le disque dur,
      que tu viens juste de formater pour lui faire installer linux dessus.

      • [^] # Re: Réponse.

        Posté par . Évalué à 1.

        Je n'utilise plus Windows depuis 2002. ;) Je ne découvre donc pas Linux, mais en fait les installations se passaient assez bien, donc je n'ai pas eu à étudier le processus de boot aussi en détail.

        Ça serait aussi simple que ça ? Je suis tout de même très surpris, mais si tu le dis. À la vérification 32/64 près, ça serait même ultra-simple comme méthode !

        En ce qui concerne ma méthode, au tout départ j'avais effectivement pensé à la nécessité de deux partitions. Si cela se confirme, ça ne serait pas une vraie contrainte. Quitte à supprimer la partition temporaire après l'installation, d'ailleurs (en étendant une autre pour récupérer l'espace).

        • [^] # Re: Réponse.

          Posté par . Évalué à 2.

          la technique de la double partition pourrait etre valable si clones un systeme deja installé, que tu copies "l'image" et l'outil de clonage dans l'une des partitions et que tu restaures dans l'autre (comme font bon nombres de constructeurs)

          mais si tu deposes le CD dans une partition, il faut encore que l'outil d'installation sache aller chercher sur autre chose que le lecteur de CD, ou la clef USB pour prendre ses fichiers.

        • [^] # Re: Réponse.

          Posté par . Évalué à 2.

          Ça serait aussi simple que ça ?

          Presque. Tu as quelques détails à prendre en compte, mais rien qui ne sera bloquant.
          Dans ton cas, tu pourras voir ça après coup (tu n'est pas en train de restaurer un backup sur un nouveau serveur à distance et sans KVM :)

          il peut manquer un firmware
          • il se peut qu'un composant ait besoin d'un firmware pour fonctionner qui n'est pas installé de base avec ta distrib, ce qui est nécessaire pour booter devrait tout de même fonctionner, il suffira d'installer le firmware après coup. Éventuellement de l'autre PC s'il concerne ta carte réseau (et que tu as besoin du réseau pour l'installer).
          si tu utilises une release un peu ancienne (genre une debian stable) :
          • l'interface réseau sera renommée (eth1 au lieu d'eth0, si tu n'as qu'une interface), il faudra alors soit refaire la conf sur eth1, soit supprimer /etc/udev/rules.d/70-net-persistent.rules et rebooter.
          • si ta machine est plus récente, il se peut que la version du kernel installée n'ait pas les drivers qu'il faut, dans ce cas, tu remets le disque sur l'ancien PC, tu installes un kernel plus récent (backports, dans le cas de debian)
          si tu utilises une distrib up-to-date (par ex archlinux) :
        • [^] # Re: Réponse.

          Posté par . Évalué à 1. Dernière modification le 19/07/14 à 15:42.

          Ça serait aussi simple que ça ? Je suis tout de même très surpris, mais si tu le dis. À la vérification 32/64 près, ça serait même ultra-simple comme méthode !

          Oui je confirme ce que te dis NeoX ça va très bien fonctionner tant que tu ne te trompes pas d'archi.

          La seule petite astuce qui me viens à l'esprit dans ce cas sera de modifier la conf udev pour l'affectation des noms des cartes réseau car ta carte de la seconde machine va se nommer eth1 au lieu d'eth0. Ce qui serait un véritable drame bien entendu ^_^. Une ligne a supprimer, rien de bien méchant.
          Le boot graphique devrait fonctionner sans rien modifier tant que tu n'as pas de fichier de conf pour Xorg dans /etc/X11 et que ta carte est supportée bien entendu.
          Attention a ne pas faire l'installation sur une machine doté d'un EFI, ton chargeur de démarrage pourrait ne pas fonctionner dans ce cas.

          edit: grilled en partie ^_^

        • [^] # Re: Réponse.

          Posté par . Évalué à 5.

          Je complete l'info de mes deux confreres,
          en effet j'ai juste oublié le coup de udev qui nomme les cartes reseaux en dur dans un fichier de config à partir de l'adresse MAC de la carte

          du coup sur la machine d'installation la carte AA:BB:CC:DD:EE:FF est bien eth0
          ca fait la config

          puis tu clones ou tu installe le disque dans une autre machine,
          eth0 n'existe pas, mais le systeme detecte une carte BB:XX:DD:EE:FF:GG et la nomme eth1

          rien de bien genant, tu es surement en dhcp, ton reseau t'attribue quand meme une addresse,
          mais dans 6 mois faudra se souvenir pourquoi la carte s'appelle eth1 alors qu'il n'y en a qu'une sur ma machine.

          => avant de deplacer le disque, juste faire un

          sudo rm /etc/udev/rules.d/70-net-persistent-net.rules

          et c'est parti.

    • [^] # Re: Réponse.

      Posté par (page perso) . Évalué à 1.

      "tu vas te retrouver avec un disque dur sans table des partitions"
      Oui… mais est-ce gênant ? ; pas sûr à ce niveau.

      Je dirai que cela dépend de ton BIOS. Mais d'après ce que j'ai pu lire, tu as pu booter ton disque dur, donc ça marche :)

      Après, le côté qui peut être gênant (en fonction de tes besoins), c'est que tu perds de l'espace disque qui sera limité à la taille de l'iso. Par contre, tu peux essayer après coup d'étendre la taille de ton système de fichier ;)

  • # copier une installation existante ...

    Posté par . Évalué à 1.

    Tu copies avec clonezilla un disque déjà installé sur une autre machine ayant la même architecture (amd64, i386, …). Avec clonezilla, ton disque de destination doit être au moins aussi grand que le disque d'origine.
    Sinon (si ton disque est plus petit) tu peux faire cette manip "à la mano" : partitionnement, copie du système (avec un cp -a ou un rsync -aHx --numeric-ids), puis installation de grub.
    Il faut bien sûr que grub (ou autre) soit correctement installé puisque tu n'auras pas la possibilité de le corriger sur ta machine.

  • # La suite...

    Posté par . Évalué à 1.

    Ma station de travail est un AMD 64 or le vieux PC est un 32 bits. :(

    J'essaye de faire la synthèse de vos contributions (et merci), mais je teste déjà ma méthode pour voir où elle bloque. Donc…

    (le DD en question est /dev/sdb connecté par port USB en externe).

    Je fais (pour être sûr d'écraser la table de partition):

    dd if=/dev/zero of=/dev/sdb bs=512 count=1

    Puis :

    dd if=~/Téléchargements/debian-7.6.0-i386-netinst.iso of=/dev/sdb

    J'installe le DD sur le vieux PC et ça boot sans problème !

    J'ai pris soin de prendre la version Debian pour installation par la Toile, mais à un moment le programme me demande de pointer un lecteur optique pour y chercher de quoi poursuivre l'installation.

    Je bascule dans le shell (très rustique) du programme d'installation et lsmod + lspci me montrent que l'USB est bien reconnu. Donc normalement il suffirait de monter une clef USB adéquate et récupérer le minimum absolu pour poursuivre.

    J'ai l'impression qu'il manque presque rien et je précise que ça reste très rapide et léger comme manipulation.

    • [^] # Re: La suite...

      Posté par . Évalué à 5.

      Même si la machine est en amd64 tu peux l'utiliser pour installer une distribution i686 / 32bits avec c'est pas un problème ;)

  • # Bingo !

    Posté par . Évalué à 4.

    Bon, résultat des courses…

    J'ai testé ma méthode avec 3 images : Debian, Ipcop (un firewall Linux) et même Pfsense (du BSD donc). Dans tous les cas j'ai réussi à booter sans problème et lancer l'installation ; mais en effet, il y a problème dans les 3 cas, visiblement lorsqu'il s'agit d'écrire sur le disque. Zéro succès.

    Et c'est alors que j'ai eu une idée toute simple : utiliser un second DD et mettre l'image dessus ! Et là tout roule.
    1) HD1 : cible de l'installation, HD2 : héberge une image.
    2) Boot sur HD2, démarrage de l'installation, aucun problème pour partitionner et formater HD1, puis donc écrire dessus. À la fin de l'installation le système reboot.
    3) Là j'en profite pour rendre invisible HD2 depuis le BIOS et j'active le boot sur HD1.
    4) Terminé !

    Je suis très content, c'est vraiment simple à faire et rapide. Et générique.
    La commande dd fonctionne parfaitement, en fait je n'ai eu aucune difficulté à trouver des images bootables. Il faut faire bien attention d'écrire depuis le début du disque (là où la table de partition est écrite), je pense, pour bien écraser ce qui y traîne d'antérieur.

    Pour information, le but était de mettre sur des configurations obsolètes des firewalls. Ces vieilles machines conviennent très bien pour ça, et elles finissent leurs vies ainsi.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.