[Abandon] Probléme accés Mageia suite à dualboot avec Ubuntu .

XKomodor Membre non connecté
-
- Voir le profil du membre XKomodor
- Inscrit le : 08/01/2008
- Site internet
- Groupes :
-
Administrateur
Reprise du message précédent
Salut,Ben si tu peux encore démarrer Ubuntu et dans ce cas tu regardes comment sont paramétrées les partitions ou de monter les partitions directement.
Quand je dis qu'il ne faut pas mélanger les installes sur le même disque

Bref ... typiquement, ton problème c'est que ton GRUB annonce une kernel avec un /dev/sdx pour le /root et qu'il ne le trouve pas : rien de dramatique il faut juste lui faire changer la ligne, comme dans GRUB1 où tu as l'option d'éditer la ligne posant problème.
Merci


DaaX Membre non connecté
-
- Voir le profil du membre DaaX
- Inscrit le : 13/12/2007
- Site internet
Tu as le dvd de Mageia ? Il devrait y avoir l'option pour restaurer ? Tu peux refaire ton grub avec pour voir ?
Sinon, télécharges le fichier suivant afin de vérifier où sont les GRUB : http://unixversal.com/linux/openSUSE/findgrub24.tgz
Ensuite, tu démarres en console et donne-nous le résultat.
EDIT : ou tu fais comme papy te l'indique.


Vladimir Membre non connecté
-
- Voir le profil du membre Vladimir
- Inscrit le : 04/03/2008
- Groupes :
-
Membre d'Honneur
Ce que je ferais à ta place:
- je lance Ubuntu
- je réécris Grub 2 sur sa partition racine
- je redémarre sur le DVD de Mageia en mode rescue
- je réécris le Grub de Mageia sur le MBR du HDD
Bien évidemment Ubuntu ne sera pas détecté...puisque ce n'est pas le même Grub.
Et après il suffira d'effectuer un chaînage particulier que je te donnerai si toutes ces dernières manipulations fonctionnent.

OK?
Vous voudriez passer à Linux mais vous n'y connaissez rien?
Quelqu'un dans votre région est prêt à vous aider.
Connectez- vous sur parrain.linux
Quelqu'un dans votre région est prêt à vous aider.
Connectez- vous sur parrain.linux

DaaX Membre non connecté
-
- Voir le profil du membre DaaX
- Inscrit le : 13/12/2007
- Site internet
Super!

Vladimir Membre non connecté
-
- Voir le profil du membre Vladimir
- Inscrit le : 04/03/2008
- Groupes :
-
Membre d'Honneur

(En espérant que ce soit le même..)
Vous voudriez passer à Linux mais vous n'y connaissez rien?
Quelqu'un dans votre région est prêt à vous aider.
Connectez- vous sur parrain.linux
Quelqu'un dans votre région est prêt à vous aider.
Connectez- vous sur parrain.linux

ZEBULON Membre non connecté
-
- Voir le profil du membre ZEBULON
- Inscrit le : 30/10/2008
- Groupes :
/dev/sda 1 : systéme de fichiers 13 GB ext4 ( / Mageia ? Ubuntu ? )
/dev/sda 2 : partition étendue
/dev/sda 5 : swap 4.2 GB ( swap Mageia )
/dev/sda 6 : systéme de fichiers 485 GB ext4 ( / home Mageia )
/dev/sda 7 : systéme de fichiers 486 GB ext4 ( / home Ubuntu )
/dev/sda 8 : swap 13 GB ( swap Ubuntu )
sda 8 m'est annonçé comme étant une partition swap ? ça me parait beaucoup 13 GB non ?
Ubuntu n'aurait il pas pu etre écrit sur la partition sda 1 de Mageia ? Ce qui pourrait expliquer le schmillblick ....
Question subsidiaire : dans le cas d'un dualboot Mageia/Ubuntu , peut-etre est-il préférable d'installer ubuntu en premier non ?
Merci de votre aide en tout cas

@+
EDIT : oups ! je n'avais pas vu les réponses données par vladimir . Je regarde ça de plus prés

Mageia 5 KDE 64 Bits
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -

ZEBULON Membre non connecté
-
- Voir le profil du membre ZEBULON
- Inscrit le : 30/10/2008
- Groupes :

