Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/08/2008, à 22:32

frafa

Help Multiboot XP/Vista LiveUSB

Bonjour,

je suis entrain de developper un script de Création/Customisation de LiveUSB
==> http://forum.ubuntu-fr.org/viewtopic.php?id=168121

Dans le but de simplifier la tache aux utilisateurs novices sous linux
je souhaite ajouter a mon script LiveUSB la possibilité de booter direct via le menu
Demarrer de windows, sans avoir a toucher aux reglages du setup du PC.
1 demarrage via un cd d'amorce 1 clic sur "ajouter LiveUSB au menu demarrer de Windows"
et hop on boot sans amorce et sans modif du setup/mbr,
idéal aussi pour les PC qui ne supportent pas de booter via usb et qui n'ont que win d'installé.

Sous xp j'y suis arrivé via Grub4Dos et boot.ini, mais sous vista je coince, pas de boot.ini
et en plus j'ai pas de vista sous la main...

d'apres la doc de Grub4Dos sous vista ca donne ca:
bcdedit /create /d "Start GRUB4DOS" /application bootsector
bcdedit /set {id} device boot
bcdedit /set {id} path \grldr.mbr
bcdedit /displayorder {id} /addlast

En detail:

http://svn.gna.org/svn/grub4dos/trunk/README_GRUB4DOS.txt
******************************************************************************
***                     GRUB4DOS and Windows Vista                         ***
******************************************************************************

First, use the following command to create a boot entry:

	bcdedit /create /d "GRUB for DOS" /application bootsector

The result will look like this:

The entry {05d33150-3fde-11dc-a457-00021cf82fb0} was successfully created.

The long string {05d33150-3fde-11dc-a457-00021cf82fb0} is the id for this
entry.

Then, use the following commands to set boot parameters:

	bcdedit /set {id} device boot
	bcdedit /set {id} path \grldr.mbr
	bcdedit /displayorder {id} /addlast

Please replace {id} with the actual id returned from the previous command.

Finally, copy GRLDR.MBR to C:\ or wherever your boot drive is, and copy GRLDR
and menu.lst to the root directory of any FAT16/FAT32/EXT2/NTFS partition.

