PDA

View Full Version : [ubuntu] Install Ubuntu 10.10 completely



TedinOz
January 6th, 2011, 07:26 PM
I have been using Ubuntu for a week now and am completely sold! I am running dual boot with Windows Vista and have removed all my info from Vista into an external hard drive storage ready to install into Ubuntu and am now ready to completely install Ubuntu and remove Windows from my hard drive. My question is, how exactly do I do that? I'm guessing that if I re-run the install CD I will be able to reinstall it on it's own but at the same time will that wipe out all that I have done on my initial dual boot install and have to start over? Is this correct or is there an alternative way to do this and save the input I have made so far?...bearing in mind that I am pretty inexperienced in the ways of IT and would prefer a simplified 'follow the prompts' method.

However I do this, my main objective is to allocate my whole hard drive to Ubuntu (never want to go back to Windows), and this is where I need to be careful I think, as I am not yet proficient in creating or altering partitions. I remember when I first did the dual install that I allocated 17Gb (I think) to Ubuntu but now I am ready to make the change I want to maximise the storage in my new Ubuntu.

If a complete new install is the best way (or only) way to go I can live with that but I just want to be careful that I don't muck up so if anyone can guide me on this please, that would be great.

Red Raven
January 6th, 2011, 07:43 PM
I'm pretty new, but i may be able to help (I just had to do something similarly). Just go into Gparted partition editor, and delete all the partitions involving windows. then format all the new unallocated space (im not sure what the best thing to format it to is). formating will erase it all. then you should be able to right click in the Linux partition and then click resize. add all the available space to the partition (or if you want to leave some as unallocated you can). if you don't have Gparted, just run sudo apt-get Gparted in the terminal. Again, im new, so you may want to get someone with more experience to confirm. but im pretty sure that's what i did.

Runckle
January 6th, 2011, 07:59 PM
Slow down! wowww! Hold your horses...Ubuntu being the lovely thing it is is fine but you have a dual boot!!!If anything goes wrong you can refer to the other...Best of both worlds...
Take it easy and take several days over to think about it.
Don't get over excited...leads to trouble.
Relax sit back and think it out...

A_M_S
January 6th, 2011, 08:04 PM
To some background about HD partitions info you may find this link (http://www.linuxfromscratch.org/lfs/view/stable/chapter02/introduction.html) useful

wilee-nilee
January 6th, 2011, 08:11 PM
I have been using Ubuntu for a week now and am completely sold! I am running dual boot with Windows Vista and have removed all my info from Vista into an external hard drive storage ready to install into Ubuntu and am now ready to completely install Ubuntu and remove Windows from my hard drive. My question is, how exactly do I do that? I'm guessing that if I re-run the install CD I will be able to reinstall it on it's own but at the same time will that wipe out all that I have done on my initial dual boot install and have to start over? Is this correct or is there an alternative way to do this and save the input I have made so far?...bearing in mind that I am pretty inexperienced in the ways of IT and would prefer a simplified 'follow the prompts' method.

However I do this, my main objective is to allocate my whole hard drive to Ubuntu (never want to go back to Windows), and this is where I need to be careful I think, as I am not yet proficient in creating or altering partitions. I remember when I first did the dual install that I allocated 17Gb (I think) to Ubuntu but now I am ready to make the change I want to maximise the storage in my new Ubuntu.

If a complete new install is the best way (or only) way to go I can live with that but I just want to be careful that I don't muck up so if anyone can guide me on this please, that would be great.

First lets make sure we understand your definition of dual boot. Is the Ubuntu installed a Wubi to start with=you installed from a live windows environment. Or did you boot the cd and partitioned space for it, and your using the grub menu to dual boot. Not the windows bootloader to get to the grub menu to get to Ubuntu.

Do this it will answer a lot of questions in the what is where of your set up. So from a booted live Ubuntu cd or thumbdrive lets see the bootscript read out; in my signature just click on it and follow the instructions. Come back to the thread and click on the # in the reply panel this makes code tags paste all the text in between.

A snippet/screen shot of the disk manager or screen shot of gparted in Ubuntu would be a good start, at the least.

TedinOz
January 6th, 2011, 08:36 PM
I'm pretty new, but i may be able to help (I just had to do something similarly). Just go into Gparted partition editor, and delete all the partitions involving windows. then format all the new unallocated space (im not sure what the best thing to format it to is). formating will erase it all. then you should be able to right click in the Linux partition and then click resize. add all the available space to the partition (or if you want to leave some as unallocated you can). if you don't have Gparted, just run sudo apt-get Gparted in the terminal. Again, im new, so you may want to get someone with more experience to confirm. but im pretty sure that's what i did.

Thanks for this. I guess this is where my novice status really shows and I am a bit nervous about proceeding with your guide without being absolutely sure. So I hope you don't mind if I put a screen capture here of what I get when opening Gparted because I am unsure how to proceed in relation to you comments above.


Gparted.png (http://ubuntuforums.org/attachment.php?attachmentid=180305&stc=1&d=1294341941)

From this how do I identify which partitions involve windows? I can see how to delete but here that option only applies to /dev/sda1 and 3. /dev/sda2 is locked and can't be deleted. From there however I admit I am lost with regard reformatting and resizing. Maybe a new install with the CD is a better option for me with my limited knowledge, but will that work?

wilee-nilee
January 6th, 2011, 08:44 PM
So please be careful other posters here in just giving a idea when we are talking about somebodies operating system. Do not make a assumption of a fix, gather the facts, then proceed.

OP you have a wubi install to begin with, you should be dual booting to begin with, in a partitioned setup, not a wubi, in order to have a full understanding of Ubuntu. You want to make sure what ever you have saved, will work in Linux. The operating systems are totally different, are you with me here. I would say ignore the previous posts as they are based on no information, but we now know you have a wubi setup, this should of been at the top of the information you gave to begin with.

TedinOz
January 6th, 2011, 08:50 PM
First lets make sure we understand your definition of dual boot. Is the Ubuntu installed a Wubi to start with=you installed from a live windows environment. Or did you boot the cd and partitioned space for it, and your using the grub menu to dual boot. Not the windows bootloader to get to the grub menu to get to Ubuntu.

Do this it will answer a lot of questions in the what is where of your set up. So from a booted live Ubuntu cd or thumbdrive lets see the bootscript read out; in my signature just click on it and follow the instructions. Come back to the thread and click on the # in the reply panel this makes code tags paste all the text in between.

A snippet/screen shot of the disk manager or screen shot of gparted in Ubuntu would be a good start, at the least.

I installed from the CD not Wubi so I am able to sign into Ubuntu or Windows from start up so I guess I partitioned space for it. A screen shot of gparted was attached to the reply to Red Raven above but I am lost as to what you are asking here about bootscript I'm sorry.. " So from a booted live Ubuntu cd or thumbdrive lets see the bootscript read out; in my signature just click on it and follow the instructions" Where do I find 'my signature to follow this process? I am ok with with posting between code tags here
Thanks for your involvement.

wilee-nilee
January 6th, 2011, 08:56 PM
I installed from the CD not Wubi so I am able to sign into Ubuntu or Windows from start up so I guess I partitioned space for it. A screen shot of gparted was attached to the reply to Red Raven above but I am lost as to what you are asking here about bootscript I'm sorry.. " So from a booted live Ubuntu cd or thumbdrive lets see the bootscript read out; in my signature just click on it and follow the instructions" Where do I find 'my signature to follow this process? I am ok with with posting between code tags here
Thanks for your involvement.

Here is the conundrum, because you are a new user you don't understand. I helped red-raven get setup with a partitioned dual boot last week they are a new user doing quite well, but to quick on the advice in this area.

If you look at the gparted post it shows only ntfs partitions that is a wubi install, here is a picture of a real dual boot on my gparted. Basically I'm trying to protect you from yourself here in that you understand. You will notice that the Ubuntu is in ext4 partitions.
180306

Hippytaff
January 6th, 2011, 08:56 PM
If you download and run the script found here - http://sourceforge.net/projects/bootinfoscript/
it will generate a results.txt document which will detail the boot setup you have and clear up any confusion about Wubi (ubuntu installed inside windows) or a real dual boot. :-)

Then you can get relevant advice as to how to proceed ;-)

Edit -> I too was over eager with some advice a while back :? - Wilee-Nilee is right to suggest working out the lay of the land before proceeding :-)

wilee-nilee
January 6th, 2011, 08:56 PM
I installed from the CD not Wubi so I am able to sign into Ubuntu or Windows from start up so I guess I partitioned space for it. A screen shot of gparted was attached to the reply to Red Raven above but I am lost as to what you are asking here about bootscript I'm sorry.. " So from a booted live Ubuntu cd or thumbdrive lets see the bootscript read out; in my signature just click on it and follow the instructions" Where do I find 'my signature to follow this process? I am ok with with posting between code tags here
Thanks for your involvement.

Here is the conundrum, because you are a new user you don't understand. I helped red-raven get setup with a partitioned dual boot last week they are a new user doing quite well, but to quick on the advice in this area. You know my IRC nick red-raven correct, don't mention it here though.

If you look at the gparted post it shows only ntfs partitions that is a wubi install, here is a picture of a real dual boot on my gparted. Basically I'm trying to protect you from yourself here in that you understand. You will notice that the Ubuntu is in ext4 partitions.
180306

TedinOz
January 6th, 2011, 08:57 PM
So please be careful other posters here in just giving a idea when we are talking about somebodies operating system. Do not make a assumption of a fix, gather the facts, then proceed.

OP you have a wubi install to begin with, you should be dual booting to begin with, in a partitioned setup, not a wubi, in order to have a full understanding of Ubuntu. You want to make sure what ever you have saved, will work in Linux. The operating systems are totally different, are you with me here. I would say ignore the previous posts as they are based on no information, but we now know you have a wubi setup, this should of been at the top of the information you gave to begin with.

No I don't have a Wubi set up as I said above and I am cautious about proceeding until I feel I know what I am doing. Thanks for you advice re transferring files from Windows...I have tested these from the external harddrive and they all function well in Ubuntu. I am comitted to leaving Windows...my system there needs a lot of repair which I am not capable of doing, and I really do like Ubuntu.

wilee-nilee
January 6th, 2011, 09:03 PM
No I don't have a Wubi set up as I said above and I am cautious about proceeding until I feel I know what I am doing. Thanks for you advice re transferring files from Windows...I have tested these from the external harddrive and they all function well in Ubuntu. I am comitted to leaving Windows...my system there needs a lot of repair which I am not capable of doing, and I really do like Ubuntu.

Look at my gparted yes you have a wubi installation. You are being helped by a user who knows this, unless you have a HD that is not showing in you screenshot.
In the top right corner of gparted is a dropdown to show all the HD's. gparted doesn't show all of them in one screen like the disk manager in windows.

As suggested by myself and hippytaff you need to run the bootscript here if you want accurate help or confirm the one HD.

TedinOz
January 6th, 2011, 09:03 PM
Here is the conundrum, because you are a new user you don't understand. I helped red-raven get setup with a partitioned dual boot last week they are a ne user doing quite well, but to quixck on the advice in this area.

If you look at the gparted post it shows only ntfs partitions that is a wubi install, here is a picture of a real dual boot on my gparted. Basically I'm trying to protect you from yourself here in tha you understand. You will notice that the Ubuntu is in ext4 partitions.
180306
Yes I can see the difference so I guess I did do a wubi install but certainly not knowing that I did. I apologise for my ignorance. Allowing for that I am still not sure where to go from here.

wilee-nilee
January 6th, 2011, 09:07 PM
Yes I can see the difference so I guess I did do a wubi install but certainly not knowing that I did. I apologise for my ignorance. Allowing for that I am still not sure where to go from here.

Hey no problem.:) as you might be realising now, it is important to not just take anybodies advice. They're a lot of users on this forum who are willing to give advice without the proper background and information, be careful in this advice.

You can actually move that wubi to a partition if you want to, but I suggest that maybe setting up a real partitioned dual boot at first is the more tried and true method, in that you will have both while you get the hang of Ubuntu and Linux. We can remove Vista at some point but I would give yourself some time to adjust with a real dual boot first.

TedinOz
January 6th, 2011, 09:09 PM
Look at my gparted yes you have a wubi installation. You are being helped by a user who knows this, unless you have a HD that is not showing in you screenshot.
In the top right corner of gparted is a dropdown to show all the HD's. gparted doesn't show all of them in one screen like the disk manager in windows.

As suggested by myself and hippytaff you need to run the bootscript here if you want accurate help or confirm the one HD.

Thank you. I can see that you know what you are doing no question. I will do the bootscript and post it back.

TedinOz
January 6th, 2011, 09:14 PM
If you download and run the script found here - http://sourceforge.net/projects/bootinfoscript/
it will generate a results.txt document which will detail the boot setup you have and clear up any confusion about Wubi (ubuntu installed inside windows) or a real dual boot. :-)

Then you can get relevant advice as to how to proceed ;-)