Pour DaaX voici le résultat des fichiers :
Caché :
#!/bin/bash
#: Title : cfindgrub (findgrub with colors)
#: Date Created: Wed Sep 29 20:02:40 CDT 2010
#: Last Edit : Wed Mar 2 00:58:49 PST 2011
#: Author : please_try_again & edited by j McDaniel
#: Version : 2.4
#: Description : Locates the Grub Boot Loader & Windows BootLoader, Creates Grub Menu.Lst Entries
#: Options : -h | --help, -w | -- writemenu, -k | --kernel OR -d | --debug
# Created for the openSUSE forums September 30th in the year 2010 with loving care and presented to all of our great openSUSE USERS!
#
# Copy and paste this text into a text file and save it in your home area, bin folder (~/bin) as the file findgrub
# Once the file is saved, you must make the file executable using the terminal command: chmod +u ~/bin/findgrub
#
# current version
version="2.4"
# set COLOR to 0 to copy/paste or redirect debug output to a file
COLOR=1
# default mountpoint
mnt=/mnt
#
# Check to see if we are root
#
if [[ $UID -ne 0 ]]; then
id -Gn | grep -q wheel || echo "Root User Permissions are required, Please Enter the ..."
echo
sudo $0 $1
exit 0
fi
echo
echo "Colored Find Grub Version $version - Written for openSUSE Forums"
echo
function help {
cat << EOFHELP
$0 - description and help
options:
[37;1m-h --help[37;0m : show this help
[37;1m-k --kernel[37;0m : look for linux kernels
[37;1m-w --writemenu[37;0m : add boot entries to /boot/grub/men.lst
[37;1m-a --activate[37;0m : set boot flag on grub partition
[37;1m-d --debug [-n --nocolor] [37;0m : print Win bootsectors to standard output
EOFHELP
exit
}
function Linux2LegacyGrub {
eval `echo ${1:2} | sed 's|(.)|maj=1;min=|;s|$|;|'`
dev=${1:0:3}
let min--
# parse /boot/grub/device.map if present
if [ -f /boot/grub/device.map ] ; then
# check if device.map uses disk/by-id syntax (as in openSUSE)
if [ "x$(grep 'disk' /boot/grub/device.map)" != "x" ] ; then
eval `eval $(awk '/(hd/ { printf "echo -n "%s " ; readlink %s ;", $1, $2 }' /boot/grub/device.map) | sed 's|/..|/dev|;s|..||;s|/dev/||;s|(||;s|)||' | awk '{ printf "%s=%s;", $2, $1 }'`
# assume device.map uses device name syntax (as in Fedora, Mandriva, Arch Linux)
else
eval `sed -n '/[sh]d/s|/dev/||p' /boot/grub/device.map | tr -d "()" | awk '{ printf "%s=%s;", $2, $1 }'`
fi
echo "(${!dev},$min)"
# no device.map found
else
echo "(hd$(($(printf "%dn" '$maj) - 97)),$min)"
fi
}
function chainloadEntry {
if [ "${WRITEMENU}" ] ; then
printf " - append boot entry to chainload Windows bootmanager on [31;1m%s[37;0m to [37;1m/boot/grub/menu.lst[37;0mn" $1
cp /boot/grub/menu.lst{,.findgrub}
cat << EOFWriteGrubEntry | sed '/^ *$/d' >> /boot/grub/menu.lst
###Don't change this comment - YaST2 identifier: Original name: WindowsBootLoader###
title Windows on $1
rootnoverify $(Linux2LegacyGrub ${1#/dev/*})
$makeactive
chainloader +1
EOFWriteGrubEntry
else
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~nYou can add the following entry to [37;1m/boot/grub/menu.lst[37;0m :n"
cat << EOFDisplayGrubEntry | sed '/^ *$/d'
[32;1m
###Don't change this comment - YaST2 identifier: Original name: WindowsBootLoader###
title Windows on $1
rootnoverify $(Linux2LegacyGrub ${1#/dev/*})
$makeactive
chainloader +1
[37;0m
EOFDisplayGrubEntry
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function printbs {
if [ $COLOR -eq 1 ] ; then
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n[37;1m%s [37;0mBootsectorn---------------------------------------------------------------------------n [36;1m" $1
dd if=$1 bs=512 count=1 2>/dev/null | tr -cd "[:alnum
[:space
"
printf " [37;0mn----------------------------------------------------------------------------n"
dd if=/dev/sda1 bs=512 count=1 2>/dev/null | od -x | awk '{ if ( NF == 9 ) { printf "[35m%s|[33;1m %s %s %s %s %s %s %s", $1, $2, $3, $4, $5, $6, $7, $8 ; if ( $9 == "aa55" ) printf " [31;1m%s[35;0mn", $9 ; else printf " %s[35;0mn", $9 }}'
printf " [37;0mn~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
else
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n%s Bootsectorn---------------------------------------------------------------------------n " $1
dd if=$1 bs=512 count=1 2>/dev/null | tr -cd "[:alnum
[:space
"
printf " n----------------------------------------------------------------------------n"
dd if=/dev/sda1 bs=512 count=1 2>/dev/null | od -x
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function printptbl {
if [ $COLOR -eq 1 ] ; then
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n[37;1m%s[37;0m Partition tablen---------------------------------------------------------------n" $1
dd if=$1 bs=1 skip=446 count=64 2>/dev/null | od -x | head -4 | awk '{HD=substr($2,1,2) ; BF=substr($2,3,2); FE=substr($4,1,2) ; ID=substr($4,3,2); if ( BF == "80" ) BF="[31;1m"BF ; printf "[35m%s|[32;1m %s%s [32;1m%s %s[37;1m%s [32;1m%s %s %s %s %s[35;0mn", $1, HD, BF, $3, FE, ID, $5, $6, $7, $8 , $9}'
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
else
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n%s Partition tablen---------------------------------------------------------------n" $1
dd if=$1 bs=1 skip=446 count=64 2>/dev/null | od -x | head -4
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function searchkernel {
pt=$1
unset kernels ismounted
mount | grep -q "$pt " && ismounted=1
eval `blkid $pt | sed 's|.*: ||;s| |;|g'`
if [ "$ismounted" ] ; then
mp=`mount | grep "$pt " | awk '{ print $3 }'`
if [ "$mp" == "/boot" -o "$mp" == "/" ] ; then
kernels=`find /boot -type f -name "vmlinuz*"`
fi
else
mount -t $TYPE $pt $mnt
if [ -d /mnt/boot ] ; then
kernels=`find $mnt/boot -type f -name "vmlinuz*"`
else
kernels=`find $mnt -maxdepth 1 -type f -name "vmlinuz*"`
fi
umount $mnt 2> /dev/null
fi
if [ "$kernels" ] ; then
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
for kern in $kernels ; do
if [ $COLOR -eq 1 ] ; then
printf " --> [37;1mkernel [34;1m%-51s [37;1mfound in [34;1m%s[37;0mn" ${kern##*/} $pt
else
printf " --> kernel %-51s found in %sn" ${kern##*/} $pt
fi
done
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function findbootmgr {
case $3 in
6|b|c|e) fs=vfat ;;
7) fs=ntfs;;
esac
mp=`mount | grep $1 | awk '{ print $3 }'`
if [ "x$mp" == "x" ] ; then
mp=$mnt
mount | grep -q "$mp " && mp=/findgrub
[ -d $mp ] || mkdir $mp
mount -t $fs $1 $mp
UNMOUNT=1
else
unset UNMOUNT
fi
case $2 in
bootmgr)
find $mp -maxdepth 1 -iname "bootmgr" | grep -q -i "bootmgr" && {
printf " --> [37;1mWindows7/Vista Loader found in [31;1m%s[37;0mn" $pt
chainloadEntry $pt
}
;;
ntldr)
find $mp -maxdepth 1 -iname "ntldr" | grep -q -i "ntldr" && {
printf " --> [37;1mWindows NT/2K/XP Loader found in [31;1m%s[37;0mn" $pt
chainloadEntry $pt
}
;;
esac
if [ "$UNMOUNT" ] ; then
umount $mp
fi
[ -d /findgrub ] && rmdir /findgrub
}
function addGrubPrimaryPart {
[ ${1##*[a-z]} -le 4 ] && grubpart="$grubpart $1"
}
function setBootFlag {
if [ "$grubpart" ] ; then
for part in $grubpart ; do
num=${part##*[a-z]} ; dev=${part%%[1-4]*}
/sbin/fdisk -l $dev | grep "$partb" | grep -q "*" && printf "n [31;1mGrub partition %s is already active.[37;0mn" $part && continue
while [ "true" ] ; do
printf "n [31;1mGrub found in %s. Do you want to activate %s? [yn][37;0m " $part $part
read -n1 yesno
yesno=$(echo $yesno | tr "[:upper
" "[:lower
")
[ "$yesno" == "y" -o "$yesno" == "n" ] && break
done
printf "n"
if [ "$yesno" == "y" ] ; then
if [ -x /sbin/sfdisk ] ; then
/sbin/sfdisk $dev -A$num
else
echo "[31;1m/sbin/sfdisk not found[37;0m"
return 1
fi
fi
printf "n"
done
else
printf "n [31;1mBootflag can not be set: No Grub was found in primary or in the extended partition.[37;0mn"
fi
}
# some partition types with color
x6=FAT16 ; c6='33;1m'
x16="Hidden FAT16" ; c16='33;1m'
xb=FAT32 ; cb='32;1m'
xc=FAT32 ; cc='32;1m'
xe=FAT32 ; ce='32;1m'
x1b="Hidden FAT32" ; c1b='32;1m'
x1c="Hidden FAT32" ; c1c='32;1m'
x1e="Hidden FAT32" ; c1e='32;1m'
x5=Extended ; c5='32;1m'
xf=Extended ; cf='32;1m'
x7=NTFS ; c7='34;1m'
x17="Hidden NTFS" ; c17='31m'
x27="Win Recovery" ; c27='31m'
x82=swap ; c82='33m'
x83=LINUX ; c83='36;1m'
x8e="LINUX LVM" ; c8e='36;1m'
xee=GPT ; cee='31m'
xef=EFI ; cef='31m'
xaf=HFS ; caf='35m'
xa5=FreeBSD ; ca5='35m'
xa6=OpenBSD ; ca6='35m'
xa7="Next Step" ; ca7='35m'
xa8=Darwin ; ca8='35m'
xa9=NetBSD ; ca9='35m'
x39=Plan9 ; c39='36m'
x4d=QNX4 ; c4d='36m'
x4e=QNX4 ; c4e='36m'
x4f=QNX4 ; c4f='36m'
x63="GNU HURD" ; c63='36m'
x81=MINIX ; c81='36m'
xbe="Solaris boot" ; cbe='36m'
xbf="Solaris" ; cbf='36m'
xeb="BeOS" ; ceb='36m'
xfb="VMware VMFS" ; cfb='36m'
xfc="VMware VMKCORE" ; cfc='36m'
xfd="LINUX RAID AUTO" ; cfd='36m'
# Main - BEGIN --------------------------
devs=(`LC_ALL=C /sbin/fdisk -l 2>/dev/null | sed -n 's|^Disk (/dev/[hs]d[a-z]):.*|1|p'`)
case "$1" in
-w|--writemenu) WRITEMENU=1 ; shift ;;
-k|--kernel) SEARCHKERNEL=1 ; shift ;;
-a|--activate) BOOTFLAG=1 ; grubpart="" ; shift ;;
-d|--debug)
DEBUG=1
shift
case "$1" in
-n|--nocolor) COLOR=0 ;;
esac
;;
-h|--help) help ;;
esac
# look for GRUB signature in MBR, Linux(0x83) and Extended(0x05, 0x0f) partitions
# skip EFI (0xee), swap (0x82) and BSD (0xa5, 0xa6, 0xa9) partitions
# !!! deliberately skip Windows Recovery (0x27) partition
# look for strings 'BOOTMGR' or 'NTLDR' in all other partitions bootsector and
# if found mount the partition and search for files bootmgr or ntldr
# in debug mode, output bootsector of NTFS and FAT partitons in ASCII and HEX
# output partition table
# get all partitions ids
eval `LC_ALL=C /sbin/fdisk -l 2>/dev/null | awk '/^/dev/ { if ($2 == "*") ID = $6 ; else ID = $5 ; print $1"="ID";" }' | sed s'|/dev/||'`
for dev in ${devs[*]} ; do
if [ -b $dev ] ; then
printf "n[31;1m - reading MBR on disk %-27s [37;0m..." "$dev"
dd if=$dev bs=512 count=1 2> /dev/null | grep -q GRUB && {
printf " --> [37;1mGrub found in [31;1mMBR[37;0m"
[ "$dev" == "/dev/sda" ] && makeactive=makeactive
}
for pt in `LC_ALL=C /sbin/fdisk -l $dev 2>/dev/null | awk '/^/dev/ { print $1 }'` ; do
PT=$(basename $pt) ; fs=${!PT}
f=x${fs} ; FS=${!f} ; c=c${fs} ; CL=${!c}
if [ "$DEBUG" ] ; then
case $fs in
6|b|c|e|7) printbs $pt ;;
esac
else
case $fs in
ee|af|a5|a6|a9|82|27)
printf "n - skipping partition [%s%-11s %-15s[37;0m" $CL "$pt" "($FS)"
;;
5|f)
printf "n - reading bootsector [%s%-11s %-15s [37;0m..." $CL "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q GRUB && printf " --> [37;1mGrub found in [31;1m%s[37;0m" $pt && addGrubPrimaryPart $pt
;;
83)
printf "n - reading bootsector [%s%-11s %-15s [37;0m..." $CL "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q GRUB && printf " --> [37;1mGrub found in [31;1m%s[37;0m" $pt && addGrubPrimaryPart $pt
[ "${SEARCHKERNEL}" ] && searchkernel $pt
;;
*)
printf "n - searching partition [%s%-11s %-15s [37;0m..." $CL "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q NTLDR && findbootmgr $pt ntldr $fs
dd if=$pt bs=512 count=1 2>/dev/null | grep -q BOOTMGR && findbootmgr $pt bootmgr $fs
;;
esac
fi
done
[ "$DEBUG" ] && printptbl $dev
fi
done
printf "n"
# activate Grub partition if option -a ( or --activate ) was given
[ "$BOOTFLAG" ] && setBootFlag
[ -d /findgrub ] && rmdir /findgrub
# Main - END ---------------------------
echo
read -p "Press <enter> to Exit findgrub..."
exit 0
# End Of Script
#: Title : cfindgrub (findgrub with colors)
#: Date Created: Wed Sep 29 20:02:40 CDT 2010
#: Last Edit : Wed Mar 2 00:58:49 PST 2011
#: Author : please_try_again & edited by j McDaniel
#: Version : 2.4
#: Description : Locates the Grub Boot Loader & Windows BootLoader, Creates Grub Menu.Lst Entries
#: Options : -h | --help, -w | -- writemenu, -k | --kernel OR -d | --debug
# Created for the openSUSE forums September 30th in the year 2010 with loving care and presented to all of our great openSUSE USERS!
#
# Copy and paste this text into a text file and save it in your home area, bin folder (~/bin) as the file findgrub
# Once the file is saved, you must make the file executable using the terminal command: chmod +u ~/bin/findgrub
#
# current version
version="2.4"
# set COLOR to 0 to copy/paste or redirect debug output to a file
COLOR=1
# default mountpoint
mnt=/mnt
#
# Check to see if we are root
#
if [[ $UID -ne 0 ]]; then
id -Gn | grep -q wheel || echo "Root User Permissions are required, Please Enter the ..."
echo
sudo $0 $1
exit 0
fi
echo
echo "Colored Find Grub Version $version - Written for openSUSE Forums"
echo
function help {
cat << EOFHELP
$0 - description and help
options:
[37;1m-h --help[37;0m : show this help
[37;1m-k --kernel[37;0m : look for linux kernels
[37;1m-w --writemenu[37;0m : add boot entries to /boot/grub/men.lst
[37;1m-a --activate[37;0m : set boot flag on grub partition
[37;1m-d --debug [-n --nocolor] [37;0m : print Win bootsectors to standard output
EOFHELP
exit
}
function Linux2LegacyGrub {
eval `echo ${1:2} | sed 's|(.)|maj=1;min=|;s|$|;|'`
dev=${1:0:3}
let min--
# parse /boot/grub/device.map if present
if [ -f /boot/grub/device.map ] ; then
# check if device.map uses disk/by-id syntax (as in openSUSE)
if [ "x$(grep 'disk' /boot/grub/device.map)" != "x" ] ; then
eval `eval $(awk '/(hd/ { printf "echo -n "%s " ; readlink %s ;", $1, $2 }' /boot/grub/device.map) | sed 's|/..|/dev|;s|..||;s|/dev/||;s|(||;s|)||' | awk '{ printf "%s=%s;", $2, $1 }'`
# assume device.map uses device name syntax (as in Fedora, Mandriva, Arch Linux)
else
eval `sed -n '/[sh]d/s|/dev/||p' /boot/grub/device.map | tr -d "()" | awk '{ printf "%s=%s;", $2, $1 }'`
fi
echo "(${!dev},$min)"
# no device.map found
else
echo "(hd$(($(printf "%dn" '$maj) - 97)),$min)"
fi
}
function chainloadEntry {
if [ "${WRITEMENU}" ] ; then
printf " - append boot entry to chainload Windows bootmanager on [31;1m%s[37;0m to [37;1m/boot/grub/menu.lst[37;0mn" $1
cp /boot/grub/menu.lst{,.findgrub}
cat << EOFWriteGrubEntry | sed '/^ *$/d' >> /boot/grub/menu.lst
###Don't change this comment - YaST2 identifier: Original name: WindowsBootLoader###
title Windows on $1
rootnoverify $(Linux2LegacyGrub ${1#/dev/*})
$makeactive
chainloader +1
EOFWriteGrubEntry
else
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~nYou can add the following entry to [37;1m/boot/grub/menu.lst[37;0m :n"
cat << EOFDisplayGrubEntry | sed '/^ *$/d'
[32;1m
###Don't change this comment - YaST2 identifier: Original name: WindowsBootLoader###
title Windows on $1
rootnoverify $(Linux2LegacyGrub ${1#/dev/*})
$makeactive
chainloader +1
[37;0m
EOFDisplayGrubEntry
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function printbs {
if [ $COLOR -eq 1 ] ; then
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n[37;1m%s [37;0mBootsectorn---------------------------------------------------------------------------n [36;1m" $1
dd if=$1 bs=512 count=1 2>/dev/null | tr -cd "[:alnum
![:]](/images/smileys/8.gif)
![:]](/images/smileys/8.gif)
printf " [37;0mn----------------------------------------------------------------------------n"
dd if=/dev/sda1 bs=512 count=1 2>/dev/null | od -x | awk '{ if ( NF == 9 ) { printf "[35m%s|[33;1m %s %s %s %s %s %s %s", $1, $2, $3, $4, $5, $6, $7, $8 ; if ( $9 == "aa55" ) printf " [31;1m%s[35;0mn", $9 ; else printf " %s[35;0mn", $9 }}'
printf " [37;0mn~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
else
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n%s Bootsectorn---------------------------------------------------------------------------n " $1
dd if=$1 bs=512 count=1 2>/dev/null | tr -cd "[:alnum
![:]](/images/smileys/8.gif)
![:]](/images/smileys/8.gif)
printf " n----------------------------------------------------------------------------n"
dd if=/dev/sda1 bs=512 count=1 2>/dev/null | od -x
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function printptbl {
if [ $COLOR -eq 1 ] ; then
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n[37;1m%s[37;0m Partition tablen---------------------------------------------------------------n" $1
dd if=$1 bs=1 skip=446 count=64 2>/dev/null | od -x | head -4 | awk '{HD=substr($2,1,2) ; BF=substr($2,3,2); FE=substr($4,1,2) ; ID=substr($4,3,2); if ( BF == "80" ) BF="[31;1m"BF ; printf "[35m%s|[32;1m %s%s [32;1m%s %s[37;1m%s [32;1m%s %s %s %s %s[35;0mn", $1, HD, BF, $3, FE, ID, $5, $6, $7, $8 , $9}'
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
else
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n%s Partition tablen---------------------------------------------------------------n" $1
dd if=$1 bs=1 skip=446 count=64 2>/dev/null | od -x | head -4
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function searchkernel {
pt=$1
unset kernels ismounted
mount | grep -q "$pt " && ismounted=1
eval `blkid $pt | sed 's|.*: ||;s| |;|g'`
if [ "$ismounted" ] ; then
mp=`mount | grep "$pt " | awk '{ print $3 }'`
if [ "$mp" == "/boot" -o "$mp" == "/" ] ; then
kernels=`find /boot -type f -name "vmlinuz*"`
fi
else
mount -t $TYPE $pt $mnt
if [ -d /mnt/boot ] ; then
kernels=`find $mnt/boot -type f -name "vmlinuz*"`
else
kernels=`find $mnt -maxdepth 1 -type f -name "vmlinuz*"`
fi
umount $mnt 2> /dev/null
fi
if [ "$kernels" ] ; then
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
for kern in $kernels ; do
if [ $COLOR -eq 1 ] ; then
printf " --> [37;1mkernel [34;1m%-51s [37;1mfound in [34;1m%s[37;0mn" ${kern##*/} $pt
else
printf " --> kernel %-51s found in %sn" ${kern##*/} $pt
fi
done
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function findbootmgr {
case $3 in
6|b|c|e) fs=vfat ;;
7) fs=ntfs;;
esac
mp=`mount | grep $1 | awk '{ print $3 }'`
if [ "x$mp" == "x" ] ; then
mp=$mnt
mount | grep -q "$mp " && mp=/findgrub
[ -d $mp ] || mkdir $mp
mount -t $fs $1 $mp
UNMOUNT=1
else
unset UNMOUNT
fi
case $2 in
bootmgr)
find $mp -maxdepth 1 -iname "bootmgr" | grep -q -i "bootmgr" && {
printf " --> [37;1mWindows7/Vista Loader found in [31;1m%s[37;0mn" $pt
chainloadEntry $pt
}
;;
ntldr)
find $mp -maxdepth 1 -iname "ntldr" | grep -q -i "ntldr" && {
printf " --> [37;1mWindows NT/2K/XP Loader found in [31;1m%s[37;0mn" $pt
chainloadEntry $pt
}
;;
esac
if [ "$UNMOUNT" ] ; then
umount $mp
fi
[ -d /findgrub ] && rmdir /findgrub
}
function addGrubPrimaryPart {
[ ${1##*[a-z]} -le 4 ] && grubpart="$grubpart $1"
}
function setBootFlag {
if [ "$grubpart" ] ; then
for part in $grubpart ; do
num=${part##*[a-z]} ; dev=${part%%[1-4]*}
/sbin/fdisk -l $dev | grep "$partb" | grep -q "*" && printf "n [31;1mGrub partition %s is already active.[37;0mn" $part && continue
while [ "true" ] ; do
printf "n [31;1mGrub found in %s. Do you want to activate %s? [yn][37;0m " $part $part
read -n1 yesno
yesno=$(echo $yesno | tr "[:upper
![:]](/images/smileys/8.gif)
![:]](/images/smileys/8.gif)
[ "$yesno" == "y" -o "$yesno" == "n" ] && break
done
printf "n"
if [ "$yesno" == "y" ] ; then
if [ -x /sbin/sfdisk ] ; then
/sbin/sfdisk $dev -A$num
else
echo "[31;1m/sbin/sfdisk not found[37;0m"
return 1
fi
fi
printf "n"
done
else
printf "n [31;1mBootflag can not be set: No Grub was found in primary or in the extended partition.[37;0mn"
fi
}
# some partition types with color
x6=FAT16 ; c6='33;1m'
x16="Hidden FAT16" ; c16='33;1m'
xb=FAT32 ; cb='32;1m'
xc=FAT32 ; cc='32;1m'
xe=FAT32 ; ce='32;1m'
x1b="Hidden FAT32" ; c1b='32;1m'
x1c="Hidden FAT32" ; c1c='32;1m'
x1e="Hidden FAT32" ; c1e='32;1m'
x5=Extended ; c5='32;1m'
xf=Extended ; cf='32;1m'
x7=NTFS ; c7='34;1m'
x17="Hidden NTFS" ; c17='31m'
x27="Win Recovery" ; c27='31m'
x82=swap ; c82='33m'
x83=LINUX ; c83='36;1m'
x8e="LINUX LVM" ; c8e='36;1m'
xee=GPT ; cee='31m'
xef=EFI ; cef='31m'
xaf=HFS ; caf='35m'
xa5=FreeBSD ; ca5='35m'
xa6=OpenBSD ; ca6='35m'
xa7="Next Step" ; ca7='35m'
xa8=Darwin ; ca8='35m'
xa9=NetBSD ; ca9='35m'
x39=Plan9 ; c39='36m'
x4d=QNX4 ; c4d='36m'
x4e=QNX4 ; c4e='36m'
x4f=QNX4 ; c4f='36m'
x63="GNU HURD" ; c63='36m'
x81=MINIX ; c81='36m'
xbe="Solaris boot" ; cbe='36m'
xbf="Solaris" ; cbf='36m'
xeb="BeOS" ; ceb='36m'
xfb="VMware VMFS" ; cfb='36m'
xfc="VMware VMKCORE" ; cfc='36m'
xfd="LINUX RAID AUTO" ; cfd='36m'
# Main - BEGIN --------------------------
devs=(`LC_ALL=C /sbin/fdisk -l 2>/dev/null | sed -n 's|^Disk (/dev/[hs]d[a-z]):.*|1|p'`)
case "$1" in
-w|--writemenu) WRITEMENU=1 ; shift ;;
-k|--kernel) SEARCHKERNEL=1 ; shift ;;
-a|--activate) BOOTFLAG=1 ; grubpart="" ; shift ;;
-d|--debug)
DEBUG=1
shift
case "$1" in
-n|--nocolor) COLOR=0 ;;
esac
;;
-h|--help) help ;;
esac
# look for GRUB signature in MBR, Linux(0x83) and Extended(0x05, 0x0f) partitions
# skip EFI (0xee), swap (0x82) and BSD (0xa5, 0xa6, 0xa9) partitions
# !!! deliberately skip Windows Recovery (0x27) partition
# look for strings 'BOOTMGR' or 'NTLDR' in all other partitions bootsector and
# if found mount the partition and search for files bootmgr or ntldr
# in debug mode, output bootsector of NTFS and FAT partitons in ASCII and HEX
# output partition table
# get all partitions ids
eval `LC_ALL=C /sbin/fdisk -l 2>/dev/null | awk '/^/dev/ { if ($2 == "*") ID = $6 ; else ID = $5 ; print $1"="ID";" }' | sed s'|/dev/||'`
for dev in ${devs[*]} ; do
if [ -b $dev ] ; then
printf "n[31;1m - reading MBR on disk %-27s [37;0m..." "$dev"
dd if=$dev bs=512 count=1 2> /dev/null | grep -q GRUB && {
printf " --> [37;1mGrub found in [31;1mMBR[37;0m"
[ "$dev" == "/dev/sda" ] && makeactive=makeactive
}
for pt in `LC_ALL=C /sbin/fdisk -l $dev 2>/dev/null | awk '/^/dev/ { print $1 }'` ; do
PT=$(basename $pt) ; fs=${!PT}
f=x${fs} ; FS=${!f} ; c=c${fs} ; CL=${!c}
if [ "$DEBUG" ] ; then
case $fs in
6|b|c|e|7) printbs $pt ;;
esac
else
case $fs in
ee|af|a5|a6|a9|82|27)
printf "n - skipping partition [%s%-11s %-15s[37;0m" $CL "$pt" "($FS)"
;;
5|f)
printf "n - reading bootsector [%s%-11s %-15s [37;0m..." $CL "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q GRUB && printf " --> [37;1mGrub found in [31;1m%s[37;0m" $pt && addGrubPrimaryPart $pt
;;
83)
printf "n - reading bootsector [%s%-11s %-15s [37;0m..." $CL "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q GRUB && printf " --> [37;1mGrub found in [31;1m%s[37;0m" $pt && addGrubPrimaryPart $pt
[ "${SEARCHKERNEL}" ] && searchkernel $pt
;;
*)
printf "n - searching partition [%s%-11s %-15s [37;0m..." $CL "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q NTLDR && findbootmgr $pt ntldr $fs
dd if=$pt bs=512 count=1 2>/dev/null | grep -q BOOTMGR && findbootmgr $pt bootmgr $fs
;;
esac
fi
done
[ "$DEBUG" ] && printptbl $dev
fi
done
printf "n"
# activate Grub partition if option -a ( or --activate ) was given
[ "$BOOTFLAG" ] && setBootFlag
[ -d /findgrub ] && rmdir /findgrub
# Main - END ---------------------------
echo
read -p "Press <enter> to Exit findgrub..."
exit 0
# End Of Script
Caché :
#!/bin/bash
#: Title : findgrub
#: Date Created: Wed Sep 29 20:02:40 CDT 2010
#: Last Edit : Wed Mar 2 00:58:49 PST 2011
#: Author : please_try_again & edited by j McDaniel
#: Version : 2.4
#: Description : Locates the Grub Boot Loader & Windows BootLoader, Creates Grub Menu.Lst Entries
#: Options : -h | --help, -w | -- writemenu, -k | --kernel OR -d | --debug
# Created for the openSUSE forums September 30th in the year 2010 with loving care and presented to all of our great openSUSE USERS!
#
# Copy and paste this text into a text file and save it in your home area, bin folder (~/bin) as the file findgrub
# Once the file is saved, you must make the file executable using the terminal command: chmod +u ~/bin/findgrub
#
# current version
version="2.4"
# default mountpoint
mnt=/mnt
#
# Check to see if we are root
#
if [[ $UID -ne 0 ]]; then
id -Gn | grep -q wheel || echo "Root User Permissions are required, Please Enter the ..."
echo
sudo $0 $1
exit 0
fi
echo
echo "Find Grub Version $version - Written for openSUSE Forums"
echo
function help {
cat << EOFHELP
$0 - description and help
options:
-h --help : show this help
-k --kernel : look for linux kernels
-w --writemenu : add boot entries to /boot/grub/men.lst
-a --activate : set boot flag on grub partition
-d --debug : print Win bootsectors to standard output
EOFHELP
exit
}
function Linux2LegacyGrub {
eval `echo ${1:2} | sed 's|(.)|maj=1;min=|;s|$|;|'`
dev=${1:0:3}
let min--
# parse /boot/grub/device.map if present
if [ -f /boot/grub/device.map ] ; then
# check if device.map uses disk/by-id syntax (as in openSUSE)
if [ "x$(grep 'disk' /boot/grub/device.map)" != "x" ] ; then
eval `eval $(awk '/(hd/ { printf "echo -n "%s " ; readlink %s ;", $1, $2 }' /boot/grub/device.map) | sed 's|/..|/dev|;s|..||;s|/dev/||;s|(||;s|)||' | awk '{ printf "%s=%s;", $2, $1 }'`
# assume device.map uses device name syntax (as in Fedora, Mandriva, Arch Linux)
else
eval `sed -n '/[sh]d/s|/dev/||p' /boot/grub/device.map | tr -d "()" | awk '{ printf "%s=%s;", $2, $1 }'`
fi
echo "(${!dev},$min)"
# no device.map found
else
echo "(hd$(($(printf "%dn" '$maj) - 97)),$min)"
fi
}
function chainloadEntry {
if [ "${WRITEMENU}" ] ; then
printf " - append boot entry to chainload Windows bootmanager on %s to /boot/grub/menu.lstn" $1
cp /boot/grub/menu.lst{,.findgrub}
cat << EOFWriteGrubEntry | sed '/^ *$/d' >> /boot/grub/menu.lst
###Don't change this comment - YaST2 identifier: Original name: WindowsBootLoader###
title Windows on $1
rootnoverify $(Linux2LegacyGrub ${1#/dev/*})
$makeactive
chainloader +1
EOFWriteGrubEntry
else
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~nYou can add the following entry to /boot/grub/menu.lst :n"
cat << EOFDisplayGrubEntry | sed '/^ *$/d'
###Don't change this comment - YaST2 identifier: Original name: WindowsBootLoader###
title Windows on $1
rootnoverify $(Linux2LegacyGrub ${1#/dev/*})
$makeactive
chainloader +1
EOFDisplayGrubEntry
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function printbs {
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n%s Bootsectorn---------------------------------------------------------------------------n " $1
dd if=$1 bs=512 count=1 2>/dev/null | tr -cd "[:alnum
[:space
"
printf " n----------------------------------------------------------------------------n"
dd if=/dev/sda1 bs=512 count=1 2>/dev/null | od -x
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
}
function printptbl {
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n%s Partition tablen---------------------------------------------------------------n" $1
dd if=$1 bs=1 skip=446 count=64 2>/dev/null | od -x | head -4
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
}
function searchkernel {
pt=$1
unset kernels ismounted
mount | grep -q "$pt " && ismounted=1
eval `blkid $pt | sed 's|.*: ||;s| |;|g'`
if [ "$ismounted" ] ; then
mp=`mount | grep "$pt " | awk '{ print $3 }'`
if [ "$mp" == "/boot" -o "$mp" == "/" ] ; then
kernels=`find /boot -type f -name "vmlinuz*"`
fi
else
mount -t $TYPE $pt $mnt
if [ -d /mnt/boot ] ; then
kernels=`find $mnt/boot -type f -name "vmlinuz*"`
else
kernels=`find $mnt -maxdepth 1 -type f -name "vmlinuz*"`
fi
umount $mnt 2> /dev/null
fi
if [ "$kernels" ] ; then
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
for kern in $kernels ; do
printf " --> kernel %-51s found in %sn" ${kern##*/} $pt
done
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function findbootmgr {
case $3 in
6|b|c|e) fs=vfat ;;
7) fs=ntfs;;
esac
mp=`mount | grep $1 | awk '{ print $3 }'`
if [ "x$mp" == "x" ] ; then
mp=$mnt
mount | grep -q "$mp " && mp=/findgrub
[ -d $mp ] || mkdir $mp
mount -t $fs $1 $mp
UNMOUNT=1
else
unset UNMOUNT
fi
case $2 in
bootmgr)
find $mp -maxdepth 1 -iname "bootmgr" | grep -q -i "bootmgr" && {
printf " --> Windows7/Vista Loader found in %sn" $pt
chainloadEntry $pt
}
;;
ntldr)
find $mp -maxdepth 1 -iname "ntldr" | grep -q -i "ntldr" && {
printf " --> Windows NT/2K/XP Loader found in %sn" $pt
chainloadEntry $pt
}
;;
esac
if [ "$UNMOUNT" ] ; then
umount $mp
fi
[ -d /findgrub ] && rmdir /findgrub
}
function addGrubPrimaryPart {
[ ${1##*[a-z]} -le 4 ] && grubpart="$grubpart $1"
}
function setBootFlag {
if [ "$grubpart" ] ; then
for part in $grubpart ; do
num=${part##*[a-z]} ; dev=${part%%[1-4]*}
/sbin/fdisk -l $dev | grep "$partb" | grep -q "*" && printf "n Grub partition %s is already active.n" $part && continue
while [ "true" ] ; do
printf "n Grub found in %s. Do you want to activate %s? [yn] " $part $part
read -n1 yesno
yesno=$(echo $yesno | tr "[:upper
" "[:lower
")
[ "$yesno" == "y" -o "$yesno" == "n" ] && break
done
printf "n"
if [ "$yesno" == "y" ] ; then
if [ -x /sbin/sfdisk ] ; then
/sbin/sfdisk $dev -A$num
else
echo "/sbin/sfdisk not found"
return 1
fi
fi
printf "n"
done
else
printf "n Bootflag can not be set: No Grub was found in primary or in the extended partition.n"
fi
}
# some partition types with color
x6=FAT16 ; c6='33;1m'
x16="Hidden FAT16" ; c16='33;1m'
xb=FAT32 ; cb='32;1m'
xc=FAT32 ; cc='32;1m'
xe=FAT32 ; ce='32;1m'
x1b="Hidden FAT32" ; c1b='32;1m'
x1c="Hidden FAT32" ; c1c='32;1m'
x1e="Hidden FAT32" ; c1e='32;1m'
x5=Extended ; c5='32;1m'
xf=Extended ; cf='32;1m'
x7=NTFS ; c7='34;1m'
x17="Hidden NTFS" ; c17='31m'
x27="Win Recovery" ; c27='31m'
x82=swap ; c82='33m'
x83=LINUX ; c83='36;1m'
x8e="LINUX LVM" ; c8e='36;1m'
xee=GPT ; cee='31m'
xef=EFI ; cef='31m'
xaf=HFS ; caf='35m'
xa5=FreeBSD ; ca5='35m'
xa6=OpenBSD ; ca6='35m'
xa7="Next Step" ; ca7='35m'
xa8=Darwin ; ca8='35m'
xa9=NetBSD ; ca9='35m'
x39=Plan9 ; c39='36m'
x4d=QNX4 ; c4d='36m'
x4e=QNX4 ; c4e='36m'
x4f=QNX4 ; c4f='36m'
x63="GNU HURD" ; c63='36m'
x81=MINIX ; c81='36m'
xbe="Solaris boot" ; cbe='36m'
xbf="Solaris" ; cbf='36m'
xeb="BeOS" ; ceb='36m'
xfb="VMware VMFS" ; cfb='36m'
xfc="VMware VMKCORE" ; cfc='36m'
xfd="LINUX RAID AUTO" ; cfd='36m'
# Main - BEGIN --------------------------
devs=(`LC_ALL=C /sbin/fdisk -l 2>/dev/null | sed -n 's|^Disk (/dev/[hs]d[a-z]):.*|1|p'`)
case "$1" in
-w|--writemenu) WRITEMENU=1 ; shift ;;
-k|--kernel) SEARCHKERNEL=1 ; shift ;;
-a|--activate) BOOTFLAG=1 ; grubpart="" ; shift ;;
-d|--debug)
DEBUG=1
shift
case "$1" in
-n|--nocolor) COLOR=0 ;;
esac
;;
-h|--help) help ;;
esac
# look for GRUB signature in MBR, Linux(0x83) and Extended(0x05, 0x0f) partitions
# skip EFI (0xee), swap (0x82) and BSD (0xa5, 0xa6, 0xa9) partitions
# !!! deliberately skip Windows Recovery (0x27) partition
# look for strings 'BOOTMGR' or 'NTLDR' in all other partitions bootsector and
# if found mount the partition and search for files bootmgr or ntldr
# in debug mode, output bootsector of NTFS and FAT partitons in ASCII and HEX
# output partition table
# get all partitions ids
eval `LC_ALL=C /sbin/fdisk -l 2>/dev/null | awk '/^/dev/ { if ($2 == "*") ID = $6 ; else ID = $5 ; print $1"="ID";" }' | sed s'|/dev/||'`
for dev in ${devs[*]} ; do
if [ -b $dev ] ; then
printf "n - reading MBR on disk %-27s ..." "$dev"
dd if=$dev bs=512 count=1 2> /dev/null | grep -q GRUB && {
printf " --> Grub found in MBR"
[ "$dev" == "/dev/sda" ] && makeactive=makeactive
}
for pt in `LC_ALL=C /sbin/fdisk -l $dev 2>/dev/null | awk '/^/dev/ { print $1 }'` ; do
PT=$(basename $pt) ; fs=${!PT}
f=x${fs} ; FS=${!f}
if [ "$DEBUG" ] ; then
case $fs in
6|b|c|e|7) printbs $pt ;;
esac
else
case $fs in
ee|af|a5|a6|a9|82|27)
printf "n - skipping partition %-11s %-15s" "$pt" "($FS)"
;;
5|f)
printf "n - reading bootsector %-11s %-15s ..." "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q GRUB && printf " --> Grub found in %s" $pt && addGrubPrimaryPart $pt
;;
83)
printf "n - reading bootsector %-11s %-15s ..." "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q GRUB && printf " --> Grub found in %s" $pt && addGrubPrimaryPart $pt
[ "${SEARCHKERNEL}" ] && searchkernel $pt
;;
*)
printf "n - searching partition %-11s %-15s ..." "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q NTLDR && findbootmgr $pt ntldr $fs
dd if=$pt bs=512 count=1 2>/dev/null | grep -q BOOTMGR && findbootmgr $pt bootmgr $fs
;;
esac
fi
done
[ "$DEBUG" ] && printptbl $dev
fi
done
printf "n"
# activate Grub partition if option -a ( or --activate ) was given
[ "$BOOTFLAG" ] && setBootFlag
[ -d /findgrub ] && rmdir /findgrub
# Main - END ---------------------------
echo
read -p "Press <enter> to Exit findgrub..."
exit 0
# End Of Script
#: Title : findgrub
#: Date Created: Wed Sep 29 20:02:40 CDT 2010
#: Last Edit : Wed Mar 2 00:58:49 PST 2011
#: Author : please_try_again & edited by j McDaniel
#: Version : 2.4
#: Description : Locates the Grub Boot Loader & Windows BootLoader, Creates Grub Menu.Lst Entries
#: Options : -h | --help, -w | -- writemenu, -k | --kernel OR -d | --debug
# Created for the openSUSE forums September 30th in the year 2010 with loving care and presented to all of our great openSUSE USERS!
#
# Copy and paste this text into a text file and save it in your home area, bin folder (~/bin) as the file findgrub
# Once the file is saved, you must make the file executable using the terminal command: chmod +u ~/bin/findgrub
#
# current version
version="2.4"
# default mountpoint
mnt=/mnt
#
# Check to see if we are root
#
if [[ $UID -ne 0 ]]; then
id -Gn | grep -q wheel || echo "Root User Permissions are required, Please Enter the ..."
echo
sudo $0 $1
exit 0
fi
echo
echo "Find Grub Version $version - Written for openSUSE Forums"
echo
function help {
cat << EOFHELP
$0 - description and help
options:
-h --help : show this help
-k --kernel : look for linux kernels
-w --writemenu : add boot entries to /boot/grub/men.lst
-a --activate : set boot flag on grub partition
-d --debug : print Win bootsectors to standard output
EOFHELP
exit
}
function Linux2LegacyGrub {
eval `echo ${1:2} | sed 's|(.)|maj=1;min=|;s|$|;|'`
dev=${1:0:3}
let min--
# parse /boot/grub/device.map if present
if [ -f /boot/grub/device.map ] ; then
# check if device.map uses disk/by-id syntax (as in openSUSE)
if [ "x$(grep 'disk' /boot/grub/device.map)" != "x" ] ; then
eval `eval $(awk '/(hd/ { printf "echo -n "%s " ; readlink %s ;", $1, $2 }' /boot/grub/device.map) | sed 's|/..|/dev|;s|..||;s|/dev/||;s|(||;s|)||' | awk '{ printf "%s=%s;", $2, $1 }'`
# assume device.map uses device name syntax (as in Fedora, Mandriva, Arch Linux)
else
eval `sed -n '/[sh]d/s|/dev/||p' /boot/grub/device.map | tr -d "()" | awk '{ printf "%s=%s;", $2, $1 }'`
fi
echo "(${!dev},$min)"
# no device.map found
else
echo "(hd$(($(printf "%dn" '$maj) - 97)),$min)"
fi
}
function chainloadEntry {
if [ "${WRITEMENU}" ] ; then
printf " - append boot entry to chainload Windows bootmanager on %s to /boot/grub/menu.lstn" $1
cp /boot/grub/menu.lst{,.findgrub}
cat << EOFWriteGrubEntry | sed '/^ *$/d' >> /boot/grub/menu.lst
###Don't change this comment - YaST2 identifier: Original name: WindowsBootLoader###
title Windows on $1
rootnoverify $(Linux2LegacyGrub ${1#/dev/*})
$makeactive
chainloader +1
EOFWriteGrubEntry
else
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~nYou can add the following entry to /boot/grub/menu.lst :n"
cat << EOFDisplayGrubEntry | sed '/^ *$/d'
###Don't change this comment - YaST2 identifier: Original name: WindowsBootLoader###
title Windows on $1
rootnoverify $(Linux2LegacyGrub ${1#/dev/*})
$makeactive
chainloader +1
EOFDisplayGrubEntry
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function printbs {
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n%s Bootsectorn---------------------------------------------------------------------------n " $1
dd if=$1 bs=512 count=1 2>/dev/null | tr -cd "[:alnum
![:]](/images/smileys/8.gif)
![:]](/images/smileys/8.gif)
printf " n----------------------------------------------------------------------------n"
dd if=/dev/sda1 bs=512 count=1 2>/dev/null | od -x
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
}
function printptbl {
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n%s Partition tablen---------------------------------------------------------------n" $1
dd if=$1 bs=1 skip=446 count=64 2>/dev/null | od -x | head -4
printf " n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
}
function searchkernel {
pt=$1
unset kernels ismounted
mount | grep -q "$pt " && ismounted=1
eval `blkid $pt | sed 's|.*: ||;s| |;|g'`
if [ "$ismounted" ] ; then
mp=`mount | grep "$pt " | awk '{ print $3 }'`
if [ "$mp" == "/boot" -o "$mp" == "/" ] ; then
kernels=`find /boot -type f -name "vmlinuz*"`
fi
else
mount -t $TYPE $pt $mnt
if [ -d /mnt/boot ] ; then
kernels=`find $mnt/boot -type f -name "vmlinuz*"`
else
kernels=`find $mnt -maxdepth 1 -type f -name "vmlinuz*"`
fi
umount $mnt 2> /dev/null
fi
if [ "$kernels" ] ; then
printf "n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
for kern in $kernels ; do
printf " --> kernel %-51s found in %sn" ${kern##*/} $pt
done
printf "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n"
fi
}
function findbootmgr {
case $3 in
6|b|c|e) fs=vfat ;;
7) fs=ntfs;;
esac
mp=`mount | grep $1 | awk '{ print $3 }'`
if [ "x$mp" == "x" ] ; then
mp=$mnt
mount | grep -q "$mp " && mp=/findgrub
[ -d $mp ] || mkdir $mp
mount -t $fs $1 $mp
UNMOUNT=1
else
unset UNMOUNT
fi
case $2 in
bootmgr)
find $mp -maxdepth 1 -iname "bootmgr" | grep -q -i "bootmgr" && {
printf " --> Windows7/Vista Loader found in %sn" $pt
chainloadEntry $pt
}
;;
ntldr)
find $mp -maxdepth 1 -iname "ntldr" | grep -q -i "ntldr" && {
printf " --> Windows NT/2K/XP Loader found in %sn" $pt
chainloadEntry $pt
}
;;
esac
if [ "$UNMOUNT" ] ; then
umount $mp
fi
[ -d /findgrub ] && rmdir /findgrub
}
function addGrubPrimaryPart {
[ ${1##*[a-z]} -le 4 ] && grubpart="$grubpart $1"
}
function setBootFlag {
if [ "$grubpart" ] ; then
for part in $grubpart ; do
num=${part##*[a-z]} ; dev=${part%%[1-4]*}
/sbin/fdisk -l $dev | grep "$partb" | grep -q "*" && printf "n Grub partition %s is already active.n" $part && continue
while [ "true" ] ; do
printf "n Grub found in %s. Do you want to activate %s? [yn] " $part $part
read -n1 yesno
yesno=$(echo $yesno | tr "[:upper
![:]](/images/smileys/8.gif)
![:]](/images/smileys/8.gif)
[ "$yesno" == "y" -o "$yesno" == "n" ] && break
done
printf "n"
if [ "$yesno" == "y" ] ; then
if [ -x /sbin/sfdisk ] ; then
/sbin/sfdisk $dev -A$num
else
echo "/sbin/sfdisk not found"
return 1
fi
fi
printf "n"
done
else
printf "n Bootflag can not be set: No Grub was found in primary or in the extended partition.n"
fi
}
# some partition types with color
x6=FAT16 ; c6='33;1m'
x16="Hidden FAT16" ; c16='33;1m'
xb=FAT32 ; cb='32;1m'
xc=FAT32 ; cc='32;1m'
xe=FAT32 ; ce='32;1m'
x1b="Hidden FAT32" ; c1b='32;1m'
x1c="Hidden FAT32" ; c1c='32;1m'
x1e="Hidden FAT32" ; c1e='32;1m'
x5=Extended ; c5='32;1m'
xf=Extended ; cf='32;1m'
x7=NTFS ; c7='34;1m'
x17="Hidden NTFS" ; c17='31m'
x27="Win Recovery" ; c27='31m'
x82=swap ; c82='33m'
x83=LINUX ; c83='36;1m'
x8e="LINUX LVM" ; c8e='36;1m'
xee=GPT ; cee='31m'
xef=EFI ; cef='31m'
xaf=HFS ; caf='35m'
xa5=FreeBSD ; ca5='35m'
xa6=OpenBSD ; ca6='35m'
xa7="Next Step" ; ca7='35m'
xa8=Darwin ; ca8='35m'
xa9=NetBSD ; ca9='35m'
x39=Plan9 ; c39='36m'
x4d=QNX4 ; c4d='36m'
x4e=QNX4 ; c4e='36m'
x4f=QNX4 ; c4f='36m'
x63="GNU HURD" ; c63='36m'
x81=MINIX ; c81='36m'
xbe="Solaris boot" ; cbe='36m'
xbf="Solaris" ; cbf='36m'
xeb="BeOS" ; ceb='36m'
xfb="VMware VMFS" ; cfb='36m'
xfc="VMware VMKCORE" ; cfc='36m'
xfd="LINUX RAID AUTO" ; cfd='36m'
# Main - BEGIN --------------------------
devs=(`LC_ALL=C /sbin/fdisk -l 2>/dev/null | sed -n 's|^Disk (/dev/[hs]d[a-z]):.*|1|p'`)
case "$1" in
-w|--writemenu) WRITEMENU=1 ; shift ;;
-k|--kernel) SEARCHKERNEL=1 ; shift ;;
-a|--activate) BOOTFLAG=1 ; grubpart="" ; shift ;;
-d|--debug)
DEBUG=1
shift
case "$1" in
-n|--nocolor) COLOR=0 ;;
esac
;;
-h|--help) help ;;
esac
# look for GRUB signature in MBR, Linux(0x83) and Extended(0x05, 0x0f) partitions
# skip EFI (0xee), swap (0x82) and BSD (0xa5, 0xa6, 0xa9) partitions
# !!! deliberately skip Windows Recovery (0x27) partition
# look for strings 'BOOTMGR' or 'NTLDR' in all other partitions bootsector and
# if found mount the partition and search for files bootmgr or ntldr
# in debug mode, output bootsector of NTFS and FAT partitons in ASCII and HEX
# output partition table
# get all partitions ids
eval `LC_ALL=C /sbin/fdisk -l 2>/dev/null | awk '/^/dev/ { if ($2 == "*") ID = $6 ; else ID = $5 ; print $1"="ID";" }' | sed s'|/dev/||'`
for dev in ${devs[*]} ; do
if [ -b $dev ] ; then
printf "n - reading MBR on disk %-27s ..." "$dev"
dd if=$dev bs=512 count=1 2> /dev/null | grep -q GRUB && {
printf " --> Grub found in MBR"
[ "$dev" == "/dev/sda" ] && makeactive=makeactive
}
for pt in `LC_ALL=C /sbin/fdisk -l $dev 2>/dev/null | awk '/^/dev/ { print $1 }'` ; do
PT=$(basename $pt) ; fs=${!PT}
f=x${fs} ; FS=${!f}
if [ "$DEBUG" ] ; then
case $fs in
6|b|c|e|7) printbs $pt ;;
esac
else
case $fs in
ee|af|a5|a6|a9|82|27)
printf "n - skipping partition %-11s %-15s" "$pt" "($FS)"
;;
5|f)
printf "n - reading bootsector %-11s %-15s ..." "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q GRUB && printf " --> Grub found in %s" $pt && addGrubPrimaryPart $pt
;;
83)
printf "n - reading bootsector %-11s %-15s ..." "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q GRUB && printf " --> Grub found in %s" $pt && addGrubPrimaryPart $pt
[ "${SEARCHKERNEL}" ] && searchkernel $pt
;;
*)
printf "n - searching partition %-11s %-15s ..." "$pt" "($FS)"
dd if=$pt bs=512 count=1 2>/dev/null | grep -q NTLDR && findbootmgr $pt ntldr $fs
dd if=$pt bs=512 count=1 2>/dev/null | grep -q BOOTMGR && findbootmgr $pt bootmgr $fs
;;
esac
fi
done
[ "$DEBUG" ] && printptbl $dev
fi
done
printf "n"
# activate Grub partition if option -a ( or --activate ) was given
[ "$BOOTFLAG" ] && setBootFlag
[ -d /findgrub ] && rmdir /findgrub
# Main - END ---------------------------
echo
read -p "Press <enter> to Exit findgrub..."
exit 0
# End Of Script
Citation :
Ensuite, tu démarres en console et donne-nous le résultat.
Euh ? C'est à dire ?
Mageia 5 KDE 64 Bits
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -

XKomodor Membre non connecté
-
- Voir le profil du membre XKomodor
- Inscrit le : 08/01/2008
- Site internet
- Groupes :
-
Administrateur
ZEBULON :
Bon alors , d'aprés l'utilitaire de disque d' ubuntu j'ai 6 partitions comme suit :
/dev/sda 1 : systéme de fichiers 13 GB ext4 ( / Mageia ? Ubuntu ? )
/dev/sda 2 : partition étendue
/dev/sda 5 : swap 4.2 GB ( swap Mageia )
/dev/sda 6 : systéme de fichiers 485 GB ext4 ( / home Mageia )
/dev/sda 7 : systéme de fichiers 486 GB ext4 ( / home Ubuntu )
/dev/sda 8 : swap 13 GB ( swap Ubuntu )
sda 8 m'est annonçé comme étant une partition swap ? ça me parait beaucoup 13 GB non ?
Ubuntu n'aurait il pas pu etre écrit sur la partition sda 1 de Mageia ? Ce qui pourrait expliquer le schmillblick ....
Question subsidiaire : dans le cas d'un dualboot Mageia/Ubuntu , peut-etre est-il préférable d'installer ubuntu en premier non ?
Merci de votre aide en tout cas
@+
EDIT : oups ! je n'avais pas vu les réponses données par vladimir . Je regarde ça de plus prés
/dev/sda 1 : systéme de fichiers 13 GB ext4 ( / Mageia ? Ubuntu ? )
/dev/sda 2 : partition étendue
/dev/sda 5 : swap 4.2 GB ( swap Mageia )
/dev/sda 6 : systéme de fichiers 485 GB ext4 ( / home Mageia )
/dev/sda 7 : systéme de fichiers 486 GB ext4 ( / home Ubuntu )
/dev/sda 8 : swap 13 GB ( swap Ubuntu )
sda 8 m'est annonçé comme étant une partition swap ? ça me parait beaucoup 13 GB non ?
Ubuntu n'aurait il pas pu etre écrit sur la partition sda 1 de Mageia ? Ce qui pourrait expliquer le schmillblick ....
Question subsidiaire : dans le cas d'un dualboot Mageia/Ubuntu , peut-etre est-il préférable d'installer ubuntu en premier non ?
Merci de votre aide en tout cas

@+
EDIT : oups ! je n'avais pas vu les réponses données par vladimir . Je regarde ça de plus prés

Perso, je dirai que ça sent la défaite ton affaire.
Dans ton partitionnement, je ne vois pas où pourrais être la partition système (/) de Ubuntu ou de Mageia ....
De plus sans vouloir être méchant ... tes partitions sont drôlement mal faites avec des tailles de swap de folie etc ...
Peu importe maintenant, je te propose de te rendre dans la partition
Citation :
/dev/sda 1 : systéme de fichiers 13 GB ext4 ( / Mageia ? Ubuntu ? )
et de chercher un fichier qui s'appellerait /etc/release ou /etc/version (je penche plus pour le premier).
En tout cas et personnellement, je n'hésiterai pas de refaire mes partitions et des réinstallations propres des distrib.
Merci


ZEBULON Membre non connecté
-
- Voir le profil du membre ZEBULON
- Inscrit le : 30/10/2008
- Groupes :
Mageia release 1 (Cauldron) for i586
Citation :
En tout cas et personnellement, je n'hésiterai pas de refaire mes partitions et des réinstallations propres des distrib.
C'est effectivement envisagé

@+
Mageia 5 KDE 64 Bits
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -

XKomodor Membre non connecté
-
- Voir le profil du membre XKomodor
- Inscrit le : 08/01/2008
- Site internet
- Groupes :
-
Administrateur
Oui donc tu as bien Mageia avec un GRUB2 qui est fait pour faire tourner une Ubuntu et vraisemblablement avec un fichier de conf. à l'ouest ....
Fais simple, bien que se soit une 'bonne raison' d'en apprendre plus sur GRUB2, en réinstallant ... avec des partitions propres.
Je te proposerai bien un swap de max 2Go et encore perso je ne met que 1024 Mo voir pas du tout pour les config avec pas mal de RAM ...
Merci


Vladimir Membre non connecté
-
- Voir le profil du membre Vladimir
- Inscrit le : 04/03/2008
- Groupes :
-
Membre d'Honneur
Citation :
Le fichier /etc/release/ :
Mageia release 1 (Cauldron) for i586
Mageia release 1 (Cauldron) for i586
Et il se trouve sur quelle partition ce fichier ?
Vous voudriez passer à Linux mais vous n'y connaissez rien?
Quelqu'un dans votre région est prêt à vous aider.
Connectez- vous sur parrain.linux
Quelqu'un dans votre région est prêt à vous aider.
Connectez- vous sur parrain.linux

ZEBULON Membre non connecté
-
- Voir le profil du membre ZEBULON
- Inscrit le : 30/10/2008
- Groupes :
XKomodor :
Salut,
Oui donc tu as bien Mageia avec un GRUB2 qui est fait pour faire tourner une Ubuntu et vraisemblablement avec un fichier de conf. à l'ouest ....
Oui donc tu as bien Mageia avec un GRUB2 qui est fait pour faire tourner une Ubuntu et vraisemblablement avec un fichier de conf. à l'ouest ....
Salut
Donc pas adapté pour Mageia c'est ça ?
Citation :
Fais simple, bien que se soit une 'bonne raison' d'en apprendre plus sur GRUB2, en réinstallant ... avec des partitions propres.
Si vraiment j'ai pas le choix c'est ce que je ferais .
Citation :
Je te proposerai bien un swap de max 2Go et encore perso je ne met que 1024 Mo voir pas du tout pour les config avec pas mal de RAM ...
Tu parles de la partition sda 8 de 13 GB ? Tu penses que ça peut arranger quelque chose ?
vladimir :
Et il se trouve sur quelle partition ce fichier ?
Sur la partition sda 1 .

Mageia 5 KDE 64 Bits
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -

ZEBULON Membre non connecté
-
- Voir le profil du membre ZEBULON
- Inscrit le : 30/10/2008
- Groupes :
XKomodor :
Quand je dis qu'il ne faut pas mélanger les installes sur le même disque
mais on m'écoute jamais.

Je crois que c'est toi qui as raison .
J'ai récupéré une vielle tour , je vais donc réalisé deux installations bien distinctes sur 2 disques séparés .
La nuit porte conseil

Merci quand meme à vous pour votre coup de main

Bonne journée
@+
Mageia 5 KDE 64 Bits
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -
HP Pavilion A6738fr - AMD Athlon 64 X2 4450e - 4 Go ram - DD 1 To - chipset graphique NVIDIA GeForce 6150 SE / / nForce 430 - ATI Radeon HD 3650 -

leuhmanu Membre non connecté
-
- Voir le profil du membre leuhmanu
- Inscrit le : 19/03/2011
- Groupes :
-
Équipe Mageia
-
Membre d'Honneur

XKomodor Membre non connecté
-
- Voir le profil du membre XKomodor
- Inscrit le : 08/01/2008
- Site internet
- Groupes :
-
Administrateur
leuhmanu :
ca pourrait pas marché le grub2 de ubuntu sur le mdr qui lance en chainloader le grub de mageia ?
Moi aussi Ubuntu c'est MDR voir PTMDR

Merci


leuhmanu Membre non connecté
-
- Voir le profil du membre leuhmanu
- Inscrit le : 19/03/2011
- Groupes :
-
Équipe Mageia
-
Membre d'Honneur

Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie