Hi I recently decided to try out opensuse, however I wanted to keep vista on my laptop, for the moment anyway.
I installed opensuse 11.2 64bit on my external hard drive with the idea that this way the two OS would be completely seperate and I could just use suse when I felt like it.
Everything boots fine for both OS when the hard driv is plugged in but when it is unplugged I can’t get past a boot screen which says:
Grub loading stage 1.5
Error 21
I have seen on another forum a fix using the windows install disk but I no longer have this.
Is there some other fix I can use to make my laptop portable again.
Thanks
You installed the bootloader files on the external hdd, while the bootloader itself is in the MBR of the internal hdd. Boot openSUSE, use Yast to reinstal the bootloader, make sure you install the bootloader on the internal hdd. If you overwrite the MBR with a VISTA disk, your openSUSE will become unbootable as it is now.
Edit: changed some lines
Okay thanks will try that now.
I’m in yast 2 at bootloader settings do I want to go through other, start from scratch.
Done some thinking. What you want is this, please correct me if I’m wrong:
- USB disk not connected: direct boot in Win
- USB connected: GRUB, choice between openSUSE and Win
The system does not boot in Win, when USB is disconnected
The system boots in Win, through GRUB when USB is connected
This would mean the MBR on the internal hdd is borked. That would have to be fixed from VISTA
It also means that now the part of the bootloader that points to the bootloader’s files is located in the MBR of the internal one, where it should be on the external hdd.
Hope you’re waiting for this right now, I’ll be here for a bit more than an hour from what it looks like.
When in the bootloader (missed that reply) leave all as is, except for where the bootloader is to be installed, this needs to be changed from the internal disk, to the external. Please open a terminal window and do:
fdisk -l
cat /etc/fstab
mount
Post the ouput here.
yes that’s what I’m trying for.
Here is the code
linux-r213:~ # fdisk -l
Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x2e3e2e3e
Device Boot Start End Blocks Id System
/dev/sda1 * 1 28948 232522720+ 7 HPFS/NTFS
/dev/sda2 28948 30401 11672576 7 HPFS/NTFS
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x414e0b46
Device Boot Start End Blocks Id System
/dev/sdb1 1 262 2104483+ 82 Linux swap / Solaris
/dev/sdb2 263 2873 20972857+ 83 Linux
/dev/sdb3 2874 60801 465306660 83 Linux
linux-r213:~ # cat /etc/fstab
/dev/disk/by-id/usb-ST350041_8AS_FF3500418A0000000000005FF9FFBF-0:0-part1 swap swap defaults 0 0
/dev/disk/by-id/usb-ST350041_8AS_FF3500418A0000000000005FF9FFBF-0:0-part2 / ext4 acl,user_xattr 1 1
/dev/disk/by-id/usb-ST350041_8AS_FF3500418A0000000000005FF9FFBF-0:0-part3 /home ext4 acl,user_xattr 1 2
/dev/disk/by-id/ata-Hitachi_HTS543225L9A300_080731FB0E00LKG9AH0A-part1 /windows/C ntfs-3g users,gid=users,fmask=133,dmask=022,locale=en_US.UTF-8 0 0
/dev/disk/by-id/ata-Hitachi_HTS543225L9A300_080731FB0E00LKG9AH0A-part2 /windows/D ntfs-3g users,gid=users,fmask=133,dmask=022,locale=en_US.UTF-8 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
linux-r213:~ # mount
/dev/sdb2 on / type ext4 (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sdb3 on /home type ext4 (rw,acl,user_xattr)
/dev/sda1 on /windows/C type fuseblk (rw,noexec,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda2 on /windows/D type fuseblk (rw,noexec,nosuid,nodev,allow_other,default_permissions,blksize=4096)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
securityfs on /sys/kernel/security type securityfs (rw)
rpc_pipefs on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
linux-r213:~ #
Cheers for the output.
You need to install the bootloader on /dev/sdb2 or /dev/sdb (in MBR). The MBR from the internal hdd has to be fixed from Vista. Then at boot you would have to choose from which device you want to boot.
You could also think of creating a small boot partition on your internal hdd, and mount your /boot there.
One thing I notice, are you doing all this as root ?
Sorry I can’t see where to change from external to internal in yast. I have a choice of tick boxes boot from mbr (currently ticked), boot from root partition and custom boot partition. I can’t see any installation or choice for hard drives.
I don’t know what you mean as root.
I see the promt in your terminal, it’s a “#”, which only root has. Or…are you running openSUSE from a LiveCD image on an USB disk? No, then there would be no GRUB on the internal.
You should pick ‘custom boot partition’ /dev/sdb2
Like I said I don’t really know what root is, currently I’m running open suse off a usb external hard drive. To get the code i went system - terminal - superuser mode then typed in the code.
Do I want to uncheck boot from mbr now that custom boot is selected.
Superusermode: that says it.
I do think that you could do with a bit more understanding of what linux/openSUSE is. On the front page there’s NEW Users - Suse-11.2 Pre-installation – PLEASE READ - openSUSE Forums
Yep, uncheck ‘boot from MBR’. Then reboot, with USB connected, and fix the MBR from Vista.
Okay thanks, could you elaborate on fixing the mbr from vista I’ve done a search and most solutions seem to require the installation disk.
There is a standalone recovery disk created by Microsoft, but it is difficult to find. You can get it here:
Windows Vista Recovery Disc Download — The NeoSmart Files
There are two methods, the automated and the manual (from a command window). Usually the automated method works when only the MBR code is being restored (whereas rebuilding the boot sector often requires the manual mode). Since Vista is rather unfriendly in this area, I recommend first checking the article(s) in the Microsoft KB (Knowledge Base) regarding how to do this manually. It’s not that it’s difficult to do, just a good idea to have a backup procedure.
A comment in regard to your original problem: If @Knurpht’s solution does not work (it probably will, but I have seen issues before on a removable external with having the grub stage 1 pointer in its MBR), then alternatively you can, in addition to installing to sdb2, under Boot Loader Options check “write generic code to MBR”. This will result in Windows code being written the MBR instead which will hand-off to grub code in the sdb2 boot sector.
Finally, there is yet another method to consider: Neosmart also offers a Vista boot loader manager application, and it works very well. You could install it and use it to have the Vista boot loader call the grub boot loader on the external. This method would not require changing the boot order on the laptop when the external is attached; you would always be initiating the boot process from the internal drive starting with Vista. The tutorial is good. All you need to do before the set up in Neosmart is to install grub to sdb2. Just fwiw.
An afterthought . . . when you install grub to sdb2, click on “Boot Loader Installation Details” where you will see the disk boot sequence. Be sure that the external disk precedes (in the list, is above) the internal disk; if it isn’t, change it to be so. You probably also want to go into the bios and change the boot order there to have the external disk selected first (a modern bios should go to the next disk in the list if the first is not found, i.e., if the external is not attached the bios will go to the internal). Also note that if you use the Vista boot loader (via the Neosmart tool) you would still check the boot sequence in YaST, but will not need to go into the bios. Good luck.