Difference between revisions of "Talk:USB flash installation media"

From ArchWiki
Jump to: navigation, search
(Recovering the USB drive afterwards: new section)
(14 intermediate revisions by 6 users not shown)
Line 1: Line 1:
== <s> Does not work anymore... </s> ==
 
 
I was unable to run the new "live" arch-core-install-2008.04-rc-i686.iso off the USB stick.  I've copied the kernel, initrd, and .squashfs files to the stick, and added a minimal entry in syslinux.cfg.  Kernel + initrd boot fine, I even saw that the USB disk is detected, partitions parsed, and /dev/ entries created, but then init halts with something like 'unable to find /dev/cd/*'.  I've spent few minutes reading the initialisation code, but didn't find a kernel commandline option to override it.  I'm sure there is some easy way to make it work, but the process of mounting the CD-ROM should probably be implemented in a more robust way, so the initrd code finds and mounts the compressed filesystem even when booting from USB HDD.
 
  
 
== Verifying the USB ==
 
== Verifying the USB ==
Line 23: Line 20:
  
 
--[[User:Liquen|Liquen]] 14:55, 4 April 2009 (EDT)
 
--[[User:Liquen|Liquen]] 14:55, 4 April 2009 (EDT)
 
== <s> But I don't want to overwrite the entire USB stick... </s> ==
 
 
''I'll add this into the article soonish; recording here for reference.''
 
 
So you don't have to. The easier way is to download the ISO image, mount, then copy and install GRUB manually (a la "old method").
 
 
However, I already downloaded the IMG file and don't want to waste time. Then:
 
 
sfdisk -l -uS /path/to/img
 
 
outputs:
 
 
?
 
 
Note the starting sector of the first partition (63, in this example). Then:
 
 
dd if=/path/to/img of=arch.img skip=63
 
 
Now, I can mount the .img file without issue:
 
 
mount -o loop arch.img /mnt/usb/
 
  
 
== Universal USB Installer ==
 
== Universal USB Installer ==
Line 54: Line 29:
 
:Yes you can add such a note, just always remember to explain your edits in the Summary field. For more style guidelines see [[Help:Style]].
 
:Yes you can add such a note, just always remember to explain your edits in the Summary field. For more style guidelines see [[Help:Style]].
 
:-- [[User:Kynikos|Kynikos]] 06:41, 10 November 2011 (EST)
 
:-- [[User:Kynikos|Kynikos]] 06:41, 10 November 2011 (EST)
 
== <s>Gentoo Linux LiveUSB HOWTO </s> ==
 
 
try this
 
 
http://www.gentoo.org/doc/en/liveusb.xml
 
 
and replace (if you on arch)
 
 
dd if=/usr/share/syslinux/mbr.bin of=/dev/sdc
 
 
to
 
 
dd if=/usr/lib/syslinux/mbr.bin of=/dev/sdc
 
 
 
also you need to change the usb label
 
: Link add as see also. Path info already exist in page. Close. -- [[User:Fengchao|Fengchao]] ([[User talk:Fengchao|talk]]) 04:34, 24 August 2012 (UTC)
 
  
 
== About making the installation media without overwriting ==
 
== About making the installation media without overwriting ==
Line 110: Line 67:
  
 
At any rate, put '; sync' in there somewhere.
 
At any rate, put '; sync' in there somewhere.
 +
 +
This is what I did eventually, taking a tip from:
 +
[http://www.patriotmemory.com/forums/showthread.php?3696-HOWTO-Increase-write-speed-by-aligning-FAT32]
 +
 +
# dd count=100 bs=4M if=/dev/zero of=/dev/sdx; sync
 +
# fdisk -H 224 -S 56 /dev/sdx
 +
 +
(new partition, primary, 1, 2048, whatever, type of partition, c (fat32 LBA), x, beginning data sector, 256, write)
 +
 +
# mkfs.vfat -F 32 -n volume_label -s 32 -v /dev/sdx1; sync
 +
 +
See the link for more details on the beginning data sector.
 +
 +
* Um, zeroing out the first 512 bytes is fine for MBR-formatted drives. Were you using GPT? Because then you would need to zero out the first 512+512+16k, and the last 16k+512. See [[GPT]]. But assuming you used {{ic|dd}}, we're talking about MBR-formatted because the ISO contains a MBR (hybrid) partition table.--[[User:DSpider|DSpider]] ([[User talk:DSpider|talk]]) 06:25, 8 September 2012 (UTC)
 +
 +
== flush file system buffers after dd ==
 +
 +
I found that after using dd to write the data to my USB I had to wait for the file system to actually write it to my drive. (as dd completed and returned its stats)
 +
This could cause confusion, should we add 'sync' after the dd command on the artical?
 +
 +
== Universal USB Installer ==
 +
 +
This method seems to not work for me, and from a little research that I did it has to do with SYSLINUX not accepting relative paths for FAT filesystems (see [https://bbs.archlinux.org/viewtopic.php?id=145749 here]). Since this would be my first edit, I thought I should run it by the discussion page before adding a note.
 +
 +
[[User:Svart|Svart]] ([[User talk:Svart|talk]]) 22:04, 12 November 2012 (UTC)
 +
 +
:Syslinux 4.06 came out a couple of weeks ago, or something like that, and it seems it fixed this bug. The Arch Linux ISO uses the latest {{Pkg|syslinux}} package ''(for confirmation, you can run {{ic|pacman -Qi syslinux}})'', but maybe this program adds its own version, like Unetbootin does. In that case, it either needs an update, or you need to use another method.
 +
:--[[User:DSpider|DSpider]] ([[User talk:DSpider|talk]]) 12:01, 13 November 2012 (UTC)
 +
 +
== Rationale for block size ==
 +
 +
Why specifically ''bs=4M'' in the [[USB_Installation_Media#Overwrite_the_USB_drive|example]]:
 +
[[USB_Installation_Media#Overwrite_the_USB_drive|# dd '''bs=4M''' if=/path/to/archlinux.iso of=/dev/sdx]]
 +
[[User:NoobCp|NoobCp]] ([[User talk:NoobCp|talk]]) 11:08, 20 December 2012 (UTC)

Revision as of 11:08, 20 December 2012

Verifying the USB

Before and after having performed the dd onto the USB disk, check that the md5sums are correct. For example:

- $ md5sum archlinux-2008.06-core-x86_64.img && echo && cat md5sums.x86_64

The next command will give similar results, but will also let you confirm that the data was written correctly and can be read correctly:

- dd if=/dev/sdb count=661159 status=noxfer | md5sum && echo && cat md5sums.x86_64

--Zatricky 06:45, 22 January 2009 (EST)

dd for Windows

There is also dd for Windows. I tried it and it works perfectly: [1]

 dd if=file.img of=\\.\e:

where e: is your USB drive letter.

--Liquen 14:55, 4 April 2009 (EDT)

Universal USB Installer

This method works fine for me though I got a little stuck when Arch tried to get at the boot device and couldn't find it. Turns out UUSBI's default trick is to label your device "PENDRIVE" if it formats it during the process (user-selectable). I'd like to add a note about this to the section on this page which covers the tool, but as it'd be my first change here I want to be sure I'm not going to be shouted at...

Xyon 09:57, 9 November 2011 (EST)

Hi and welcome! I've moved your discussion at the bottom of the page according to Help:Style#Discussion pages.
Yes you can add such a note, just always remember to explain your edits in the Summary field. For more style guidelines see Help:Style.
-- Kynikos 06:41, 10 November 2011 (EST)

About making the installation media without overwriting

I'm not totally sure if I misunderstood something, but I had to change the path of the entries of the *.cfg files. For instance:

INCLUDE boot/syslinux/archiso_sys.cfg

became:

INCLUDE syslinux/archiso_sys.cfg

It was the only way it worked with the unofficial ISO x86_64 image of march 13th, 2012. Looks like the syslinux command described in the page doesn't get the path as it should.

I edited all of the .cfg files, but probably only editing this ones should have been enough:

archiso.cfg archiso_head.cfg archiso_sys_inc.cfg

I hope it could be useful to somebody, because I spend some time with this (I even thought that was a problem with the hardware). I think it could be possible to make a simple script (or give some command lines) to patch the files once they are copied into the USB and run syslinux.

Thanks !!

Recovering the USB drive afterwards

This didn't work for me:

  1. dd count=1 bs=512 if=/dev/zero of=/dev/sdx

I tried this multiple times. No matter how I formatted the disk, 'devmon' always mounted '/dev/sdd' as /media/ARCH_whatever.

I finally just zeroed as much of the disk as I thought the ISO might have been written to.

  1. dd count=100 bs=4M if=/dev/zero of=/dev/sdx; sync

That worked. I believe we need to zero MORE than just the initial 512 bytes, but I have no idea how much. Maybe 2048?

At any rate, put '; sync' in there somewhere.

This is what I did eventually, taking a tip from: [2]

  1. dd count=100 bs=4M if=/dev/zero of=/dev/sdx; sync
  2. fdisk -H 224 -S 56 /dev/sdx

(new partition, primary, 1, 2048, whatever, type of partition, c (fat32 LBA), x, beginning data sector, 256, write)

  1. mkfs.vfat -F 32 -n volume_label -s 32 -v /dev/sdx1; sync

See the link for more details on the beginning data sector.

  • Um, zeroing out the first 512 bytes is fine for MBR-formatted drives. Were you using GPT? Because then you would need to zero out the first 512+512+16k, and the last 16k+512. See GPT. But assuming you used dd, we're talking about MBR-formatted because the ISO contains a MBR (hybrid) partition table.--DSpider (talk) 06:25, 8 September 2012 (UTC)

flush file system buffers after dd

I found that after using dd to write the data to my USB I had to wait for the file system to actually write it to my drive. (as dd completed and returned its stats) This could cause confusion, should we add 'sync' after the dd command on the artical?

Universal USB Installer

This method seems to not work for me, and from a little research that I did it has to do with SYSLINUX not accepting relative paths for FAT filesystems (see here). Since this would be my first edit, I thought I should run it by the discussion page before adding a note.

Svart (talk) 22:04, 12 November 2012 (UTC)

Syslinux 4.06 came out a couple of weeks ago, or something like that, and it seems it fixed this bug. The Arch Linux ISO uses the latest syslinux package (for confirmation, you can run pacman -Qi syslinux), but maybe this program adds its own version, like Unetbootin does. In that case, it either needs an update, or you need to use another method.
--DSpider (talk) 12:01, 13 November 2012 (UTC)

Rationale for block size

Why specifically bs=4M in the example:

# dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx

NoobCp (talk) 11:08, 20 December 2012 (UTC)