Note: A boot partition should be the active primary partition with BOOTMGR
      inside. The `device boot' indicates grldr.mbr should be in the boot
      partition.

si qqun connait vista et sait comment scripter en shell cela,
ben je veut bien un peu d'aide

boot.png
je vous passe le code testé ok pour XP:
script à exécuter depuis un boot en LiveUSB!

#!/bin/bash
#Les 64 derniers octets du MBR contiennent la table des partitions
#Grub4Dos
#C:\grldr="linux boot Grub4Dos"
#EasyBCD/Vistabootpro/easyboot
#grub4dos
#https://gna.org/projects/grub4dos/
#http://download.gna.org/grub4dos/
#ancien site:http://sourceforge.net/projects/grub4dos/
#https://help.ubuntu.com/community/Installation/FromWindows
VERSION="grub4dos-0.4.4-2008-07-21.zip"
MODLANG=(fr FR UTF-8 fr fr nodeadkeys pc105 Europe/Paris)
mkdir /tmp/boot &>/dev/null


function LANCEUR()
{
if ! which gksudo >/dev/null 2>&1; then
echo -e "\033[1;47;31m Erreur: gksudo n'est pas installé. \033[0m" ;
exit 0
elif ! which xterm >/dev/null 2>&1; then
echo -e "\033[1;47;31m Erreur: xterm n'est pas installé. \033[0m" ;
exit 0
elif [[ ! "$SUDO_USER" || "$USER" != "root" ]]; then
echo -e "\033[1;47;31m Réouvrir en root. \033[0m" ;
xterm  -title 'LiveUSB multiboot' -e "gksudo -w -l -k $0"
exit 0
else
echo -e '\E[37;44m'"\033[1m PWD:$PWD - HOME:$HOME - SUDO_USER:$SUDO_USER - USER:$USER - $0 \033[0m"
fi
}
LANCEUR

function TIMEOUT()
{
echo $(date +%s) > "/tmp/Log_liveusb.txt"
DATE_BEGIN=`cat /tmp/Log_liveusb.txt`;
function BTN_ANNULER()
{
if [ "$?" -ne "0" ]; then
echo -e "\033[1;47;31m Process annulé par utilisateur: $MESSAGE \"$?\" \033[0m" ;
rm /tmp/Log_liveusb.txt &>/dev/null
kill -9 $PID_SCRIPT
exit 0
fi
}
function BOUCLE()
{
echo "1" ; 
while true; do
echo "#${MESSAGE}" ; 
sleep 1; 
if ! [ -e "/tmp/Log_liveusb.txt" ]; then 
break ;
fi;
done; 
echo "100" ; 
}
BOUCLE | zenity --progress --pulsate --width 600 --auto-close || BTN_ANNULER
DATE_END=`date +%s` ; 
((ECART=DATE_END-DATE_BEGIN)) ;
((MIN=ECART/60)) ; 
((SEC=ECART%60)) ;
echo -e '\E[37;44m'"\033[1m fin de $MESSAGE \033[0m"
echo -e '\E[37;44m'"\033[1m Temps d'execution: $MIN Minutes et $SEC Secondes \033[0m"
}


function TEST_CONNEXION()
{
MESSAGE="Test connexion internet, veuillez patienter..."
TIMEOUT&
TEST=`ping -q -c 3 google.com >/dev/null 2>&1` ;
#TEST=`nmap -sP $(echo -e "$HEBERGEMENT" | awk -F/ '{print $3}') | grep "(1 host up)"` ;
if [ $? -eq 0 ]; then
echo -e '\E[37;44m'"\033[1m Connexion internet ok. \033[0m"
rm /tmp/Log_liveusb.txt
sleep 2
else
echo -e "\033[1;47;31m Vérifiez votre connexion internet. \033[0m" ;
rm /tmp/Log_liveusb.txt
zenity --error --width 800 --title "test connexion internet" --text "Vérifiez votre connexion internet."
exit 0
fi
}
TEST_CONNEXION


#copie mbr pour pc recent supportent boot usb
function INSTALL_INITRD()
{
#http://www.laboratoire-microsoft.org/articles/win/boot/
#LIVEUSB="$(blkid | grep 'LABEL=\"extlinux-ro\"' | grep 'TYPE=\"ext3\"' | awk '{print $1}' | sed 's/[0-9]://')"
LIVEUSB="$(blkid | grep 'LABEL=\"extlinux-ro\"' | grep 'TYPE=\"ext3\"' | awk '{print $1}' | sed 's/://')"
echo -e '\E[37;44m'"\033[1m copie mbr ${LIVEUSB} pour pc recent supportent boot usb \033[0m"
if [[ "${LIVEUSB}" && "$(echo ${LIVEUSB} | wc -w)" == "1" ]]; then
dd if=${LIVEUSB} bs=512 count=1 of=/tmp/boot/linux.mbr
dd if=${LIVEUSB} bs=446 count=1 of=/tmp/boot/linux2.mbr
else
echo -e "\033[1;47;31m Erreur: detection partition extlinux-ro \033[0m" ;
exit 0
fi
}
INSTALL_INITRD


function INSTALL_BOOTCD()
{
# Demarrer lecteur CD / DVD, même si votre BIOS ne prend pas en charge
#http://www.msfn.org/board/Multiboot-Vista-XP-and-Other-OSes-with-t95537.html&mode=linear
wget http://www.lrz-muenchen.de/~bernhard/sbootmgr.dsk -O /tmp/boot/sbootmgr.dsk
}
INSTALL_BOOTCD


#installer grldr et menu.lst dans dossier boot
function INSTALL_GRUB()
{
cd /tmp
wget -q http://download.gna.org/grub4dos/${VERSION} -O /tmp/${VERSION}
DECOMPRESSER="$(ls -A | grep -i "grub4dos*")"
echo DECOMPRESSER:${DECOMPRESSER}
unzip /tmp/${DECOMPRESSER}
rm /tmp/${DECOMPRESSER}
DOSSIER="$(ls -A | grep -i -v "grub4dos*.zip"  | grep -i "grub4dos*")"
echo -e '\E[37;44m'"\033[1m Copie grldr dans boot \033[0m"
cp -f /tmp/${DOSSIER}/grldr /tmp/boot/grldr
rm -R /tmp/${DOSSIER}
FICHIER="# This is a sample menu.lst file. You should make some changes to it.
# The old install method of booting via the stage-files has been removed.
# Please install GRLDR boot strap code to MBR with the bootlace.com
# utility under DOS/Win9x or Linux.

color black/cyan yellow/cyan
timeout 30
default 0

title Ubuntu mode live
kernel (hd0,0)/vmlinuz locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper verbose splash --
initrd (hd0,0)/initrd.gz

title Ubuntu mode persistent
kernel (hd0,0)/vmlinuz locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper persistent verbose splash --
initrd (hd0,0)/initrd.gz

title Ubuntu mode toram
kernel (hd0,0)/vmlinuz locale=${MODLANG[0]}_${MODLANG[1]} kbd-chooser/method=${MODLANG[3]} console-setup/layoutcode=${MODLANG[4]} console-setup/variantcode=${MODLANG[5]} console-setup/modelcode=${MODLANG[6]} boot=casper toram verbose splash --
initrd (hd0,0)/initrd.gz

# Demarrer Vista
title Microsoft Windows Vista
find --set-root /bootmgrv
chainloader /bootmgrv

# Demarrer XP
title Microsoft Windows XP
find --set-root /ntldr
chainloader /ntldr

# Demarrer lecteur CD / DVD, même si votre BIOS ne prend pas en charge
#http://www.lrz-muenchen.de/~bernhard/sbootmgr.dsk
title Demarrer CD avec Smart Boot Manager
find --set-root /sbootmgr.dsk
map --mem /sbootmgr.dsk (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)"
echo -e '\E[37;44m'"\033[1m Copie menu.lst dans boot \033[0m"
echo -e "${FICHIER}" | sed 's/$/\r/' | tee /tmp/boot/menu.lst
}
INSTALL_GRUB


function COPIE_INIT()
{
#tester ou est unitrd
if [ -e "/liveusb/initrd.gz" ]; then
CHEMIN="/liveusb"
elif [ -e "/cdrom/initrd.gz" ]; then
CHEMIN="/cdrom"
else
echo -e "\033[1;47;31m Erreur: pas trouvé initrd.gz \033[0m" ;
exit 0
fi
if [ "${CHEMIN}" ]; then
#copier initrd.gz et vmlinuz
echo -e '\E[37;44m'"\033[1m copier initrd.gz et vmlinuz \033[0m"
cp -f ${CHEMIN}/initrd.gz /tmp/boot/initrd.gz
cp -f ${CHEMIN}/vmlinuz /tmp/boot/vmlinuz
fi
}
COPIE_INIT


function INSTALL_BOOT()
{
#http://www.vistabootpro.org/
#rajouter detection vista
WIN="$(blkid | grep 'TYPE=\"ntfs\"' | awk '{print $1}' | sed 's/://')"
LOOP="$(echo "${WIN[@]}"  | wc -w)"
x=0
while (( $x < $LOOP )) 
do
echo -e '\E[37;44m'"\033[1m Monter:${WIN[$x]} \033[0m"
umount "${WIN[$x]}" &>/dev/null
mkdir /mnt/ntfs &>/dev/null
mount -t ntfs-3g "${WIN[$x]}" /mnt/ntfs -o force
#detecter windows XP, vista, ...
if [ -e "/mnt/ntfs/boot.ini" ]; then
echo -e '\E[37;44m'"\033[1m XP détecté \033[0m"
if [ ! "$(cat "/mnt/ntfs/boot.ini" | grep -i 'C:\\grldr=\"Demarrer Ubuntu en LiveUSB\"')" ]; then
echo -e '\E[37;44m'"\033[1m Ajouter menu à boot.ini de XP \033[0m"
#echo C:\\LINUX.MBR=\"Demarrer Ubuntu sur PC recent\"  >> "/mnt/ntfs/boot.ini"
#echo C:\\LINUX2.MBR=\"Demarrer Ubuntu sur PC recent2\" >> "/mnt/ntfs/boot.ini"
echo C:\\grldr=\"Demarrer Ubuntu en LiveUSB\" >> "/mnt/ntfs/boot.ini"
sed -i 's/timeout=.*/timeout=30/' "/mnt/ntfs/boot.ini"
else
echo -e "\033[1;33;44m Info: Menu déjà présent \033[00m"
fi
#copier boot dans windows xp racine c:\
echo -e '\E[37;44m'"\033[1m copier dossier boot dans windows xp racine c:\ \033[0m"
cp -Rf /tmp/boot/* /mnt/ntfs/
else
echo -e "\033[1;47;31m Erreur: pas d\'os détecté dans cette partition:${WIN[$x]} \033[0m" ;
fi
(( x=$x + 1 ))
sleep 2
done
}
INSTALL_BOOT
echo -e "\033[1;33;44m Fin du script,\nveuillez fermer cette fenetre et redemarrer votre PC\033[00m"
sleep 300
exit 0

Edit: ajout de boot xp,vista cd/dvd depuis xp via Grub4Dos

Dernière modification par frafa (Le 05/08/2008, à 13:08)

Hors ligne

#3 Le 06/08/2008, à 14:51

rniamo

Re : Help Multiboot XP/Vista LiveUSB

comment fait grub lors de l'installation d'ubuntu ? Il ajoute xp/vista automatiquement, il faut peut être regarder par là... désolé je n'en sais aps plus.

PS : ton script est nikel wink


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#4 Le 06/08/2008, à 14:51

rniamo

Re : Help Multiboot XP/Vista LiveUSB

comment fait grub lors de l'installation d'ubuntu ? Il ajoute xp/vista automatiquement, il faut peut être regarder par là... désolé je n'en sais aps plus.

PS : ton script est nikel wink


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#5 Le 07/08/2008, à 14:45

frafa

Re : Help Multiboot XP/Vista LiveUSB

A ma conaissance le seul logiciel qui fasse a peu pret ce que je recherche est wubi.
mais bon c'est different il ajoute un menu pour booter ubuntu, enfin un fichier image
au gestionnaire d'amorçage de vista , ce menu redirige vers grub4dos qui va lancer le fichier image.
enfin si j'ai bien compris le principe de wubi, car je l'avoue je ne l'ai pas essayé....

Hors ligne

#6 Le 03/09/2008, à 14:04

labo16

Re : Help Multiboot XP/Vista LiveUSB

@frafa:

Merci pour tes scripts...
J'ai cependant un problème avec le live_custom.sh, puisque mon Bios ne me permet qu'un boot en USB de type FDD (Floppy) et malheureusement pas de type HDD.
Donc ton script pour booter directement depuis Xp m'intéresse cependant je me pose les questions suivantes:

1- Comment lancer ce script ?
   a-Tu indiques:

script à exécuter depuis un boot en LiveUSB!

Je ne comprends pas bien ce que tu veux dire...puisque par définition je ne peux booter sur la clé...
Ne serait-ce pas depuis un boot en LiveCD ?
   b- J'imagine que la clé doit être en place et préparée à partir de ton 1er script, le live_custom.sh avant d'exécuter le 2nd ?

2- Si j'ai bien compris ce script pour booter sur Xp va modifier le fichier boot.ini de Xp, mais quelque soit la partition sur laquelle Xp est implanté ?

3- Enfin, pour utiliser cette clé sur un autre PC équipé de Xp, il faut j'imagine relancer le script afin que ce nouveau Xp permette à la clé de booter ?

Merci de me répondre car comme tu peux t'en apercevoir, je suis un peu paumé...:D

Hors ligne

#7 Le 03/09/2008, à 15:04

frafa

Re : Help Multiboot XP/Vista LiveUSB

lo
je te resume
tu lance live_custom.sh
tu cree ton liveusb menu: "Créer LiveUSB"
puis tu va passer en mode custom,
relancer le script menu: "Customiser LiveUSB (Effacera clé USB, sauvegardez vos documents avant)"
la une fois dans xnest (la grande fenetre)
tu as un menu:"Télécharger tous les Add-on"
puis menu:"Exécuter le mode Add-on"
puis executer le Add-on: add-on-liveusb.multiboot.sh ==> "Rajoute une entré au menu boot de XP pour démarrer en LiveUSB"
puis si tu n'as rien d'autre a faire
menu:"Fin du script, reconstruire le LiveCD/USB" \
patience:)

apres tu relance le script tu va dans menu:"Créer CD d'amorçage pour LiveUSB"
tu le grave, tu boot avec le cd et la clé usb branchée

puis extrait de la page: http://liveusb.info/dotclear/index.php?category/Add-on
Aller dans le menu:
/Applications/Outils système/Ajoute un menu démarrer LiveUSB dans XP
l'executer, redemarrer (sans le cd d'amorce) choisir dans le menu boot de XP : "Demarrer Ubuntu en LiveUSB"
et vous arrivez sur un menu grub pour booter votre LiveUSB.

Dernière modification par frafa (Le 03/09/2008, à 15:08)

Hors ligne

#8 Le 04/09/2008, à 09:06

labo16

Re : Help Multiboot XP/Vista LiveUSB

@frafa

Merci pour ces explications complémentaires et très claires...
Je tente tout cela...
Merci encore

Hors ligne

#9 Le 04/09/2008, à 15:08

frafa

Re : Help Multiboot XP/Vista LiveUSB

bon je n'avait pas pris le temps de faire un retour de mes test
de boot en liveusb sous vista, je le fait maintenant...

en fait tout le systeme a changé il est maintenant dans des binaires donc adieu
la configuration en shell comme pour xp dpuis linux sad

si un developpeur windows lit ces lignes et desire m'aider en
ecrivant une solution pour vista , ben il ferait mon bonheur...

en attendant je vous laisse une solution graphique qui marche pour vista avec EasyBCD:

Ajouter au gestionnaire de boot de Windows Vista
un menu pour démarrer votre LiveUSB.
A faire apres un boot sur vista,
Téléchargez EasyBCD,
http://neosmart.net/dl.php?id=1
brancher votre clé usb,
lancez EasyBCD,
cliquez sur le bouton "Add/Remove Entries" ,
sélectionnez l'onglet linux,
réglez comme suit:
Type: grub
Name: LiveUSB
Drive: (sélectionnez la partition 0 de votre clé usb)
ne cochez pas! "GRUB isn't installed to the boot sector"
cliquez sur le bouton: "+ Add Entry"
cliquez sur le bouton: "Save"
c'est fini! .
Capture d'écran:
http://neosmart.net/gallery/v/neosmart/EasyBCD/1_70/Add-Remove+Entries+-+Linux.png.html
Au prochain démarrage selectionnez LiveUSB, il vous dit de brancher le volume, cliquez sur enter,
il vous redirige sur le boot via extlinux...

Hors ligne

#10 Le 07/10/2008, à 14:48

testage

Re : Help Multiboot XP/Vista LiveUSB

Bonjour, personnellement j'ai pas testé le script, mais je serai intérressé d'en savoir un peu plus sur la partie cd qui fait booter le liveusb, j'ai moi meme creer mon propre liveusb avec plusieurs distro nux + des outils comme ubcd,... + 1 livexp et bientot un livevista en plus .

J'ai creer ce liveusb-boite.a.outil dans l'optique de pouvoir booter sur une machine (quel que soit l'os sur base nux et win) au vu d'une panne eventuelle.
Le problème c'est que parfois certain vieux pc on des bios qui ne supporte pas le bootusb, d'ou l'idée de booter sur un cd qui redirige vers le liveusb.

Pour la partie boot mon live est géré par syslinux,
ma question est la suivante que mettre dans le cd pour qu'il charge le syslinux de mon liveusb.

#11 Le 07/10/2008, à 15:02

frafa

Re : Help Multiboot XP/Vista LiveUSB

lo
regarde dans mon script fonction: CD_BOOT
wget http://liveusb.info/liveusb/live_custom.sh

Hors ligne

#12 Le 08/10/2008, à 22:55

testage

Re : Help Multiboot XP/Vista LiveUSB

merci pour ta reponsee, meme si j'y connais rien en script.sh j'ai plustot saisi le sens de ton script mais sans pouvoir retranscrire les info dont j'ai besoin pour créer mon live cd qui boot le liveusb,

- déja pour initrd le quel prendre vu que j'ai plusieurs distro dans mon liveusb.
- pour le grub que faut il mettre dedans pour qu'il charge mon syslinux.cfg
-

#13 Le 09/10/2008, à 02:55

frafa

Re : Help Multiboot XP/Vista LiveUSB

lo
tu melange un peu tout j'ai l'impression...
grub moi je n'utilise pas
syslinux.cfg , n'est pas un fichier de conf de grub mais de syslinux

ISOLINUX pour booter des cd iso
http://syslinux.zytor.com/wiki/index.php/ISOLINUX
SYSLINUX pour booter des partitions en fat
http://syslinux.zytor.com/wiki/index.php/SYSLINUX
EXTLINUX pour booter des partitions en ext2/3
http://syslinux.zytor.com/wiki/index.php/EXTLINUX

ouvre un post STP
car je n'ai pas le temps de te macher le travail en ce moment desolé...

Hors ligne

#14 Le 13/10/2008, à 12:10

testage

Re : Help Multiboot XP/Vista LiveUSB

non syslinux c'est dans mon liveusb qu'il est, mais dans ton script pour la structure du boot cd, c'est le chargeur grub qui est employé

la question était de savoir si grub (du cd de boot) pouvait charger le syslinux (de mon live usb) et comment.

pour le comment (inutile de répondre je finirai bien par trouver la marche a suivre)

merci quand meme

#15 Le 13/10/2008, à 14:42

frafa

Re : Help Multiboot XP/Vista LiveUSB

je suis desolé , mais pour cd amorce mon script utilise isolinux et pas grub!
je sait quand meme de quoi je parle c'est moi qui code!
pour le reste tu comprendras que maintenant je ne repondrait plus!
pas la peine de repondre comme tu le dit si bien!

Hors ligne