Edit -> I too was over eager with some advice a while back :? - Wilee-Nilee is right to suggest working out the lay of the land before proceeding :-)

Thank you! You and Wilee-Nilee are being extremely helpful. I will post the bootscript as soon as I can.

wilee-nilee
January 6th, 2011, 09:15 PM
Thank you. I can see that you know what you are doing no question. I will do the bootscript and post it back.

So does hippytaff, and post #3 was good advice as well. There are a lot of people on the forum that know this it is just making sure your talking with them.:)

wilee-nilee
January 6th, 2011, 09:18 PM
To some background about HD partitions info you may find this link (http://www.linuxfromscratch.org/lfs/view/stable/chapter02/introduction.html) useful

Is this your own website? If so there are better explanations that are provided. If your pushing your own website, make sure you get a understanding of the users level of understanding first please, otherwise you are cluttering when people who will go to the lengths of confirmation will make sure that the user understands.

TedinOz
January 6th, 2011, 11:35 PM
I have downloaded boot_info_script055.sh as here....

boot info download.jpg (http://ubuntuforums.org/attachment.php?attachmentid=180321&stc=1&d=1294352264)

Obviously I have to save it somehow for the Terminal command to work but when I try to Save As...(the only option) I get this message..

.Error message.png (http://ubuntuforums.org/attachment.php?attachmentid=180322&stc=1&d=1294352438)

When I click Replace within this error message I get this message at the top of the boot_info_script window.

2nd Error message.png (http://ubuntuforums.org/attachment.php?attachmentid=180323&stc=1&d=1294352611)

I don't seem to have a plain text writer in the system so again my ignorance is showing and I even need help with this small task :( I have found Pandoc...general markup converter in the system downloads..do I need to install that to save the file?

I have to leave here for a few hours but if you guys can offer some more guidance so I can get the bootscript done for you I will appreciate it greatly and get back to you when I am online again.

Thanks

wilee-nilee
January 7th, 2011, 12:09 AM
So you need to boot a live Ubuntu cd to run this script. You download the script from the link, go to downloads then drag it to the desktop in Ubuntu. Then run this command just copy and paste it to the Ubuntu terminal. The bootscript link in my signature has this same command, I know it is confusing it was for me the first time so, feel free to ask questions.

sudo bash ~/Desktop/boot_info_script*.sh

You mentioned already that you have backed up the needed stuff you want from Vista, what exactly is that?

As it is shrinking Vista with it being rather full, can be done, but it is really at its limit for prudent/efficient use now. But whenever you do this with a MS partition you have to be prepared, in that it should be defragged, and a chkdsk /r run probably, beforehand, and if you have stuff saved externally that is not system stuff for Vista but media, then removing it from Vista first would be prudent. This removal would be done before the defragging and running a chkdsk /r

If you really think you have Vista backed up and can confirm that it all runs on a Live Ubuntu cd, and you don't need any Vista=MS native software, you could just wipe it and install Ubuntu, but I think a dual boot to begin with is a better idea. I'm not sure you are aware of the difference in the operating systems. You may be sorry that you removed Vista after it is gone I'm not sure.:)

TedinOz
January 7th, 2011, 03:00 AM
#!/bin/bash
VERSION=0.55
DATE="February 15th, 2010"
#to use this script:
#
# sudo bash boot_info_script055.sh
#or
# su -
# bash boot_info_script055.sh
#
#
### last-modified
#
#author Ulrich Meierfrankenfeld (aka meierfra.)
# with contributions from caljohnsmith
# (both members of ubuntuforums.org)
# and Gert Hulselmans
#
#hosted at: http://sourceforge.net/projects/bootinfoscript/
#
#The birth of the boot info script:
# http://ubuntuforums.org/showthread.php?t=837791
#
#Looks at all MBRs and identifies the boot loader.
# For Grub and Supergrub: displays the controlling partition.
# If the MBR is unknown, displays the whole MBR.
#Looks at all partitions:
# Determines their type
# Identifies their boot sectors.
# For grub: displays the controlling partition and the offset
# of the stage2 file as recorded in the boot sector.
# For NTFS and Fat, examines the Boot Parameter Block for errors.
# Identifies the operating system
# Lists boot programs.
# Displays the partition table
# Displays "blkid -c /dev/null"
# Finds boot directories and displays their contents.
# Looks in "/" and "NST" for bootpart codes and displays the offset
# and boot drive it is trying to chainload
# Looks on "/" and "/NST" for stage1 files and displays the offset
# and bootdrive of the stage 2 files is trying to chainload.
# Displays boot configuration files.
# Is able to search LVM partitions if the LVM2 package is install
# ("apt-get install lvm2" in debian based distros)
# Is able to search Linux Software Raid partitions (MD Raids) if
# the "mdadm" package is installed.
# If dmraid is installed, searches all raid drives, detected by dmraid.
#All information is written to the file "RESULTS.txt" in the
# same folder as the script. But when run from /bin, /sbin, /usr/bin,
# or other system folder the file "RESULTS.txt" is written to the
# home directory of the user who runs this script.


###### Display version and date of the script when asked:
# ./boot_info_script -v
# ./boot_info_script -V
# ./boot_info_script --version
if [ x"$1" = x'-v' ] || [ x"$1" = x'-V' ] || [ x"$1" = x'--version' ] ;
then
echo "boot_info_script version $VERSION"
echo "Dated , $DATE"
exit 0
fi


###### Check if all necessary programs are available

Programs="
awk
basename
blkid
cat
dd
dirname
expr
fdisk
filefrag
fold
grep
hexdump
losetup
ls
mkdir
mount
pwd
rm
sed
sort
umount
wc
whoami"

Check_Prog=1;

for Program in $Programs ; do

if ! type $Program > /dev/null 2>&1 ; then
echo \"$Program\" could not be found. >&2
Check_Prog=0;
fi
done

if [ $Check_Prog -eq 0 ];
then
echo "Please install the missing program(s) and run boot_info_script again." >&2
exit 1;
fi;




###### check whether user is root

if [ $(whoami) != "root" ];
then
echo Please use \"sudo\" or become \"root\" to run this script. >&2;
exit 1;
fi;

######## List of folders which might contained files used for chainloading
Boot_Codes_Dir="
/
/NST/
"
################# List of folders whose content will be displayed
################# Since all the important files in these folder are already displayed
################# it doesn't seem necessary to display the contents of these folders.
#Boot_Dir="
# /Boot
# /boot
# /BOOT
# /boot/grub
# /grub
# /ubuntu/disks
# /ubuntu/disks/boot/
# /ubuntu/disks/boot/grub
# /ubuntu/disks/install/boot
# /ubuntu/disks/boot/grub
# /NST
# "


############## List of files whose names will be displayed (if they exists)
Boot_Prog_Normal="
/bootmgr /BOOTMGR
/boot/bcd /BOOT/bcd /Boot/bcd /boot/BCD /BOOT/BCD /Boot/BCD
/Windows/System32/winload.exe /WINDOWS/system32/winload.exe /WINDOWS/SYSTEM32/winload.exe /windows/system32/winload.exe
/Windows/System32/Winload.exe /WINDOWS/system32/Winload.exe /WINDOWS/SYSTEM32/Winload.exe /windows/system32/Winload.exe
/grldr /GRLDR
/ntldr /NTLDR
/NTDETECT.COM /ntdetect.com
/NTBOOTDD.SYS /ntbootdd.sys
/wubildr.mbr /ubuntu/winboot/wubildr.mbr
/wubildr /ubuntu/winboot/wubildr
/ubuntu/disks/root.disk
/ubuntu/disks/home.disk
/ubuntu/disks/swap.disk
/core.img /grub/core.img /boot/grub/core.img
/boot/map /map
/DEFAULT.MNU /default.mnu
/IO.SYS /io.sys
/MSDOS.SYS /msdos.sys
/COMMAND.COM /command.com
"
Boot_Prog_Fat="
/bootmgr
/boot/bcd
/Windows/System32/winload.exe
/grldr
/ntldr
/NTDETECT.COM
/NTBOOTDD.SYS
/wubildr.mbr
/wubildr
/ubuntu/winboot/wubildr
/ubuntu/winboot/wubildr.mbr
/ubuntu/disks/root.disk
/ubuntu/disks/home.disk
/ubuntu/disks/swap.disk
/core.img /grub/core.img /boot/grub/core.img
/boot/map /map
/DEFAULT.MNU
/IO.SYS
/MSDOS.SYS
/COMMAND.COM
"



############### List of files whose contents will be displayed.
Boot_Files_Normal="
/boot/grub/menu.lst /grub/menu.lst /NST/menu.lst /menu.lst
/grub.cfg /grub/grub.cfg /boot/grub/grub.cfg
/ubuntu/disks/boot/grub/menu.lst /ubuntu/disks/install/boot/grub/menu.lst /ubuntu/winboot/menu.lst
/boot/grub/grub.conf /grub/grub.conf /grub.conf
/boot.ini /BOOT.INI
/etc/fstab
/etc/lilo.conf /lilo.conf
"

Boot_Files_Fat="
/boot/grub/menu.lst /grub/menu.lst /NST/menu.lst /menu.lst
/grub.cfg /grub/grub.cfg /boot/grub/grub.cfg
/ubuntu/disks/boot/grub/menu.lst /ubuntu/disks/install/boot/grub/menu.lst /ubuntu/winboot/menu.lst
/boot/grub/grub.conf /grub/grub.conf /grub.conf
/boot.ini
/etc/fstab
/etc/lilo.conf /lilo.conf
"

############### List of files whose end point (in GB) will be displayed.
GrubError18_Files="
boot/grub/menu.lst grub/menu.lst menu.lst /NST/menu.lst
ubuntu/disks/boot/grub/menu.lst
boot/grub/grub.conf grub/grub.conf grub.conf
grub.cfg grub/grub.cfg boot/grub/grub.cfg
core.img grub/core.img boot/grub/core.img
boot/grub/stage2 grub/stage2 stage2
boot/vmlinuz* vmlinuz* ubuntu/disks/boot/vmlinuz*
boot/initrd* initrd* ubuntu/disks/boot/initrd*
boot/kernel*.img
initramfs* boot/initramfs*
"


####### Directory containing the script.

Dir=$(cd "$(dirname "$0")";pwd);

# Set $Dir to the home folder of the current user if the script is in one of the
# system folders
# This allows placement of the script in /bin, /sbin, /usr/bin, ...
# while still having a normal location to write the output file.
for systemdir in /bin /boot /cdrom /dev /etc /lib /lost+found /opt /proc /sbin /selinux /srv /sys /usr /var; do
if [ $(expr "$Dir" : $systemdir) -ne 0 ]; then
Dir="$HOME"
break
fi
done

######## To avoid overwriting existing files, look for a non-existing file
######## RESULT.txt RESULTS1.txt RESULTS2.txt ...

LogFile="${Dir}/RESULTS"
while ( [ -e "${LogFile}${j}.txt" ] )
do
if [ "j" = "" ]; then j=0; fi;
j=$((j+1));
wait;
done
LogFile="${LogFile}${j}.txt" #### The RESULTS file.

###### Redirect stdout to RESULT File
#exec 6>&1
#exec > "$LogFile"

########### Create previously non-existing folder of the form
########## /tmp/BootInfo /tmp/BootInfo1, /tmp/BootInfo2 ...

Folder=/tmp/BootInfo
i=0;
while (! mkdir ${Folder}${i} 2>/dev/null)
do
i=$((i+1));
wait;
done
Folder=${Folder}${i}

cd $Folder
Log=$Folder/Log #File to record the summary.
Log1=$Folder/Log1 # Most of the information which is not part of
#the summary is recorded in this file.
Error_Log=$Folder/Error_Log # File to catch all unusal Standar Errors
Trash=$Folder/Trash # File to catch all usual Standard Errors
# these messagges will not be included in the RESULTS
Mount_Error=$Folder/Mount_Error # File to catch Mounting Errors
Unknown_MBR=$Folder/Unknown_MBR # File to record all unknown MBR and Boot sectors.
Tmp_Log=$Folder/Tmp_Log # File to temporarily hold some information.
PartitionTable=$Folder/PT # File to store the Partition Table
FakeHardDrives=$Folder/FakeHD # File to list devices which seem to have no corresponding drive.
BLKID=$Folder/BLKID # File to store the output of blkid
exec 2>$Error_Log #Redirect all standard error to the file Error_Log

All_Hard_Drives=$(ls /dev/hd? /dev/sd? 2>>$Trash ); ### List of all Hard drives.


if type dmraid >>$Trash 2>>$Trash;
then
InActiveDMRaid=$(dmraid -si -c);
if [ "$InActiveDMRaid" = "no raid disks" ];
then
InActiveDMRaid="";
fi;
if [ "$InActiveDMRaid" != "" ];
then
dmraid -ay $InActiveDMRaid >>$Trash;
fi;
if [ "$(dmraid -sa -c)" != "no raid disks" ];
then
All_DMRaid=$(dmraid -sa -c|awk '{print "/dev/mapper/"$0}');
All_Hard_Drives=${All_Hard_Drives}" "${All_DMRaid};
fi;
fi;

####Arrays to hold information about Partitions: name, starting sector, ending sector, size in sector, Partition Type, Filesystem typ, UUID, Kind(Logical, Primary, Extended), HardDrive, boot flag, parent (for logical partitions), label, system(the partition id according the partition table), the device associate to the partition.

declare -a NamesArray StartArray EndArray SizeArray TypeArray FileArray UUIDArray KindArray DriveArray BootArray ParentArray LabelArray SystemArray DeviceArray


#####Arrays to hold information about the harddrives.
declare -a HDName FirstPartion LastPartition HDSize HDMBR HDHead HDTrack HDCylinder HDPT HDStart HDEnd HDUUID;

####Array for Hard drives formated as Filesystem
declare -a FilesystemDrives;


PI=-1 ## Counter for the identification number of a partition. (each partition gets unique number)
HI=0 ## Counter for the identification number of a hard drive. (each hard drive gets unique number)
PTFormat='%-10s %4s%14s%14s%14s %3s %s\n'; ### standard format to use for Partition table,


#### fdisk -s seems to malfunction sometimes. So use sfdisk -s if available
function fdisks (){
if type sfdisk >>$Trash 2>>$Trash
then
sfdisk -s "$1" 2>>$Trash;
else
fdisk -s "$1" 2>>$Trash;
fi;
}



##### A function which checks whether a file is on a mounted partition
MountPoints=$(mount | grep -e ^/dev |awk '{print $3}' |grep -v ^/$); ##list of mountpoints for devices

function FileNotMounted (){
local File=$1 curmp=$2;
for mp in $MountPoints;
do
if [ $(expr match "$File" "$mp""/" ) -ne 0 ] && [ "$mp" != "$curmp" ]
then
return 1;
fi;
done;
return 0;
}

##### A function which converts the two digit hexcode of a partition type
# The following list is taken from sfdisk -T and
# http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
# work in progress
function HexToSystem () {
local type=$1 system
case $type in
0) system="Empty";;
1) system="FAT12";;
2) system="XENIX root";;
3) system="XENIX usr";;
4) system="FAT16 <32M";;
5) system="Extended";;
6) system="FAT16";;
7) system="HPFS/NTFS";;
8) system="AIX";;
9) system="AIX bootable";;
a) system="OS/2 Boot Manager";;
b) system="W95 FAT32";;
c) system="W95 FAT32 (LBA)";;
e) system="W95 FAT16 (LBA)";;
f) system="W95 Ext d (LBA)";;
10) system="OPUS";;
11) system="Hidden FAT12";;
12) system="Compaq diagnostics";;
14) system="Hidden FAT16 <32M";;
16) system="Hidden FAT16";;
17) system="Hidden HPFS/NTFS";;
18) system="AST SmartSleep";;
1b) system="Hidden W95 FAT32";;
1c) system="Hidden W95 FAT32 (LBA)";;
1e) system="Hidden W95 FAT16 (LBA)";;
24) system="NEC DOS";;
27) system="Hidden HPFS/NTFS";;
32) system="NOS";;
35) system="JFS on OS2";;
38) system="Theos";;
39) system="Plan 9";;
3a) system="Theos";;
3b) system="Theos Extended";;
3c) system="PartitionMagic recovery";;
40) system="Venix 80286";;
41) system="PPC PReP Boot";;
42) system="SFS";;
45) system="Boot-US boot manager";;
4d) system="QNX4.x";;
4e) system="QNX4.x 2nd part";;
4f) system="QNX4.x 3rd part";;
50) system="OnTrack DM";;
51) system="OnTrack DM6 Aux1";;
52) system="CP/M";;
53) system="OnTrack DM6 Aux3";;
54) system="OnTrackDM6";;
55) system="EZ-Drive";;
56) system="Golden Bow";;
5c) system="Priam Edisk";;
61) system="SpeedStor";;
63) system="GNU HURD or SysV";;
64) system="Novell Netware 286";;
65) system="Novell Netware 386";;
70) system="DiskSecure Multi-Boot";;
75) system="PC/IX";;
80) system="Old Minix";;
81) system="Minix / old Linux";;
82) system="Linux swap / Solaris";;
83) system="Linux";;
84) system="OS/2 hidden C: drive";;
85) system="Linux extended";;
86) system="NTFS volume set";;
87) system="NTFS volume set";;
88) system="Linux plaintext";;
8e) system="Linux LVM";;
93) system="Amoeba/Accidently Hidden Linux";;
94) system="Amoeba BBT";;
9f) system="BSD/OS";;
a0) system="IBM Thinkpad hibernation";;
a5) system="FreeBSD";;
a6) system="OpenBSD";;
a7) system="NeXTSTEP";;
a8) system="Darwin UFS";;
a9) system="NetBSD";;
ab) system="Darwin boot";;
af) system="HFS";;
b0) sytem="Boot Star";;
b1 | b2 | b3 | b4 | b6) system="SpeedStor";;
b7) system="BSDI fs";;
b8) system="BSDI swap";;
bb) system="Boot Wizard hidden";;
bc) system="Acronis BackUp";;
be) system="Solaris boot";;
bf) system="Solaris";;
c0) system="CTOS";;
c1) system="DRDOS/sec (FAT-12)";;
c2) system="Hidden Linux/PowerBoot";;
c3) system="Hidden Linux Swap /PowerBoot";;
c4) system="DRDOS/sec (FAT-16 < 32M)";;
c6) system="DRDOS/sec (FAT-16)";;
c7) system="Syrinx";;
cb) system="DR-DOS FAT32 (CHS)";;
cc) system="DR-DOS FAT32 (LBA)";;
cd) system="CTOS Memdump?";;
ce) system="DR-DOS FAT16X (LBA)";;
cf) system=" DR-DOS EXT DOS (LBA)";;
d0) system=" REAL/32 secure big partition";;
da) system="Non-FS data";;
db) system="CP/M / CTOS / ...";;
dd) system="Dell Media Direct";;
de) system="Dell Utility";;
df) system="BootIt";;
e1) system="DOS access";;
e3) system="DOS R/O";;
e4) system="SpeedStor";;
eb) system="BeOS fs";;
ee) system="GPT";;
ef) system="EFI (FAT-12/16/32)";;
f0) system="Linux/PA-RISC boot";;
f1) system="SpeedStor";;
f4) system="SpeedStor";;
f2) system="DOS secondary";;
fb) system="VMware VMFS";;
fc) system="VMware VMKCORE";;
fd) system="Linux raid autodetect";;
fe) system="LANstep";;
ff) system="BBT";;
*) system="Unknown";;
esac;
echo $system;
}

