The cleanest way (in my opinion) to do this is exactly the way that I did with the online pxeboot environment (there are other ways (like loop-mounting the whole ISO or using memdisk), but they all download more and use more memory).
1) Extract the ISO with
bsdtar -x --exclude=arch/boot/syslinux --exclude memtest* --exclude pkglist.* -f archlinux-2012.10.06-dual.iso arch/
This will result in a directory structure exactly like this: ftp://ftp.archlinux.org/iso/2012.10.06/arch/
Put this on an http server.
I'll actually loop mount the iso in the tftp/http boot dir. That way I'll save on space. I do the same with the Ubuntu PXE boot options.
2)
Use a gPXE or iPXE-extended pxelinux version, like gpxelinux, or a custom version built from pxelinux and iPXE (for example, you can include native ethernet drivers to speed up the early download). You need this so you can use http downloads from the bootloader (you could put the kernel and initramfs on TFTP instead, but you need HTTP for the later stage anyway, so why bother).
yes, I already use iPXE, and yes HTTP is much faster than TFTP, a great improvement.
3)
Add the following to your pxelinux configuration:
LABEL arch_x86_64 TEXT HELP Boot Arch Linux (x86_64) live medium. ENDTEXT MENU LABEL Arch Linux x86_64 LINUX http://servername/arch/boot/x86_64/vmlinuz INITRD http://servername/arch/boot/x86_64/archiso.img APPEND archiso_http_srv=http://servername/ archisobasedir=arch checksum=y ip=dhcp
Thanks, exactly what I needed (and didn't know about the archiso_http_srv option).
(Similar for i686)
This will download the kernel from http and boot it, download the squashfs images into memory (about 200MB total) and boot the live system.
Any option of NSF mounting a directory, and then mounting the squash from there? If I remember correctly Ubuntu does that.
I guess this will do what you are looking for.
Thanks, I've set it all, I'll need to go physically in the hackerspace to test it. BTW If anyone passe by, please feel welcome http://hackerspaces.org/wiki/KIKA -- damjan