Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15531929
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类: LINUX

2008-04-10 09:28:39

Installing Ubuntu from a Flash Drive

This pages describes how to install Ubuntu by copying the contents of the installation CD to an USB memory stick (aka flash drive) and making the stick bootable. This is handy for machines like ultra portable notebooks that do not have a CD drive but can boot from USB media.

In short here's what you do:

  • Prepare the USB flash drive

  • Boot the computer from your USB flash drive.

  • Install Ubuntu as you would from a normal boot CD

Checking your USB stick

Booting from USB memory stick can be very handy, but there is no guarantee that it will work with your particular combination of computer and USB stick. Even if you are able to boot from your flash drive on one computer, this does not mean that it is going to work with the next one. You can try experimenting with different settings in your PC's BIOS to make it work.

Make sure to pick a USB memory stick that is large enough to hold the contents of the installation CD(about 700MB), 1GB is recommended. Versions of SYSLINUX before 3.00 require the use of a FAT16 file system, which most USB flash drives come formatted with, is the most compatible, and is recommended. As of version 3.00, FAT32 is supported by SYSLINUX.

It is recommended to use the latest version of Ubuntu to prepare your USB memory stick.

Install syslinux:

sudo aptitude install syslinux

Insert the USB device you want to use for the installer. A few seconds after plugging in the USB device run the dmesg command or sudo fdisk -l to find device it was assigned. The rest of the instructions refer to /dev/sdX1, remember to replace X with your device location.

Preparing the Flash Drive using isotostick.sh

The easiest way, which also works with the Desktop installer, is to use the isotostick.sh script from Download the script, make it executable and run the script.

wget 
chmod u+x isotostick.sh
sudo ./isotostick.sh ubuntu-7.10-desktop-i386.iso /dev/sdX1

Replacing /dev/sdX1 with the partition name of your USB stick found in the previous section You will see some "operation not permitted" errors when the script tries to copy the symlinks for /dists/stable and /dists/unstable. This is because fat16 file systems do not handle symlinks, but it will not cause any problems.

Now you can boot from the USB stick and install Ubuntu like as if you had booted from the Desktop CD.

Note: Trying to use this on a Feisty machine to copy a Gutsy (livecd) iso. The script does not appear to copy all of the folders. It also looks for /usr/bin/syslinux/mbr -- which is not present with syslinux from the Feisty repos. --

Preparing the Flash Drive manually

In short here's what you do:

  • Make the USB flash drive bootable using SYSLINUX.

  • Copy the contents of the Ubuntu CD to your flash drive (make sure you include hidden files/directories).

  • Copy some files from sub-directories to the root directory.

  • Rename the file isolinux.cfg to syslinux.cfg and edit it a bit.

  • Boot the computer from your USB flash drive.

  • Create a fake CD-ROM drive and mount the flash drive to /cdrom during the Ubuntu installation process.

Making your flash drive bootable with SYSLINUX

SYSLINUX is a boot loader that operates off an MS-DOS/Windows FAT filesystem. Most USB flash drives come with a FAT filesystem. Here's how you can add a SYSLINUX bootblock to your USB stick:

  1. Make sure that "syslinux" and "mtools" is installed. If they are not, install them. SYSLINUX is available for both Linux and Windows(executable is in archive under \win32\syslinux.exe). For more information check the SYSLINUX homepage:

  2. Attach your USB flash drive to your computer and mount it. This may happen automatically. If you are using Linux and it does not get mounted automatically, you can mount it by using a command such as mount -t vfat /dev/sda1 /mnt . Note the mountpoint (i.e. /mnt in the example. If you are using Windows, it should get mounted automatically. (If it doesn't your version of Windows is probably pretty old, and you'll need to install a driver for the USB stick first. Check the vendor's homepage.) Note the drive letter that Windows assigns to it (for example F:).

  3. Make the flash drive bootable. If you're using Linux and your flash drive is mounted as in the above example, use: syslinux -s /dev/sda1. If you are using Windows and the flash drive has the letter F: assigned to it as in the above example, use: syslinux -s F:

  4. You should see a new file called ldlinux.sys in the root directory of your flash drive. (Note that it is a hidden file, you might not see it in Windows Explorer; try dir /a F: from a command prompt). Now you can boot from your USB stick. Read on once you get a SYSLINUX message and a ""boot:"" prompt.

    • Regarding the IDE disk: When in the USB cradle, the disk is sda, whereas when I mount it in the Libretto as the primary IDE disk, it is of course hda. (I shot myself in the foot a couple of times because of this ...)

      I partitioned the disk for installation with room for several boot images. I created hda1 for /boot (in retrospect, maybe not necessary), hda2 for swap (again in retrospect, could go in an extended partition; if I do it again I'll add the good old Woody installer rescue288 disk image -- still viable and valuable as a rescue disk!), hda3 for the Dapper 6.06 server install CD filesystem (this is a low-memory system which can't boot the regular live CD, I have been told), and hda4 as an extended partition for the remaining BIOS hibernation and actual root filesystem partitions.

      At this stage, I only marked the installer partition as bootable. It's a FAT16 partition (partition type 06).

      Since there is no filesystem yet, the newly created partition needs to be formatted. mkfs -t vfat /dev/sdXY ... and be real careful to not format the wrong disk by mistake. (So in my case, this would be sda3 here.)

      No need to mount any other partitions than hda3/sda3) although Ubuntu will in fact automatically try to mount all the ones which have a filesystem on them. Actually, I momentarily unplugged and then replugged the USB cable at this point to make sure the partition table was synced OK, and then the new partition was automatically mounted on /media/usbdisk (and usbdisk-1, usbdisk-2 etc for additional partitions or devices ... mount with no arguments will tell you what's where, if you're unsure).

      The automatic mounting is a bit distracting at times. My recommendation would be to pumount any device you intend to do any low-level operations on, and then mount and unmount as root as necessary. --

Copying the Ubuntu CD to your flash drive

Copy the contents of the Ubuntu installation CD to your flash drive (i.e. all files and directories that are on the installation CD). Please do not copy an ISO image of the installation CD file to your flash drive.

Make sure you copy hidden files and directories (eg. ones with names beginning with a ".").

You can use the following command from a Windows command prompt to make sure that all hidden and system files are copied, assuming that D: is your CD-ROM drive and F: is the USB stick:

xcopy /e /h /k d:\*.* f:

Move files to the root directory

Copy (or move) the files stated from the following directories to your USB flash drive's root directory:

  • isolinux (all files)

  • install (all files)

    • This step above is actually no longer needed provided you use the most recent version of syslinux. Starting with version 3.35 syslinux also supports subdirectories. I have used version 3.36 with ubuntu 7.04. All you need to do is to rename the isolinux directory to syslinux and the two files isolinux.bin and isolinux.cfg to syslinux.bin and syslinux.cfg, respectively. -- Stefan <-- The version of syslinux (3.11) found in the repositories for 7.04 (feisty) and earlier do not yet have this ability.

  • casper (vmlinuz and initrd.gz)

Move dapper to stable

Rename the directory dists/dapper to dists/stable.

  • I think this depends slightly on which CD and which installer you're using. I've had problems when dists/dapper was missing and when dists/stable was missing and I'm not sure what the circumstances were. When it happens, just switch to a shell and rename it on the fly, then return to the installer and ask it to retry. (The vfat filesystem doesn't support symlinks, unfortunately. If you have spare disk space and a little patience, you could copy one to the other for the total belt and suspenders solution.) --

    For anyone trying to install the new Ubuntu 7.04 (Feisty) with this guide: You can skip this step. In fact, it doesn't matter if you delete the file named dists/stable and rename the dists/feisty to dists/stable. -- Boo

Editing SYSLINUX.CFG

Copy (or rename) the file isolinux.cfg to syslinux.cfg. Then edit the file and remove the /casper/ or /install/ reference in all paths. For example you would change the line containing DEFAULT /casper/vmlinuz to DEFAULT vmlinuz. Save the file, and make sure it is called syslinux.cfg. It does not matter whether the line breaks are in DOS or Linux format.

  • Again, for anyone installing Ubuntu 7.04 (Feisty): Just remove the /install/ reference. The only line it is found is kernel /install/mt86plus, which must be changed to kernel /mt86plus. -- Boo

    no, it is not. there were 23 entries on isolinux.cfg -- capi

    I found twenty one, with Feisty, and syslinux 3.51 -- Gedanken

Booting from the flash drive

Boot the computer that you want to install Ubuntu on from the USB stick. It should work as if you'd be booting it from the installation CD.

Mounting the flash drive as /cdrom (only needed for pre-7.04 Ubuntu versions)

Switch to the second virtual console during the first couple of dialogs (when asked about your preferred language for the installation etc.) by pressing the ""ALT-2"". Do the following:

  • mkdir /cdrom /dev/cdroms

  • cd /dev/cdroms

  • ln -s ../sda1 cdrom0 (where sda1 is your USB stick)

  • mount -t vfat /dev/cdroms/cdrom0 /cdrom

Then switch back to the first virtual console by pressing ""ALT-1"". Continue installing Ubuntu as if you were running from CD.

  • This was a bit tricky until I got the hang of it. You need to have the hardware detection detect your hda before you can mount it! But just wait until it complains about a missing CD-ROM, then don't try to helpfully tell it where to look. Just accept the dialog where it says that this stage failed, then switch over to the virtual console and mount -t vfat /dev/hda3 /cdrom. (I skipped the gyrations with /dev/cdroms, they don't seem to be necessary.) Back in the installer, you should now be able to proceed from the next point in the dialog. (Remember, I'm talking about the text-only installer. It might be different in the GTK install.) --

    I think just ran into --

    When installing Ubuntu 7.04 (Feisty), there was no need for me to mount the flash. -- Boo

    This is does not work for me using the alternate gutsy iso - i.e. mount -t vfat usbdev target fails with "no such device". There is a forum thread here: Currently I know of no solution but to use the regular iso. -- Stenico

After Installing

After installing Ubuntu, you should make sure that /media/cdrom0 points to the CD drive and not to the USB drive in /etc/fstab

  • I had to remove a line from /etc/fstab telling my USB stick was a CDROM after installing 7.10 Gutsy this way --

    • This is a known bug --

See also

Comments and Troubleshooting

  • For an alternative method that works with Feisty see: ) -- Monkeymind

    Note: the instructions there work great with gutsy as well, but on my machine i needed to add "vesa vga=771" to the "append=" line in syslinux.cfg. After that the process was completely unproblematic -- Matt Price

    I also succeeded in installing on a Libretto 100CT by using a 2.5" IDE disk in one of those cheap USB cradles. This machine has no CD-ROM, no floppy (on my unit), no USB. I've taken the liberty to annotate my experiences in an indented style, like this. --

    I installed on an IBM X40 using the contents of the mini.iso for edgy on a USB stick instead of using the iso for the bulkier alternate CD. I only had to install syslinux and rename isolinux.cfg to syslinux.cfg (I didn't have to change the contents of the file). It was very easy. I didn't have to try fooling the installer into thinking the stick was the CD and mess with symlinks etc. --

    I succeeded installing Ubuntu 7.04 (Feisty) with this guide and just a few changes I added. Ubuntu is running stable and without any problems -- Boo

    Short guide (to get the idea): mkfs.vfat /dev/; fdisk /dev/ (make bootable); ./isostick.sh ubuntu-7.10-desktop-i386.iso /dev/; -- Syke

    Thanks for the advise guys, it also worked on my laptop: got it installed with 7.10 (and the encrypted LVM partitions I needed). I needed

    a) a network link and install mini.iso [WWW] http://archive.ubuntu.com/ubuntu/dists/gutsy/main/installer-i386/current/images/netboot/mini.iso,

    b) a working 7.10 system with syslinux and mtools (On feisty: apt-get install syslinux).

    c) cat /etc/mtab to find out my usb was at /dev/sdb1, mounted as /media/:

  • syslinux -s /dev/sdb1

  • mount -o loop /home/stilus/Desktop/mini.iso /media/cdrom0/

  • cp -r /media/cdrom0/* /media/

  • cd /media/

  • mv isolinux.cfg syslinux.cfg

  • cd /

  • umount /media/

    Plugged this in my to-be-installed system, and that was that: let the netinstall begin!! -- stilus

    What about a howto or tutorial about use Grub instead of syslinux ?.

last edited 2008-03-18 14:29:16 by

阅读(3246) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~