##### Function to convert GPT's Partition Type.
#### ABCDEFGH-IJKL-MNOP-QRST-UVWXYZabcdef is stored as
#### GHEFCDAB-KLIJ-OPMN-QRST-UVWXYZabcdef (without the dashes)
function UUIDToSystem() {
local type=$1 system
case $type in
00000000000000000000000000000000) system="Empty";;
41ee4d02e733d3119d690008c781f39f) system="MBR partition scheme";;
28732ac11ff8d211ba4b00a0c93ec93b) system="System/Boot Partition";;
a2a0d0ebe5b9334487c068b6b72699c7) system="Linux or Data";;
6dfd5706aba4c44384e50933c84b4f4f) system="Linux Swap";;
16e3c9e35c0bb84d817df92df00215ae) system="Microsoft Windows";;
79d3d6e607f5c244a23c238f2a3df928) system="LVM";;
005346480000aa11aa1100306543ecac) system="HFS+";;
4861682149646f6e744e656564454649) system="Bios Boot Partition";;
*) system="-";
echo Unknown GPT Partiton Type>>$Unknown_MBR;
echo $type >>$Unknown_MBR;;
esac;
echo $system;
}

##### Function which insert a comma every third digit of a number
function InsertComma () {
echo $1 |sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'
}

##### Function to read 4 bytes starting at $1 of device $2 and convert to decimal.
function Read4Bytes () {
echo $(hexdump -v -s $1 -n 4 -e '4 "%u"' $2);
}

##### Function to read 8 bytes starting at $1 of device $2 and convert to decimal.
function Read8Bytes () {
local start=$1 device=$2;
local first4 second4;
first4=$(hexdump -v -s $start -n 4 -e '4 "%u"' $device);
second4=$(hexdump -v -s $((start+4)) -n 4 -e '4 "%u"' $device);
echo $((second4*1073741824+first4));
}

#### Functions to pretty print blkid output ######
BlkidFormat='%-16s %-38s %-10s %-30s\n'
BlkidTag (){
echo $(blkid -c /dev/null -s $2 -o value $1 2>>$Trash)
}

PrintBlkid (){
local part=$1;
if [ "$(blkid -c /dev/null $part 2>$Tmp_Log)" != "" ];
then
printf "$BlkidFormat" "$part" "$(BlkidTag $part UUID)" "$(BlkidTag $part TYPE)" "$(BlkidTag $part LABEL)">>$BLKID;
else blkid -p "$part" 2>&1 |grep "$part" >>$BLKID; #blkid -p is not avaible all all systems. This contructs makes sure the "usage" message is not displayed, but catches the "ambivalent" error.
fi;
}


## Reads and display the a partition table of an extended partitons ###########
############# and check the partition check for errors #####################
# This function can be applied iteratively to read the extended partiton table
# Variable 1: HI of hard drive
# Variable 2: Start Sector of the extended Partition,
# Variable 3: Number of partitions in table (4 for regular PT, 2 for logical
# Variable 4: File for storing the partitions table.
# Variable 5: Format to use for displaying the partition table.
# Variable 6: PI of the primary extended partition containing the extended partition.
# ( equals "" for hard drive)
# Variable 7: Last Linux Index assigned (the number in sdXY).

ReadPT (){
local HI=$1 StartEx=$2 N=$3 PT_file=$4 format=$5 EPI=$6 Base_Sector
local LinuxIndex=$7 boot size start end type drive system;
local i=0 boot_hex label limit MBRSig
drive=${HDName[$HI]};
limit=${HDSize[$HI]};
$(dd if=$drive skip=$StartEx of=$Tmp_Log count=1 2>>$Trash);
MBRSig=$(hexdump -v -s 510 -n 2 -e '"%x"' $Tmp_Log);
[[ "$MBRSig" != "aa55" ]] && echo Invalid MBR Signature found >> $PT_file;
if [[ $StartX -lt $limit ]];
then # set Base_Sector to 0 for HardDrive, and to the start
# sector of primary extended partition otherwise
[[ "$EPI" = "" ]] && Base_Sector=0 || Base_Sector=${StartArray[$EPI]}
for (( i=0; i < N; i++ ));
do
$(dd if=$drive skip=$StartEx of=$Tmp_Log count=1 2>>$Trash);
boot_hex=$(hexdump -v -s $((446+16*i)) -n 1 -e '"%02x"' $Tmp_Log)
case $boot_hex in
00) boot=" ";;
80) boot="* ";;
*) boot="?";;
esac;
start=$(hexdump -v -s $((454+16*i)) -n 4 -e '4 "%u"' $Tmp_Log);
size=$(hexdump -v -s $((458+16*i)) -n 4 -e '4 "%u"' $Tmp_Log);
type=$(hexdump -v -s $((450+16*i)) -n 1 -e '4 "%x"' $Tmp_Log);
if [[ $size != 0 ]];
then
if [[ ( "$type" = "5" || "$type" = "f" ) && $Base_Sector != 0 ]];
then
start=$((start+Base_Sector)) #start sector of an extended partition is
# relative to the start sector of an primary extended partition.
if [[ $i = 0 ]];
then
echo "Extended partition linking to another extended partition" >>$PT_file;
fi;
ReadPT $HI $start 2 $PT_file "$format" $EPI $LinuxIndex;
else
((PI++))
if [[ "$type" = "5" || "$type" = "f" ]];
then
KindArray[$PI]="E";
else
start=$((start+StartEx)); #Start sector of a logical partition is
# relative to the start sector of directly assocated extented partition.
[[ $Base_Sector = 0 ]] && KindArray[$PI]="P" || KindArray[$PI]="L";
fi;
LinuxIndex=$((LinuxIndex+1));
end=$((start+size-1));
[[ "${HDPT[$HI]}" = "BootIt" ]] && label="${NamesArray[$EPI]}""_" || label=$drive;
system=$(HexToSystem $type)

printf "$format" "$label$LinuxIndex" "$boot" $(InsertComma $start) "$(InsertComma $end)" "$(InsertComma $size)" "$type" "$system" >> $PT_file;
NamesArray[$PI]="$label"$LinuxIndex;
StartArray[$PI]=$start;
EndArray[$PI]=$end;
TypeArray[$PI]=$type;
SystemArray[$PI]="$system";
SizeArray[$PI]=$size;
BootArray[$PI]="$boot";
DriveArray[$PI]=$HI;
ParentArray[$PI]=$EPI;
( [[ "$EPI" = "" ]] || [[ ${DeviceArray[$EPI]} != "" ]] ) && DeviceArray[$PI]=$drive$LinuxIndex;

