Feeds:
Posts
Comments

Archive for June, 2009

USB media has become widely popular. They come in various formats and have enough capacity to hold a SuSE Linux DVD ISO-image.

Also a lot of PCs can boot from USB, so quite soon you’ll find yourself asking: Wouldn’t it be nice to just download the image and boot from USB drive. Actually, an USB drive is not bootable by itself as special boot files are required. However, the drive can be made bootable quite easily.

Contents

  • 1 Getting ready
  • 2 Preparation
    • 2.1 Copy files to the USB drive
    • 2.2 Make the USB drive bootable
  • 3 Installation
    • 3.1 Boot
    • 3.2 Setup
  • 4 Gotchas / Common issues
    • 4.1 Why cannot I just use the mkbootdisk shipped with SuSE Linux
    • 4.2 The PC won’t boot from USB drive
  • 5 Links for additional information

Getting ready

For a successful install, you should have:

  • SuSE Linux DVD image for i386 or x86_64 architecture, alternatively a Start-CD-Image can be used. This is much smaller and will fit on (almost) any USB drive
  • this modified version of [mkbootdisk]
  • an usb key (mini disk is ~80kb, cd 650Mb, dvd 4Gb, key must have the corresponding size) or USB hard drive
  • root access to already installed Linux, and ability to work in a console
  • syslinux installed (use YaST)

Preparation

  • Open a root xterm or terminal;
  • Plug in the USB drive. The drive should mount automatically – if you use KDE, you can find out which device name is used for the USB drive, by reading it from the window that opens automatically. The partition has a name such as “dev/sdb1”. The disk is the device without the trailing digit, e.g., /dev/sdb.

You can also use

 df -h

and look for a device that matches the size of your USB drive.

Another way to find out the device name is to look at the last couple of lines in the file “/var/log/messages”. When the USB drive is plugged in, several lines starting appear which indicate that the USB drive has been connected. Look for a line saying “[sd?] Attached SCSI disk”. Here “sd?” is the device name of your USB drive.

  • Check the partition as root type via:
fdisk -l

or, if you know the disk

fdisk -l /dev/<disk>

The output should have line like

/dev/sdb1  * 1  3924     1004528    c  W95 FAT32 (LBA)

Here “FAT32” indicates the filesystem. It could also be “FAT16” (or something else). If you see a star (as in the example above), then this means that the bootable flag is set.

  • If the bootable flag is not set (no star), it needs to be set as follows:
fdisk /dev/<disk>

(<disk> is the disk name, e.g. “sdb”. It’s not the partion name as “sdb1”). Then press “a”, and enter the partition number (e.g. 1, if the partition is sdb1). Save the changes with “w”. If the automount prevents the changes from being saved, you can temporarily disable automount using “rcdbus stop” as root.

  • If the filesystem is not FAT32, it needs to be changed:
fdisk /dev/<disk>

Then press “t” (to change the partition type) and “c” (for FAT32). Save the changes with “w”.

  • Create the filesystem (beware, this erases all data on the USB drive). To do so you must first unmount the drive:
umount /dev/<partition>
mkfs.vfat -F 32 /dev/<partition>

(Here <partition> is the partition, for example “sdb1”).

  • Make sure that the USB drive is FAT32 formatted:
fsck.vfat /dev/<partition>

If this fails, fix the filesystem with

fsck.vfat -a /dev/<partition>

Copy files to the USB drive

  • Choose a suitable mount point for the dvd (for example /mnt/dvd) and a mount point for the USB drive (for example /mnt/usb). Create the mount points with
mkdir /mnt/dvd
mkdir /mnt/usb
  • Mount the downloaded CD/DVD image (make sure you have loop-device support in your Linux – in openSUSE this is available by default):
mount dvd.iso /mnt/dvd -o loop

Also mount the USB drive:

mount /dev/sdb1 /mnt/usb
  • Copy the downloaded CD/DVD data to the USB drive at the root of the drive
cp -R -L /mnt/dvd/* /mnt/usb/
  • Unmount the USB drive (if not, the command mksusebootdisk will fail)
umount /mnt/usb

Make the USB drive bootable

See 2nd comment in Discussion-tab if the mksusebootdisk script program does not finish. !!!!!!

(Note: to run mksusebootdisk, package “syslinux” have to be installed)

  • to make media for x86 (i386) the command is:
./mksusebootdisk --32 --partition /dev/sdb1 /mnt/dvd
  • to make media for x86-64 (AMD64/EMT64) the command is:
./mksusebootdisk --64 --partition /dev/sdb1 /mnt/dvd

This should work for any architecture e.g. ppc, IA64 by changing the first parameter etc.

  • If you get the error
 /usr/bin/perl: bad interpreter: Permission denied

make the “mksusebootdisk” script executable by running

 chmod +x mksusebootdisk

This command works reasonably fast. It will fail if you forgot to unmount (using umount) the USB disk. It will also fail (and give a “not a FAT file system” error if you press crtl-c) if the drive has errors. To fix the errors, use

 fsck.vfat -w -r <part>
  • The drive is now bootable.

Installation

Boot

Make sure your USB-device is plugged in. Boot the PC. If everything goes well the SuSE boot menu will appear. Choose install.

Setup

During setup, the install media will not be automatically found. The setup will fall back to text-mode setup where you can choose the install media location.

Your media should be in Local hard drive and USB drive should be /dev/sda1 or similar. The setup will ask for the ISO file location on the selected drive. Type in the file path and name. Initial / is required, so if your image is at the root of the drive and has name of dvd.iso, you need to type: /dvd.iso

Why cannot I just use the mkbootdisk shipped with SuSE Linux

  • The stock mkbootdisk is not capable of writing a FAT32 filesystem.
  • Biggest standard/bootable FAT16 partition is 2 gigabytes. That won’t hold the DVD image.
  • You could create a non-standard FAT16 of 4 gigabytes, but you won’t be able to boot from it. At least most motherboards won’t.

The PC won’t boot from USB drive

If no matter what you try, the machine does not boot from the USB drive:

  • Make sure the PC is capable of booting from USB. This information may be difficult to find from manuals or Internet, sometimes USB booting is not supported regardless how new the PC is.
    • Note: removable drive in the BIOS boot menu does not mean USB
  • BIOS setup should have the plugged in USB device in high enough boot priority, make sure that PC won’t boot from hard drive or CD.
  • Some motherboards may have additional restrictions. For example, some Via EPIA mini-itx boards require that the boot partition is no larger than 8MB.
  • Try consulting and/or contributing to the USB Booting Knowledge Base

Links for additional information

Retrieved from “http://en.opensuse.org/SuSE_install_from_USB_drive

Read Full Post »