if [[ "$type" = "5" || "$type" = "f" ]];
then
ReadPT $HI $start 2 $PT_file "$format" $PI 4;
fi;
fi;

elif [[ $Base_Sector != 0 && $i = 0 ]];
then
echo "Empty Partition">>$PT_file;
else
LinuxIndex=$((LinuxIndex+1));
fi;
done;
else
echo "EBR refers to a location outside the Hard drive" >>$PT_file;
fi;
}
############### Read partition table of type GPT (GUID, EFI)##########################
###### Variable 1: HI of hard drive
###### Variable 2: File to store the PartitionTable
function ReadEFI() {
local HI=$1 drive file=$2 Size N=0 i=0 format Label PRStart Start End Type Size System;
drive="${HDName[$HI]}";
format='%-10s %14s%14s%14s %s\n';
printf "$format" Partition Start End Size System >> $file;
HDStart[$HI]=$(Read8Bytes 552 $drive);
HDEnd[$HI]=$(Read8Bytes 560 $drive);
HDUUID[$HI]=$(hexdump -v -s 568 -n 16 -e '/1 "%02x"' $drive);
PRStart=$(Read8Bytes 584 $drive);
N=$(Read4Bytes 592 $drive);
PRStart=$((PRStart*512));
PRSize=$(Read4Bytes 596 $drive);
for (( i = 0; i< N; i++ ))
do
Type=$(hexdump -v -s $((PRStart+PRSize*i)) -n 16 -e '/1 "%02x"' $drive);
if [ "$Type" != "00000000000000000000000000000000" ];
then
((PI++))
Start=$(Read8Bytes $((PRStart+32+PRSize*i)) $drive);
End=$(Read8Bytes $((PRStart+40+PRSize*i)) $drive);
Size=$((End-Start+1));
System=$(UUIDToSystem $Type);
Label=$drive$((i+1));
printf "$format" "$Label" "$(InsertComma $Start)" "$(InsertComma $End)" "$(InsertComma $Size)" "$System" >>$file;
NamesArray[$PI]=$Label;
DeviceArray[$PI]=$Label;
StartArray[$PI]=$Start;
TypeArray[$PI]=$Type;
SizeArray[$PI]=$Size;
SystemArray[$PI]=$System;
EndArray[$PI]=$End;
DriveArray[$PI]=$HI;
KindArray[$PI]="P";
ParentArray[$PI]="";
fi;
done;
}

############### Read the Master Partition Table of BootIt NG##########################
###### Variable 1: HI of hard drive
###### Variable 2: File to store the MPT.
function ReadEMBR() {
local HI=$1 drive MPT_file=$2 Size N=0 i=0 BINGIndex Label Start End Type BINGUnknown format Size System StoredPI FirstPI=FirstPartition[$1] LastPI=$PI New;
drive="${HDName[$HI]}";
format='%-18s %4s%14s%14s%14s %3s %-15s %3s %2s\n';
printf "$format" Partition Boot Start End Size Id System Ind "?">> $MPT_file;
N=$(hexdump -v -s 534 -n 1 -e '"%u"' $drive);
while [[ $i -lt "$N" ]]
do
New=1;
BINGUnknown=$(hexdump -v -s $((541+28*i)) -n 1 -e '"%x"' $drive)
Start=$(hexdump -v -s $((542+28*i)) -n 4 -e '4 "%u"' $drive);
End=$(hexdump -v -s $((546+28*i)) -n 4 -e '4 "%u"' $drive);
BINGIndex=$(hexdump -v -s $((550+28*i)) -n 1 -e '"%u"' $drive);
Type=$(hexdump -v -s $((551+28*i)) -n 1 -e '"%x"' $drive);
Size=$((End-Start+1));
Label=$(hexdump -v -s $((552+28*i)) -n 15 -e '"%_u"' $drive| sed -e s/nul[^$]*//);
System=$(HexToSystem $Type);
printf "$format" "$Label" "-" "$(InsertComma $Start)" "$(InsertComma $End)" "$(InsertComma $Size)" "$Type" "$System" "$BINGIndex" "$BINGUnknown">>$MPT_file;
StoredPI=$PI;
for ((j = FirstPI; j<=LastPI; j++ ));
do
if (( ${StartArray[$j]} == $Start ));
then
PI=$j;
New=0;
break;
fi;
done;

if (( $New == 1 ));
then
((PI++));
StoredPI=$PI;
StartArray[$PI]=$Start;
TypeArray[$PI]=$Type;
SizeArray[$PI]=$Size;
SystemArray[$PI]=$System;
EndArray[$PI]=$End;
DriveArray[$PI]=$HI;
fi;
NamesArray[$PI]=$Label;

if [[ $Type = "f" || $Type = "5" ]];
then
KindArray[$PI]="E";
ParentArray[$PI]=$PI;
ReadPT $HI $Start 2 $MPT_file "$format" $PI 4 ;
else
KindArray[$PI]="P";
ParentArray[$PI]="";
fi;
PI=$StoredPI;
((i++));
done;
}

################# Check partition table for errors ################################
###
### This function checks whether any two partitions overlap
### and the logical partitions are inside the extended partition.
### Variable 1: PI of First partition to consider
### Variable 2: PI of Last Partition to consider
### Variable 3: File for the error messages.
### Variable 4: HI of containing hard drive
CheckPT () {
local first=$1 last=$2 file=$3; hi=$4;
local Si Ei Sj Ej Ki Kj i j k cyl track head cyl_bound sec_bound
cyl=${HDCylinder[$hi]};
track=${HDTrack[$hi]};
head=${HDHead[$hi]};
cyl_bound=$((cyl*track*head));
sec_bound=${HDSize[$hi]};
for (( i=$first; i <= last; i++ ));
do
Si=${StartArray[$i]};
Ei=${EndArray[$i]};
Ki=${KindArray[$i]};
Ni=${NamesArray[$i]};
if [[ "$Ei" -gt "$sec_bound" ]];
then
echo $Ni ends after the last sector of ${HDName[$hi]}>>$file;
elif [[ "$Ei" -gt "$cyl_bound" ]]
then
echo $Ni ends after the last cylinder of ${HDName[$hi]}>>$Trash;
fi;
if [[ $Ki = "L" ]];
then
k=${ParentArray[$i]};
Sk=${StartArray[$k]};
Ek=${EndArray[$k]};
Nk=${NamesArray[$k]};
[[ $Si -le $Sk || $Ei -gt $Ek ]] && echo the logical partition $Ni is not contained in the extended partition $Nk>>$file;
fi;
for (( j = i+1; j <= last; j++ ));
do
Sj=${StartArray[$j]};
Ej=${EndArray[$j]};
Kj=${KindArray[$j]};
Nj=${NamesArray[$j]};
[[ !( ( $Ki = "L" && $Kj = "E" ) || ( $Ki = "E" && $Kj = "L" ) ) && ( ( $Si -lt $Sj && $Sj -lt $Ei ) || ($Sj -lt $Si && $Si -lt $Ej ) )]] && echo $Ni overlaps with $Nj >>$file;
done;
done
}

################################################## ###########################################
########## Determine the embeded location of stage 2 in a stage 1 file,
########## look for the stage 2 and, if found, determine the
#########$ the location and the path of the embedded menu.lst

stage2_loc (){
local stage1=$1 hi;
offset=$(hexdump -v -s 68 -n 4 -e '4 "%u"' $stage1 2>>$Trash);
dr=$(hexdump -v -s 64 -n 1 -e '"%d"' $stage1);
pa="T"
Grub_Version="";
for hi in ${!HDName[@]};
do
hdd=${HDName[$hi]};
if [ $offset -lt ${HDSize[hi]} ];
then
tmp=$(dd if=$hdd skip=$offset count=1 2>>$Trash | hexdump -v -n 4 -e '"%x"');
if [[ "$tmp" = 3be5652 || "$tmp" = bf5e5652 ]]; ### If stage2 files was found.
then
dd if=$hdd skip=$((offset+1)) count=1 of=$Tmp_Log 2>>$Trash;
pa=$(hexdump -v -s 10 -n 1 -e '"%d"' $Tmp_Log);
stage2_hdd=$hdd;
Grub_String=$(hexdump -v -s 18 -n 94 -e '"%_u"' $Tmp_Log);
Grub_Version=$(echo $Grub_String|sed -e s/nul[^$]*//);
BL=$BL$Grub_Version;
menu=$(echo $Grub_String |sed -e s/[^\/]*// -e s/nul[^$]*//);
menu=${menu%% *};
fi;
fi;
done;
dr=$((dr-127))
Stage2_Msg=$(echo looks at sector $offset )
if [ "$dr" = 128 ];
then
Stage2_Msg=$(echo $Stage2_Msg of the same hard drive)
else
Stage2_Msg=$(echo $Stage2_Msg on boot drive \#$dr)
fi;
Stage2_Msg=$(echo $Stage2_Msg for the stage2 file);

if [ "$pa" = "T" ] #### no stage 2 file found.
then
Stage2_Msg=$(echo $Stage2_Msg, but no stage2 files can be found at this location.);
else
pa=$((pa+1))
Stage2_Msg=$(echo $Stage2_Msg. A stage2 file is at this location on $stage2_hdd. Stage2 looks on )
if [ "$pa" = 256 ];
then
Stage2_Msg=$(echo $Stage2_Msg the same partition)
else
Stage2_Msg=$(echo $Stage2_Msg partition \#$pa )
fi;
Stage2_Msg=$(echo $Stage2_Msg for $menu.)
fi;
}
################################################## #####################################

################################################## ###########################################
########## Determine the embeded location of core.img for a Grub2 boot.img file,
########## look for the core.img and, the path of the Grub Folder.
################################################## ###########################

core_loc (){
local stage1=$1 grub2_version=$2 hi offset_loc dr_loc dir_loc;
case $grub2_version in
1.96) offset_loc=68; dr_loc=76; dir_loc=32;;
1.97) offset_loc=92; dr_loc=91; dir_loc=28;;
esac;
offset=$(hexdump -v -s $offset_loc -n 4 -e '4 "%u"' "$stage1" 2>>$Trash);
dr=$(hexdump -v -s $dr_loc -n 1 -e '"%d"' "$stage1");
pa="T"
for hi in ${!HDName[@]};
do
hdd=${HDName[$hi]};
if [ $offset -lt ${HDSize[hi]} ];
then
tmp=$(dd if="$hdd" skip=$offset count=1 2>>$Trash | hexdump -v -n 4 -e '"%x"');
if [ "$tmp" = 1bbe5652 ]; ### If conf.img file was found.
then
dd if=$hdd skip=$((offset+1)) count=1 of=$Tmp_Log 2>>$Trash;
pa=$(hexdump -v -s 20 -n 1 -e '"%d"' $Tmp_Log);
core_hdd=$hdd;
Grub_String=$(hexdump -v -s $dir_loc -n 64 -e '"%_u"' $Tmp_Log);
Core_Dir=$(echo $Grub_String | sed s/nul[^$]*//);
fi;
fi;
done;
Core_Msg=$(echo looks at sector $offset of the same hard drive for core.img)

if [ "$pa" = "T" ]
then #### core.img not found.
Core_Msg=$(echo $Core_Msg, but core.img can not be found at this location.);
else #### core.img found.
pa=$((pa+1))
Core_Msg=$(echo $Core_Msg, core.img is at this location on $core_hdd and looks )
if [ "$pa" = 255 ];
then
Core_Msg=$(echo $Core_Msg for $Core_Dir.)
else
Core_Msg=$(echo $Core_Msg on partition \#$pa for $Core_Dir.)
fi;

fi;
}
################################################## #####################################

############### Get_Partition_Info search a partition for information relevant for booting.
####Variables:
#### log $1 local version of RESULT.txt#### log1 $2 local version of log1
#### part $3 device for the partition
#### name $4 descriptive name for the partition
#### mountname $5 path where partition will be mounted.
### kind $6 kind of the partition
### start $7 starting sector of the partition
### end $8 ending sector of the partition
### system $9 system of the partition
### pi $10 pi of the partition, (equal to "" if not a regular partition.
Get_Partition_Info(){
local Log="$1" Log1="$2" part="$3" name="$4" mountname="$5" kind="$6" start="$7" end="$8" system="$9" pi="${10}";
local size=$((end-start)) BST="" BSI="" BFI="" OS="" BootFiles="";


echo "Searching $name for information... ";
PrintBlkid $part;
type=$(BlkidTag $part TYPE); ##### type of file system according to blkid

[[ "$system" == "Bios Boot Partition" ]] && type="Bios Boot Partition"
[[ $pi != "" ]] && FileArray[$pi]=$type;
echo "$name: __________________________________________________ _______________________" >>"$Log"; echo>> "$Log"
mkdir -p "$mountname" #### Directory where the partition will be mounted.
if [[ "$kind" = "E" && "$type" = "" ]] ; #### Check for extended partion.
then
type="Extended Partition";
cat $Tmp_Log>>$Trash; ### Don't display the error message from blkid for extended partition
else
cat $Tmp_Log>>$Error_Log
fi;
echo " File system: "$type>>"$Log"; ### Display the File System Type


Bytes8081=$(hexdump -v -s 128 -n 2 -e '/1 "%x"' $part) #### Use bytes 0x80,81 to idendtify Boot sectors
case $Bytes8081 in
10f) BST="HP Recovery";;
19d) BST="BSD4.4: Fat32";;
211) BST="Dell Utility: Fat16";;
734) BST=Dos_1.0;;
745) BST="Vista: Fat 32";;
89e) BST="MSDOS5.0: Fat 16";;
8cd) BST="Windows XP";;
488) BST="Grub 2's core.img";;
b60) BST="Dell Utility: Fat16";;
bd0) BST="MSWIN4.1: Fat 32";;
e00) BST="Dell Utility: Fat16";;
2d5e) BST=Dos_1.1;;
3a5e) BST="Recovery:Fat 32";;
4445) BST="DEll Restore: Fat32";;
55aa) BST="Windows Vista/7";;
55cd) BST="Fat32";;
6616) BST=Fat16;;
696e) BST=Fat16;;
6974) BST="BootIt: Fat16";;
6f65) BST="BootIt: Fat16";;
6f74) BST=Fat32;;
6f6e) BST="-";; #MSWIN4.1: Fat 32"
7815) BST=Fat32;;
7cc6) BST="MSWIN4.1: Fat 32";;
# 7cc6) BST=Win_98;;
8a56) BST="Acronis SZ: Fat32";;
8ec0) BST="Windows XP";;
8ed0) BST="DEll Recovery: Fat32";;
b6d1) BST="Windows XP: Fat32";;
e2f7) BST="Fat32, Non Bootable";;
e9d8) BST="Windows Vista/7";;
fa33) BST="Windows XP";;
####### if Grub, Grub 2 or Lilo is in the boot sector, ########
####### investigate the embedded information ########
48b4) BST="Grub 1.96";
core_loc $part 1.96;
BSI=$(echo $BSI Grub 1.96 is installed in the boot sector of $name and $Core_Msg);;
7c3c) BST="Grub 2";
core_loc $part 1.97;
BSI=$(echo $BSI Grub 2 is installed in the boot sector of $name and $Core_Msg);;
aa75 | 5272) BST=Grub;
stage2_loc $part;
BSI=$(echo $BSI Grub $Grub_Version is installed in the boot sector of $name and $Stage2_Msg);;
############# If Lilo look for map file ##############################################
8053) BST=LILO;
offset=$(hexdump -v -s 32 -n 4 -e '"%u"' $part); ### 0x20-23 contains the offset
##### of /boot/map
BSI=$(echo $BSI" "LILO is installed in boot sector of $part and looks at sector $offset of $drive for the \"map\" file,);
if [ $offset -lt $size ]; ### check whether offset
#### is on the had drive.
then
tmp=$(dd if=$drive skip=$offset count=1 2>>$Trash | hexdump -v -s 508 -n 4 -e '"%_p"');
if [[ "$tmp" = "LILO" ]];
then
BSI=$(echo $BSI" "and the \"map\" file was found at this location.);
else
BSI=$(echo $BSI" "but the \"map\" file was not found at this location.);
fi;
else
BSI=$(echo $BSI" "but the \"map\" file was not found at this location.);
fi;;
################################################## #######################################
00) sig2=$(hexdump -v -s 128 -n 2 -e '/1 "%x"' $part)
if [ "$sig2" = 00 ]; #### If the first two bytes are zero, the boot sector does not contain any boot loader.
then
BST="-";
else ###### Otherwise, display the boot sector, so we that we might identify it and add it to the list of known boot sectors.
BST="Unknown"
echo "Unknown BootLoader on $name" >> $Unknown_MBR;
echo >> $Unknown_MBR;
hexdump -n 512 -C $part >> $Unknown_MBR;
echo >> $Unknown_MBR;
fi;;
*) BST="Unknown"
echo "Unknown BootLoader on $name" >> $Unknown_MBR;
echo >> $Unknown_MBR;
hexdump -n 512 -C $part >> $Unknown_MBR;
echo >> $Unknown_MBR;
esac;
###################### Display the boot sector type.
echo " Boot sector type: "$BST>>"$Log"

####################### Investigate the Boot Parameter Block of an NTFS partition.

if [[ "$type" = "ntfs" ]]
then
offset=$(hexdump -v -s 28 -n 4 -e '"%u"' $part);
BPB_Part_Size=$(hexdump -v -s 40 -n 4 -e '"%u"' $part)
Comp_Size=$(( (BPB_Part_Size - size)/256 ))
SectorsPerCluster=$(hexdump -v -s 13 -n 1 -e '"%d"' $part);
MFT_Cluster=$(hexdump -v -s 48 -n 4 -e '"%d"' $part);
MFT_Sector=$(( MFT_Cluster * SectorsPerCluster ));
# Track=$(hexdump -v -s 24 -n 2 -e '"%u"' $part)'' ### Number of sectors per track.
# Heads=$(hexdump -v -s 26 -n 2 -e '"%u"' $part)'' ### Number of heads
# if [[ "$Heads" != 255 || "$Track" != 63 ]]
# then
# BSI=$(echo $BSI" "Geometry: $Heads Heads and $Track sectors per Track.)
# fi;
if [[ "$MFT_Sector" -lt "$size" ]];
then
MFT_FILE=$(dd if=$part skip=$MFT_Sector count=1 2>>$Trash | hexdump -v -n 4 -e '"%_u"');
else
MFT_FILE="";
fi;
MFT_Mirr_Cluster=$(hexdump -v -s 56 -n 4 -e '"%d"' $part);
MFT_Mirr_Sector=$(( MFT_Mirr_Cluster * SectorsPerCluster ));
if [[ "$MFT_Mirr_Sector" -lt "$size" ]];
then
MFT_Mirr_FILE=$(dd if=$part skip=$MFT_Mirr_Sector count=1 2>>$Trash | hexdump -v -n 4 -e '"%_u"');

else
MFT_Mirr_FILE="";
fi;
if [[ "$offset" = "$start" && "$MFT_FILE" = "FILE" && "$MFT_Mirr_FILE" = "FILE" && "$Comp_Size" = "0" ]];
then
BSI=$(echo $BSI" "No errors found in the Boot Parameter Block.);
else
if [[ "$offset" != "$start" ]]
then
BSI=$(echo $BSI" "According to the info in the boot sector, $name starts at sector $offset.)
if [[ "$offset" != "63" && "$offset" != "2048" && "offset" != "0" || "$kind" != "L" ]]
then
BSI=$(echo $BSI" "But according to the info from fdisk, $name starts at sector $start.);
fi;
fi;
if [[ "$MFT_FILE" != "FILE" ]];
then
BSI=$(echo $BSI" "The info in boot sector on the starting sector of the MFT is wrong.);
echo MFT Sector of $name >> $Unknown_MBR;
echo >> $Unknown_MBR
dd if=$part skip=$MFT_Sector count=1 2>>$Trash| hexdump -C >>$Unknown_MBR;
fi;
if [[ "$MFT_Mirr_FILE" != "FILE" ]];
then
BSI=$(echo $BSI" "The info in the boot sector on the starting sector of the MFT Mirror is wrong.);
fi;

if [[ "$Comp_Size" != "0" ]];
then
BSI=$(echo $BSI" "According to the info in the boot sector, $name has $BPB_Part_Size sectors, but according to the info from fdisk, it has $size sectors.);
fi;
fi;
fi;

######################## Investigate the Boot Parameter Block (BPB)of some Fat partitions
##### Identifies Fat Bootsectors which are used for booting.

## if [[ "$Bytes8081" = "7cc6" || "$Bytes8081" = "7815" || "$Bytes8081" = "B6D1" || "$Bytes8081" = "7405" || "$Bytes8081" = "6974" || "$Bytes8081" = "bd0" || "$Bytes8081" = "89e" ]] ;

if [[ "$type" = "vfat" ]];
then
offset=$(hexdump -v -s 28 -n 4 -e '"%d\n"' $part); #### Starting sector the partition according to BPP
BPB_Part_Size=$(hexdump -v -s 32 -n 4 -e '"%d"' $part); ### Partition Size in sectors accoring to BPB
Comp_Size=$(( (BPB_Part_Size - size)/256 )) ### This number will be unequal to zero if the two partions size differ by more than 255 sectors.
#Track=$(hexdump -v -s 24 -n 2 -e '"%u"' $part)'' ### Number of sectors per track.
#Heads=$(hexdump -v -s 26 -n 2 -e '"%u"' $part)'' ### Number of heads
#if [[ "$Heads" != 255 || "$Track" != 63 ]] ### Checks for an usual geometry.
#then
# BSI=$(echo $BSI" "Geometry: $Heads Heads and $Track sectors per Track.) ### Report unusal geometry
#fi;
if [[ "$offset" = "$start" && "$Comp_Size" = "0" ]]; ### Check whether Partitons starting sector and the Partition Size of BPB and fdisk agree.
then
BSI=$(echo $BSI" "No errors found in the Boot Parameter Block.); ##If they agreee
else ###### if they don't agree
if [[ "$offset" != "$start" ]] ### if partition starting sector disagree
then
BSI=$(echo $BSI" "According to the info in the boot sector, $name starts at sector $offset.) ### display the starting sector accoding to BPB
if [[ "$offset" != "63" && "$offset" != "2048" || "$kind" != "L" ]] ### check whether partition is logcial partition and starting sector is a 63.
then ### if not, display starting sector according to fdisk.
BSI=$(echo $BSI" "But according to the info from fdisk, $name starts at sector $start.);
fi; ### If not, don't display. (This is quite common occurence, and only matters if one tries to boot Windows from a logical partition. So I decided not to display a warning message in this case.
fi;
#### If Partition sizes from BPB and FDISK differ by more than 255 sector, display both sizes.
if [[ "$Comp_Size" != "0" ]];
then
BSI=$(echo $BSI" "According to the info in the boot sector, $name has $BPB_Part_Size sectors.)
if [[ "$BPB_Part_Size" != 0 ]];
then
BSI=$(echo "$BSI"." " But according to the info from the partition table , it has $size sectors.);
fi; ## Don't display warning message in the common case BPB_Part_Size=0.
fi;

fi; #### End of BPB Error if then else
fi; ###### End of Investigation of the BPB of vfat partitions.
################################################## ##############################################
##### Display boot sector info
echo -n " Boot sector info: ">>"$Log"
echo $BSI | fold -s -w 55 | sed -e '2~1s/.*/ &/'>>"$Log"

####Exclude Partitions which contain no information, #########
##### or which we (currently) don't know how to accces. #########
if [ "$type" != "swap" ] && [ "$type" != "Extended Partition" ] && [ "$type" != "unknown volume type" ] && [ "$type" != "LVM2_member" ] && [ "$type" != "linux_raid_member" ] && [ "$type" != "crypto_Luks" ] && [ "$system" != "Bios Boot Partition" ] ;
then

CheckMount=$(mount| grep "$part " |sed '2,$ d');
CheckMount=${CheckMount% type*};
CheckMount=${CheckMount#* on };
### Check whether partition is already mounted
if [ "$CheckMount" != "" ] ;
then
if [ "$CheckMount" = "/" ];
then mountname="";
else
mountname=$CheckMount; #### if yes,use existing mount point.
fi;
fi;
if [ "$CheckMount" != "" ] || mount -r -t "$type" $part "$mountname" 2>>$Mount_Error || ( [ "$type" = ntfs ] && ntfs-3g -o ro $part "$mountname" 2>>$Mount_Error ) ; ####### Try to mount partition
then ############ if partition is mounted.
#####Try to identify the Operating System (OS) by looking for files specific to the OS
OS=""

grep -q "W.i.n.d.o.w.s. .V.i.s.t.a" "$mountname"/{windows,Windows,WINDOWS}/{System32,system32}/{Winload,winload}.exe 2>>$Trash && OS="Windows Vista";

grep -q "W.i.n.d.o.w.s. .7" "$mountname"/{windows,Windows,WINDOWS}/{System32,system32}/{Winload,winload}.exe 2>>$Trash && OS="Windows 7";
for WinOS in "MS-DOS" "MS-DOS 6.22" "MS-DOS 6.21" "MS-DOS 6.0" "MS-DOS 5.0" "MS-DOS 4.01" "MS-DOS 3.3" "Windows 98" "Windows 95"; do grep -q "$WinOS" "$mountname"/{IO.SYS,io.sys} 2>>$Trash && OS="$WinOS"; done;


[ -s "$mountname/Windows/System32/config/SecEvent.Evt" ] || [ -s "$mountname/WINDOWS/system32/config/SecEvent.Evt" ] || [ -s "$mountname/WINDOWS/system32/config/secevent.evt" ] || [ -s "$mountname/windows/system32/config/secevent.evt" ] && OS="Windows XP";

[ -s "$mountname/etc/issue" ] && OS=$(sed -e 's/\\. //g' -e 's/\\.//g' -e 's/^[ \t]*//' "$mountname"/etc/issue);

[ -s "$mountname/etc/slackware-version" ] && OS=$(sed -e 's/\\. //g' -e 's/\\.//g' -e 's/^[ \t]*//' "$mountname"/etc/slackware-version);


#################################### search for the files in $Bootfiles ########################
#################################### and if found, display there contained ########################
BootFiles=""
if [ "$type" = "vfat" ];
then
Boot_Files=$Boot_Files_Fat;
else
Boot_Files=$Boot_Files_Normal;
fi;

for file in $Boot_Files;
do
if [ -f "$mountname"$file ] && [ -s "$mountname"$file ] && FileNotMounted "$mountname"$file "$mountname"
then
BootFiles=$(echo $BootFiles" "$file);
if ! [ -h "$mountname"$file ]; ### check whether file is symlink
then ### if not a symlink, display content.
titlebar_gen "$name" $file; ##generates a titlebar above each file/dir listed
cat "$mountname"$file >> "$Log1";
fi;
fi;
done;
################# Search for Wubi partitions ###################################
if [ -f "$mountname""/ubuntu/disks/root.disk" ];
then
Wubi=$(losetup -a|awk '$3 ~ "(/host/ubuntu/disks/root.disk)"{print $1; exit}'|sed s/.$//)
#check whether Wubi already has a loop device.
if [[ "$Wubi" = "" ]];
then
Wubi=$(losetup -f --show "$mountname""/ubuntu/disks/root.disk" );
WubiDev=0;
else
WubiDev=1;
fi;
if [ "$Wubi" != "" ];
then
Get_Partition_Info "$Log"x "$Log1"x "$Wubi" "$name""/Wubi" "Wubi/""$mountname" "Wubi" 0 0 "Wubi" "";
[[ $WubiDev = 0 ]] && losetup -d "$Wubi"; #delete Wubu loop device, if created by BIS
else
echo "Found Wubi on $name. But could not create a loop device">>$Error_Log;
fi;
fi;



#################################### Search for the programs in $Boot_Prog, ###############
################################### if found displays their names. ###############
if [ "$type" = "vfat" ];
then
Boot_Prog=$Boot_Prog_Fat;
else
Boot_Prog=$Boot_Prog_Normal;
fi;

for file in $Boot_Prog;
do
if [ -f "$mountname"$file ] && [ -s "$mountname"$file ] && FileNotMounted "$mountname"$file "$mountname";
then
BootFiles=$(echo $BootFiles" "$file);
fi;
done;


################### Search for the directories related to Booting ########################
##################, if found display the list of files #######################

# for file in $Boot_Dir; #directories in that directory.
# do
# if [ -d "$mountname"$file ];
# then
# BootFiles=$(echo $BootFiles" "$file);
# titlebar_gen "$name" $file ##generates a titlebar above each file/dir listed
# ls -la "$mountname"$file >> "$Log1" ;
#
# fi;
# done;

#################### Search for files containing boot codes #################################

for file in $Boot_Codes_Dir ##### loop through all directories which might contain boot_code files
do
if [ -d "$mountname"$file ] && FileNotMounted "$mountname"$file "$mountname"; ##### if such directory exist
then
for loader in $( ls "$mountname"$file ); ##### look at the content of that directory
do
if [ -f "$mountname$file$loader" ] && [ -s "$mountname$file$loader" ]; #### it its a file
then
sig=$(hexdump -v -s 257 -n 8 -e '8/1 "%_p"' "$mountname"$file$loader);
if [ "$sig" = "BootPart" ] ##### Bootpart code has "BootPart" written at0x101
then
offset=$(hexdump -v -s 241 -n 4 -e '"%d"' "$mountname"$file$loader);
dr=$(hexdump -v -s 111 -n 1 -e '"%d"' "$mountname"$file$loader);
dr=$((dr -127))
BFI=$(echo $BFI " "BootPart in the file $file$loader is trying to chain load sector \#$offset on boot drive \#$dr);
fi;
sig=$(hexdump -v -s 383 -n 4 -e '4/1 "%_p"' "$mountname"$file$loader);
if [ "$sig" = "GRUB" ]; ##### Grub and Grub1.96 have "Grub" written at 0x17f
then
sig2=$(hexdump -v -n 2 -e '/1 "%x"' "$mountname"$file$loader);
if [[ "$sig2" = "eb48" ]] ### distinguish Grub and Grub 2 by the
##### first two bytes.
then
stage2_loc "$mountname"$file$loader;
BFI=$(echo $BFI" "Grub $Grub_Version in the file $file$loader $Stage2_Msg);
else
core_loc "$mountname"$file$loader 1.96;
BFI=$(echo $BFI" "Grub 1.96 in the file $file$loader $Core_Msg);
fi;
fi;
sig=$(hexdump -v -s 392 -n 4 -e '4/1 "%_p"' "$mountname"$file$loader);#### Grub1.97 has "Grub" writtem at 0x188
if [ "$sig" = "GRUB" ]; ##### Grub 2 have "Grub" written at 0x188
then
core_loc "$mountname"$file$loader 1.97;
BFI=$(echo $BFI" "Grub 2 in the file $file$loader $Core_Msg);
fi;

fi;
done; ## End of loop through the files in a particular Boot_Code_Directory
fi;
done ## End of the loop through the Boot_Code_Directories.

######### Determine the end point of all files in the GrubError18_Files list

echo >$Tmp_Log;
counter=0;
cd "$mountname"/;
for file in $(ls $GrubError18_Files 2>>$Trash);
do
if [[ -f $file ]] && [[ -s $file ]] && FileNotMounted "$mountname""/"$file "$mountname"
then
EndGB="??";
BlockSize=$(filefrag -v $file| grep "Blocksize" |awk '{print $6}');
if [ "$BlockSize" != "" ];
then
LastBlock=$(filefrag -v "$file"| grep "Last block" |awk '{print $3}');
if [ "$LastBlock" != "" ];
then
EndGB=$(echo $(((BlockSize*LastBlock + 512*start)/100000000 ))|sed 's/\(.\)$/\.\1/')
fi;
fi;
BlockSize=$(filefrag -v "$file"| grep "blocksize" |awk '{print $NF}'| sed 's/)//');
if [ "$BlockSize" != "" ];
then
LastBlock=$(filefrag -v "$file" | grep 'eof' |awk '{print $3}');
if [ "$LastBlock" != "" ];
then
EndGB=$(echo $(((BlockSize*LastBlock + 512*start)/100000000 ))|sed 's/\(.\)$/\.\1/')
fi;
fi;
printf "%6sGB: %-s\n" $EndGB "$file" >>$Tmp_Log;
((counter++));
fi;
done;
cd $Folder;
if [ $counter != 0 ];
then
titlebar_gen "$name" ": Location of files loaded by Grub";
cat $Tmp_Log>>"$Log1";
fi;
echo >$Tmp_Log;

if [[ $BFI != "" ]];
then
echo -n " Boot file info: ">>"$Log"
echo $BFI | fold -s -w 55 | sed -e '2~1s/.*/ &/'>>"$Log"
fi;
echo " Operating System: "$OS | fold -s -w 55 | sed -e '2~1s/.*/ &/'>>"$Log"
echo -n " Boot files/dirs: ">>"$Log"
echo $BootFiles | fold -s -w 55 | sed -e '2~1s/.*/ &/'>>"$Log"

if [ "$CheckMount" = "" ]; ## if partition was mounted by the script
then
umount "$mountname" || umount -l "$mountname";
fi;
else ############### if partition failed to mount
echo " Mounting failed:">>"$Log";
cat $Mount_Error>>"$Log";
fi; ### end of Mounting "if then else"
fi; ### end of Partition Type "if then else"
echo>>"$Log";
if [[ -e "$Log"x ]];
then cat "$Log"x>>"$Log";
rm "$Log"x;
fi;
if [[ -e "$Log1"x ]];
then cat "$Log1"x>>"$Log1";
rm "$Log1"x;
fi;

} ## end Get_Partition_Info function



## "titlebar_gen" generates the $name$file title bar to always be either 79 or 80 chars total in length:
titlebar_gen () {
name_file="$1$2:"; name_file_length=${#name_file}
equal_signs_line_length=$(((80-name_file_length)/2-1)); equal_signs_line=""
for length in $(seq $equal_signs_line_length); do
equal_signs_line='='$equal_signs_line
done;
echo >> "$Log1";
echo "$equal_signs_line $name_file $equal_signs_line" >> "$Log1";
echo >> "$Log1";
}


echo " Boot Info Script $VERSION dated $DATE ">>"Log";
echo>>"Log";
echo '============================= Boot Info Summary: =============================='>>"$Log";
echo>>"$Log";

##### Search for hard drives which don't exist,have a corrupted partition table
##### or don't have a parition table(whole drive is a file system)
##### Information on all hard drives which a valid partition table are stored in the
##### Hard drives arrays: HD?????
FSD=0; #id for Filesystem Drives
for drive in $All_Hard_Drives;
do
size=$(fdisks $drive);
PrintBlkid $drive;
if [ 0 -lt $size 2>>$Trash ];
then
if [ "$(blkid $drive)" = "" ] || [ "$(blkid | grep $drive:)" = "" ]; #Check whether drive is a filesystem
then #if drive is not a filesytem
size=$((2*size));
# (not used) Hard_Drives=$Hard_Drives" "$drive;
HDName[$HI]=$drive;
HDSize[$HI]=$size;
geometry=$(fdisk -lu $drive 2>>$Trash | grep "head");
HDHead[$HI]=$(echo $geometry | awk '{print $1}');
HDTrack[$HI]=$(echo $geometry | awk '{print $3}');
HDCylinder[$HI]=$(echo $geometry | awk '{print $5}');
###Look at the first 4 bytes of the second sector to identify type of partition table;
case $(hexdump -v -s 512 -n 4 -e '"%_u"' $drive) in
"EMBR") HDPT[$HI]="BootIt";;
"EFI ") HDPT[$HI]="EFI";;
*) HDPT[$HI]="MSDos";;
esac;
HI=$((HI+1));
else #if drive is filesystem
if [ $( expr match "$(BlkidTag "$drive" TYPE)" '.*raid') -eq 0 ] || [ "$(BlkidTag "$drive" UUID)" != "" ];
then
FilesystemDrives[$FSD]="$drive";
((FSD++));
fi;
fi;
else
echo -n "$(basename $drive) " >>$FakeHardDrives;
fi;
done;
############ Identify the MBR of each hard drive.
echo "Identifying MBRs..." ;
for hi in ${!HDName[@]};
do
drive="${HDName[$hi]}";
Message=$(echo is installed in the MBR of $drive)
case $(hexdump -v -n 2 -e '/1 "%x"' $drive) in ####Look at the first two bytes of the hard drive to identify the boot code installed in the MBR

################################ If Grub is in the MBR #########################

eb48) offset=$(hexdump -v -s 68 -n 4 -e '"%u"' $drive);### 0x44 contains the offset of the next stage
if [ "$offset" != 1 ]; ###if Grub is installed without stage1.5 files
then
stage2_loc $drive;
Message=$(echo $Message and $Stage2_Msg)
else ### if grub is installed with stage1.5 files
Grub_String=$(hexdump -v -s 1042 -n 94 -e '"%_u"' $drive);
Grub_Version=${Grub_String%%nul*};
tmp='/'${Grub_String#*/};
tmp=${tmp%%nul*};
stage=$(echo $tmp| awk '{print $1}');
menu=$(echo $tmp| awk '{print $2}');
[[ "$menu" = "" ]] || stage=$(echo $stage and $menu);
part_info=$((1045 + ${#Grub_Version}));
pa=$(hexdump -v -s $part_info -n 1 -e '"%d"' $drive);
part_info=$((part_info+1));
dr=$(hexdump -v -s $part_info -n 1 -e '"%d"' $drive);
dr=$((dr-127));
pa=$((pa+1));
if [ $dr = 128 ];
then
Message=$(echo $Message and looks on the same drive in partition \#$pa for $stage.)
else
Message=$(echo $Message and looks on boot drive \#$dr in partition \#$pa for $stage.)
fi;
fi;
BL="Grub "$Grub_Version;;
############################### If Grub 1.96 is in the MBR #####################################

eb4c ) BL="Grub 1.96";
offset=$(hexdump -v -s 68 -n 4 -e '"%u"' $drive);### 0x44 contains the offset of the next stage
if [ "$offset" != 1 ]; ###if Grub2 is installed without Core.
then
core_loc $drive 1.96;
Message=$(echo $Message and $Core_Msg)
else ### if Grub2 is installed with Core
Grub_String=$(hexdump -v -s 1056 -n 64 -e '"%_u"' $drive);
Core_Dir=$(echo $Grub_String | sed s/nul[^$]*//);
pa=$(hexdump -v -s 1044 -n 1 -e '"%d"' $drive);
dr=$(hexdump -v -s 77 -n 1 -e '"%d"' $drive);
dr=$((dr-127));
pa=$((pa+1));
if [ $dr = 128 ];
then
Message=$(echo $Message and looks on the same drive in partition \#$pa for $Core_Dir.)
else
Message=$(echo $Message and looks on boot drive \#$dr in partition \#$pa for $Core_Dir.)
fi;
fi;;

################### If Grub 2 in the MBR###################################
eb63 ) BL="Grub 2"
offset=$(hexdump -v -s 92 -n 4 -e '"%u"' $drive);### 0x5c contains the offset of the core
if [ "$offset" != 1 ]; ###if Grub2 is installed without embeded Core.
then
core_loc $drive 1.97;
Message=$(echo $Message and $Core_Msg)
else ### if Grub2 is installed with Core
Grub_String=$(hexdump -v -s 1052 -n 64 -e '"%_u"' $drive);
Core_Dir=$(echo $Grub_String | sed s/nul[^$]*//);
pa=$(hexdump -v -s 1044 -n 1 -e '"%d"' $drive);
dr=$(hexdump -v -s 77 -n 1 -e '"%d"' $drive);
dr=$((dr-127));
pa=$((pa+1));
if [ $pa = 255 ];
then
Message=$(echo $Message and looks for $Core_Dir.)
else
Message=$(echo $Message and looks on the same drive in partition \#$pa for $Core_Dir.)

fi;
fi;;
################################################## ############################################
ebe) BL=ThinkPad;;
31c0) BL="Acer 3";;
33c0) BL=Windows;;
33ff) BL='HP/Gateway';;
b800) BL=PloP;;
ea1e) BL="Truecrypt Boot Loader";;
eb04) BL=Solaris;;
eb31) BL=Paragon;;
eb5e) case $(hexdump -v -n 3 -e '/1 "%x"' $drive) in ####Look at the first three bytes of the hard drive to identify the boot code installed in the MBR
eb5e00) BL=fbinst;;
eb5e80) BL=Grub4Dos;;
esac;;
fa31) case $(hexdump -v -n 3 -e '/1 "%x"' $drive) in ####Look at the first tree bytes of the hard drive to identify the boot code installed in the MBR
fa31c0) BL=Syslinux;;
fa31c9) BL="Master Boot LoaDeR";;
esac;;

fa33) BL="No boot loader";;
fab8) BL="No boot loader";;
fabe) BL="No boot loader?";;
faeb) BL=Lilo;;
fc31) BL=Testdisk;;
fc33) BL=GAG;;
fceb) BL="BootIt NG";;
00) BL="No boot loader";;
*) BL="No known boot loader"
echo "Unknown MBR on $drive" >> $Unknown_MBR;
echo >> $Unknown_MBR;
hexdump -v -n 512 -C $drive >> $Unknown_MBR;
echo >> $Unknown_MBR;;
esac;
##Output message at beginning of summary that gives MBR info for each drive:
echo -n " => ">>"$Log"
echo "$BL $Message" | fold -s -w 75 | sed -e '2~1s/.*/ &/' >>"$Log"
HDMBR[$hi]=$BL;
done;
echo>>"$Log";
################################################## ####################################
############# Store and Display all the partitions tables.##########################
for HI in ${!HDName[@]};
do
drive=${HDName[$HI]};
echo "Computing Partition Table of $drive...";
FP=$((PI+1)); #used if non-MS_DOS partition table is not in use.
FirstPartition[$HI]=$FP;
PTType=${HDPT[$HI]};
HDPT[$HI]="MSDos";
echo "Drive: $(basename $drive ) ___________________ __________________________________________________ ___" >>$PartitionTable;
fdisk -lu $drive 2>>$Trash |sed '/omitting/ d'|sed '6,$ d' >>$PartitionTable;
echo >>$PartitionTable;
printf "$PTFormat" "Partition" "Boot" "Start" "End" "Size" "Id" "System">>$PartitionTable;
echo >>$PartitionTable;
ReadPT $HI 0 4 $PartitionTable "$PTFormat" "" 0;
echo >>$PartitionTable;
LastPartition[$HI]=$PI;
LP=$PI;
CheckPT ${FirstPartition[$HI]} ${LastPartition[$HI]} $PartitionTable $HI;
echo >>$PartitionTable;
HDPT[$HI]=$PTType;
case $PTType in
BootIt) echo -n BootIt NG Partition Table detected>>$PartitionTable;
[[ "${HDMBR[$HI]}" = "BootIt NG" ]] && echo . >>$PartitionTable || echo , but does not seem to be used. >>$PartitionTable;
echo>>$PartitionTable;
ReadEMBR $HI $PartitionTable;
echo >>$PartitionTable;
if [ "${HDMBR[$HI]}" = "BootIt NG" ];
then
LastPartition[$HI]=$PI;
CheckPT ${FirstPartition[$HI]} ${LastPartition[$HI]} $PartitionTable $HI;
else
FirstPartition[$HI]=$FP;
fi;;
EFI) FirstPartition[$HI]=$((PI+1));
EFIee=$(hexdump -v -s 450 -n 1 -e '"%x"' $drive);
echo -n GUID Partition Table detected>>$PartitionTable;
[[ "$EFIee" = "ee" ]] && echo . >>$PartitionTable || echo , but does not seem to be used. >>$PartitionTable ;
echo >>$PartitionTable;
ReadEFI $HI $PartitionTable;
echo >>$PartitionTable;
if [ "$EFIee" = "ee" ];
then
LastPartition[$HI]=$PI;
CheckPT ${FirstPartition[$HI]} ${LastPartition[$HI]} $PartitionTable $HI;
else
FirstPartition[$HI]=$FP;
fi;;
esac;
done;

for hi in ${!HDName[@]}; ############Loop through all Hard Drives
do
drive=${HDName[$hi]}
for (( pi = FirstPartition[$hi]; pi <= LastPartition[$hi]; pi++ )); ## And then loop through ###the partitions on that drive
do

part_type=${TypeArray[$pi]}; #### Type of the partition according to fdisk
start=${StartArray[$pi]};
size=${SizeArray[$pi]};
end=${EndArray[$pi]};
kind=${KindArray[$pi]};
system=${SystemArray[$pi]};
if [[ "${DeviceArray[$pi]}" = "" ]];
then
name="${NamesArray[$pi]}";
mountname=$(basename $drive)"_"$pi;
part=$(losetup -f --show -o $((start*512)) $drive);
#### --sizelimit $((size*512)) --sizelimit seems to be a recently added option for losetup. Failed on Hardy
else
part="${DeviceArray[$pi]}";
name=$(basename $part); #### Name of the partition (/dev/sda8 -> sda8)
mountname=$name;
fi;

Get_Partition_Info "$Log" "$Log1" "$part" "$name" "$mountname" "$kind" "$start" "$end" "$system" "$pi";

[[ "${DeviceArray[$pi]}" = "" ]] && losetup -d $part;
done; ### end of partition loop
done; ### end of hard drive loop


################ Deactivate dmraid's activated by the script#############

if [ "$InActiveDMRaid" != "" ];
then
dmraid -an $InActiveDMRaid
fi;

##################### Search LVM partitions for information. #########
##################### only works if the "LVM2"-package is installed #########
if type lvscan >>$Trash 2>>$Trash && type lvdisplay >>$Trash 2>>$Trash && type lvchange >>$Trash 2>>$Trash;

then ### if LVM2 is installed

LVM_Partitions=$(lvscan| awk '{print $2}'| awk -F / '{print "/dev/mapper" "/" $3 "-" $4}'|sed s/.$//)

for LVM in $LVM_Partitions;
do
LVM_Size=$(lvdisplay -c $LVM |awk -F : '{print $7}');
LVM_Status=$(lvdisplay $LVM |grep "LV Status"|awk '{print $3}');
lvchange -ay $LVM;
name=${LVM:12};
mountname="LVM/""$name";
kind="LVM";
start=0;
end=$LVM_Size;
system="";
pi="";

Get_Partition_Info "$Log" "$Log1" "$LVM" "$name" "$mountname" "$kind" "$start" "$end" "$system" "$pi";

[[ "$LVM_Status" = "NOT" ]] && lvchange -an "$LVM";
#deactivate all LVM's,which were not active.


done;
fi;


####################### Search MDRaid Partitons for Information##############################
###################### Only works if "mdadm" is installed #############################
if type mdadm >>$Trash 2>>$Trash;
then
MD_Active_Array=$(mdadm --detail --scan |awk '{print $2}');
## all arrays which are already assembled
mdadm --assemble --scan #assemble all arrays
MD_Array=$(mdadm --detail --scan|awk '{print $2}');
## all arrays.
for MD in $MD_Array;
do
MD_Size=$(fdisks $MD); #size in blocks
MD_Size=$((2*MD_Size)); #size in sectors
MD_Active=0;
for MDA in $MD_Active_Array; ## check whether MD is active
do
if [[ "$MDA" = "$MD" ]]
then
MD_Active=1;
break;
fi;
done;
name=${MD:5};
mountname="MDRaid/""$name";
kind="MDRaid";
start=0;
end=$MD_Size;
system="";
pi="";

Get_Partition_Info "$Log" "$Log1" "$MD" "$name" "$mountname" "$kind" "$start" "$end" "$system" "$pi";

[[ "$MD_Active" = 0 ]] && mdadm --stop $MD

#deactivate all MD_Raid's,which were not active.
done;
fi;

####################### Search Filessystem hard drive for information########################

for FD in ${FilesystemDrives[@]};
do
FD_Size=$(fdisks $FD); #size in blocks
FD_Size=$((2*FD_Size)); #size in sectors
name=${FD:5};
mountname="FD/""$name";
kind="FD";
start=0;
end=$FD_Size;
system="";
pi="";

Get_Partition_Info "$Log" "$Log1" "$FD" "$name" "$mountname" "$kind" "$start" "$end" "$system" "$pi";
done;


################################################## #############################################

echo '=========================== Drive/Partition Info: ============================='>>"$Log";
echo>>"$Log";

[ -e $PartitionTable ] && cat $PartitionTable>>"$Log" || echo no valid partition table found>>"$Log";


echo "blkid -c /dev/null: __________________________________________________ __________">>"$Log";
echo>>"$Log";
printf "$BlkidFormat" Device UUID TYPE LABEL>>"$Log";
echo>>"$Log"
for dev in $(blkid -o device);do PrintBlkid $dev;done;
sort -u $BLKID>>"$Log";
echo>>"$Log";

if [ $(ls -R /dev/mapper 2>>$Trash | wc -l) -gt 2 ]
then

echo '=============================== "ls -R /dev/mapper/" output: ==============================='>>"$Log";
ls -R /dev/mapper>>$Log
echo>>"$Log";
fi;





echo '============================ "mount | grep ^/dev output: ==========================='>>"$Log";
MountFormat='%-16s %-24s %-10s %s\n';
Fis=':x:x:x:x:'
echo>>"$Log";
printf "$MountFormat" "Device" "Mount_Point" "Type" "Options" >>"$Log";
echo>>"$Log";
mount | grep ' / '| grep -v '^/'| sed 's/ on /'$Fis'/' |sed 's/ type /'$Fis'/'|sed 's/ (/'$Fis'(/'|awk -F $Fis '{printf "'"$MountFormat"'", $1, $2, $3, $4 }'>>"$Log";
mount | grep '^/dev'|sed 's/ on /'$Fis'/' |sed 's/ type /'$Fis'/' |sed 's/ (/'$Fis'(/'|awk -F $Fis '{printf "'"$MountFormat"'", $1, $2, $3, $4 }'>>"$Log";
echo>>"$Log";


################# Write the content of Log1 to the log file
[ -e "$Log1" ] && cat "$Log1">>"$Log";

if [ -e $Unknown_MBR ];
then
echo "=========================== Unknown MBRs/Boot Sectors/etc =======================">>"$Log";
echo>>"$Log";
cat $Unknown_MBR>>"$Log";
echo>>"$Log";
fi;

if [ -e $FakeHardDrives ];
then
echo "=======Devices which don't seem to have a corresponding hard drive==============">>"$Log";
echo>>"$Log";
cat $FakeHardDrives>>"$Log";
echo>>"$Log";
fi;


##################### Write the Error Log to the log file
if [ -s $Error_Log ];
then
echo "=============================== StdErr Messages: ===============================">>"$Log";
echo>>"$Log";
cat $Error_Log>>"$Log";
fi;

##### Copy the Log file to RESULTS file and make the user the owner of Result file
cp "$Log" "$LogFile"
chown $(basename ~) "$LogFile";

####### Reset the Standard Output to the Terminal
#exec 1>&-;
#exec 1>&6;
#exec 6>&-;

echo Finished. The results are in the file $(basename "$LogFile") located in "$Dir";
exit

TedinOz
January 7th, 2011, 03:09 AM
I posted the results from the test script.

I really no longer have any allegiance to Vista. It has been running badly but I have been in there since installing Ubuntu and it does work albeit not good. I think if I did the dual boot as you are suggesting I would still have to try to remedy whatever was going wrong there and really now that I have found Ubuntu as a clean and precise system (which is all I need for the domestic stuff I do) why keep Vista?

The experience of doing the dual boot would be good for my learning processes I know but I don't want to take up all of your time just for that.

I'll see what you recommend after this but if if looks beyond my capabilities then I'm very happy to continue with Ubuntu only.

Thanks again for your time on this

TedinOz
January 7th, 2011, 03:14 AM
I forgot to answer your question re info from Vista. These are a combination of Document, Photo and Media Files which I now have on the external drive and I have already used them on Ubuntu with great success. Ubuntu seems to be geared to accept them in Microsoft format and convert them to the Linux system so from that point of view I am happy they will work.

wilee-nilee
January 7th, 2011, 03:18 AM
I posted the results from the test script.

I really no longer have any allegiance to Vista. It has been running badly but I have been in there since installing Ubuntu and it does work albeit not good. I think if I did the dual boot as you are suggesting I would still have to try to remedy whatever was going wrong there and really now that I have found Ubuntu as a clean and precise system (which is all I need for the domestic stuff I do) why keep Vista?

The experience of doing the dual boot would be good for my learning processes I know but I don't want to take up all of your time just for that.

I'll see what you recommend after this but if if looks beyond my capabilities then I'm very happy to continue with Ubuntu only.

Thanks again for your time on this

Fair enough, all you have to do then, if you don't mind just doing a fresh install is boot the Ubuntu cd hit install and choose the install to the whole HD.

I would suggest the moving the Ubuntu to a partition, but to be honest, with you having problems just running the script correctly I suspect it would not work for you it is a bit more complicated. What you posted for the script is the actual script that needs to be run rather then what the script generates as a text file for posting.

TedinOz
January 7th, 2011, 03:23 AM
I think the first 'result' I sent was the wrong one...sorry. This is what I think you want to see...


Boot Info Script 0.55 dated February 15th, 2010

============================= Boot Info Summary: ==============================

=> Windows is installed in the MBR of /dev/sda

sda1: __________________________________________________ _______________________

File system: ntfs
Boot sector type: Windows Vista/7
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files/dirs:

sda2: __________________________________________________ _______________________

File system: ntfs
Boot sector type: Windows Vista/7
Boot sector info: No errors found in the Boot Parameter Block.
Operating System: Windows Vista
Boot files/dirs: /bootmgr /Boot/BCD /Windows/System32/winload.exe
/wubildr.mbr /ubuntu/winboot/wubildr.mbr /wubildr
/ubuntu/winboot/wubildr /ubuntu/disks/root.disk
/ubuntu/disks/swap.disk

sda2/Wubi: __________________________________________________ _______________________

File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 10.10
Boot files/dirs: /boot/grub/grub.cfg /etc/fstab

sda3: __________________________________________________ _______________________

File system: ntfs
Boot sector type: Windows Vista/7
Boot sector info: No errors found in the Boot Parameter Block.
Operating System:
Boot files/dirs: /BOOTMGR /BOOT/BCD

=========================== Drive/Partition Info: =============================

Drive: sda ___________________ __________________________________________________ ___

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders, total 312581808 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Partition Boot Start End Size Id System

/dev/sda1 2,048 3,074,047 3,072,000 27 Hidden HPFS/NTFS
/dev/sda2 * 3,074,048 294,627,327 291,553,280 7 HPFS/NTFS
/dev/sda3 294,627,328 312,580,095 17,952,768 17 Hidden HPFS/NTFS


blkid -c /dev/null: __________________________________________________ __________

Device UUID TYPE LABEL

/dev/loop0 062fef51-e273-48c4-b3cb-733119039e26 ext4
/dev/sda1 A0EC2B6FEC2B3EC2 ntfs TOSHIBA SYSTEM VOLUME
/dev/sda2 60F85A6DF85A4208 ntfs S3A6609D003
/dev/sda3 1C10807010805326 ntfs HDDRECOVERY
/dev/sda: PTTYPE="dos"
error: /dev/sdb: No medium found

============================ "mount | grep ^/dev output: ===========================

Device Mount_Point Type Options

/dev/loop0 / ext4 (rw,errors=remount-ro,commit=0)
/dev/sda2 /host fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,all ow_other,blksize=4096)


======================== sda2/Wubi/boot/grub/grub.cfg: ========================

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}

function recordfail {
set recordfail=1
if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}

function load_video {
}

if [ "${recordfail}" = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/10_lupin ###
menuentry "Ubuntu, Linux 2.6.35-24-generic" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set 60f85a6df85a4208
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-2.6.35-24-generic root=/dev/sda2 loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.35-24-generic
}
menuentry "Ubuntu, Linux 2.6.35-24-generic (recovery mode)" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set 60f85a6df85a4208
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-2.6.35-24-generic root=/dev/sda2 loop=/ubuntu/disks/root.disk ro single
initrd /boot/initrd.img-2.6.35-24-generic
}
menuentry "Ubuntu, Linux 2.6.35-22-generic" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set 60f85a6df85a4208
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-2.6.35-22-generic root=/dev/sda2 loop=/ubuntu/disks/root.disk ro quiet splash
initrd /boot/initrd.img-2.6.35-22-generic
}
menuentry "Ubuntu, Linux 2.6.35-22-generic (recovery mode)" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set 60f85a6df85a4208
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-2.6.35-22-generic root=/dev/sda2 loop=/ubuntu/disks/root.disk ro single
initrd /boot/initrd.img-2.6.35-22-generic
}
### END /etc/grub.d/10_lupin ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows Recovery Environment (loader) (on /dev/sda2)" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos2)'
search --no-floppy --fs-uuid --set 60f85a6df85a4208
drivemap -s (hd0) ${root}
chainloader +1
}
menuentry "Windows Vista (loader) (on /dev/sda3)" {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set 1c10807010805326
chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###

============================= sda2/Wubi/etc/fstab: =============================

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
proc /proc proc nodev,noexec,nosuid 0 0
/host/ubuntu/disks/root.disk / ext4 loop,errors=remount-ro 0 1
/host/ubuntu/disks/swap.disk none swap loop,sw 0 0

================= sda2/Wubi: Location of files loaded by Grub: =================


15.4GB: boot/grub/grub.cfg
1.5GB: boot/initrd.img-2.6.35-22-generic
1.8GB: boot/initrd.img-2.6.35-24-generic
4.6GB: boot/vmlinuz-2.6.35-22-generic
4.5GB: boot/vmlinuz-2.6.35-24-generic
1.8GB: initrd.img
1.5GB: initrd.img.old
4.5GB: vmlinuz
4.6GB: vmlinuz.old
=======Devices which don't seem to have a corresponding hard drive==============

sdb

TedinOz
January 7th, 2011, 03:33 AM
I'm sure I could do it with guidance but if I muck it up I might ruin it completely. Very happy with Ubuntu...I know I have an extremely lot to learn here but that challenge is part of what appeals to me. Maybe if I fully install it I can study how to create partitions etc after. But if you want to provide me with the procedure I'll look at it and then decide if it is too tough for me. If not I'll just fully install.

Thanks again! You guys are great!

wilee-nilee
January 7th, 2011, 03:49 AM
I'm sure I could do it with guidance but if I muck it up I might ruin it completely. Very happy with Ubuntu...I know I have an extremely lot to learn here but that challenge is part of what appeals to me. Maybe if I fully install it I can study how to create partitions etc after. But if you want to provide me with the procedure I'll look at it and then decide if it is too tough for me. If not I'll just fully install.

Thanks again! You guys are great!

I would just boot the Live cd to the live desktop=try Ubuntu click on the install, when you get to the HD partitioning part just choose install to the whole HD, I forget exactly what it says. This will just let Ubuntu build it all for you like magic, you will put in a user name and password and your off to the races.

Hey if you got wubi installed this full install to the HD will be familiar, I think you will be fine. You have everything saved on the external so you wont brick the computer just following a basic install to the whole HD.

I think your smart to learn about partitioning at your own leisure you can do it with a thumbdrive to begin with later. Ubuntu is a fairly easy install, some new users want to try to much and learn to much rather then giving themselves time to do this. This can be a strain on the helping, if your trying to get a install done while tutoring the new user. Really I suspect most don't remember all this help, you have to do it a few times to get the hang of partitioning.

Ask any questions if needed, and thanks for your patience with me as well.:)

TedinOz
January 7th, 2011, 04:40 AM
I would just boot the Live cd to the live desktop=try Ubuntu click on the install, when you get to the HD partitioning part just choose install to the whole HD, I forget exactly what it says. This will just let Ubuntu build it all for you like magic, you will put in a user name and password and your off to the races.

Hey if you got wubi installed this full install to the HD will be familiar, I think you will be fine. You have everything saved on the external so you wont brick the computer just following a basic install to the whole HD.

I think your smart to learn about partitioning at your own leisure you can do it with a thumbdrive to begin with later. Ubuntu is a fairly easy install, some new users want to try to much and learn to much rather then giving themselves time to do this. This can be a strain on the helping, if your trying to get a install done while tutoring the new user. Really I suspect most don't remember all this help, you have to do it a few times to get the hang of partitioning.

Ask any questions if needed, and thanks for your patience with me as well.:)

Well thanks so much again. It's you who been the patient one. I'll certainly remember the help. I'll proceed as you have suggested and look forward to happy learning on Ubuntu.

TedinOz
January 7th, 2011, 08:16 PM
I am sorry to say that I have problem with the install now. I booted from the Ubuntu startup disc proceeded with a full install, got to the "Who are you Page" with personal info and password etc. The install was proceeding showing 'Copying files' in the progress bar and when the progress bar got to about 3/4 complete, the display message changed to 'Ready when you are...' and stalled completely. The "Ready when you are...' message offers a dropdown arrow which when clicked opens what appears to be a Terminal Command line. The last entry there reads...

Jan 8 (time) ubuntu ubiquity [3272]: debconffilter_done: ubiquity.component nstall (current: ubi-usersetup)

I am lost now :(. I don't know whether to shut down on the power switch or maybe there is a command that needs to be entered here which I don't know. If I shut down with the CD in will the old system have been retained? I'm hoping someone can help me please! Maybe the startup disc is faulty although it worked fine when I did the Wubi install. I can't show any of the info here as I am doing this from another computer.

TedinOz
January 7th, 2011, 08:22 PM
Ok to add to the last post the cd just moved and a new message came up in the terminal window :

(date time etc) ubuntu CRON[7628]: (root) CMD ( cd / && run-parts --report/etc/cron.hourly

IndyGunFreak
January 7th, 2011, 08:27 PM
Well, at this point, if the installer has froze, you have no choice but to attempt a restart... I'm not aware of any terminal command that will "restart" the installer where it left off.

hansolo4949
January 7th, 2011, 09:47 PM
First of all, you should make sure you installed from a live cd, not from inside windows (that's wubi). Then, think this over. Are you SURE you want to do this? a have done some things before without thinking, and I have paid for them with the entire system messing up, or losing some critical data, etc. Then, you should install gparted, delete all of the NTFS partitions (they should be windows), then add then to the other partition (the 3+/- Gb partition is the swap file). You should be good to go!

hansolo4949

TedinOz
January 7th, 2011, 10:02 PM
First of all, you should make sure you installed from a live cd, not from inside windows (that's wubi). Then, think this over. Are you SURE you want to do this? a have done some things before without thinking, and I have paid for them with the entire system messing up, or losing some critical data, etc. Then, you should install gparted, delete all of the NTFS partitions (they should be windows), then add then to the other partition (the 3+/- Gb partition is the swap file). You should be good to go!

hansolo4949

Thanks. The installation stall was happening because I wasn't internet connected. A new lesson for this novice. I am now fully installed and very happy. Thanks for all your cautions but yes I am sure I want no more part of Vista. Ubuntu is very efficient, and a joy to work in and I am here to stay.

Thanks to everyone for their great support here. This forum is the icing on the cake of a great system :)

hansolo4949
January 7th, 2011, 11:17 PM
Sure, i'm happy you're good to go. If you need anymore help, remember, Ubuntu forums is here ti help! I had a problem on a 6+ year old computer with it's broadcomm wireless driver (i'm writing this on it right now!). I had looked at different threads to no avail. I posted my own thread (actually 2), and within a day, it was working perfectly!

Hansolo4949