On 11/23/2011 09:30 PM, Gerardo Exequiel Pozzi wrote:
On 11/23/2011 07:52 PM, Thomas Bächler wrote:
Am 23.11.2011 23:36, schrieb Gerardo Exequiel Pozzi:
The releng env is currently set to build every 4 days. And it should auto-update archiso from git IIRC Gerardo didn't push these patches to archiso.git yet. That's why I asked.
These patches are waiting for next mkinitcpio + pending RFC patch to fix BASEDIR (Or I can just say "good-bye" to -b BASEDIR and use chroot mkinitcpio") We could install mkinitcpio-git in the releng environments. Dieter?
Also I want to change a bit the directory structure of the ISO to be more pxelinux friendly. This is a change that I want to do long long time ago, but breaks "the nice scheme" (syslinux only files in one place, kernel/initramfs in other...).
[...]
bah, is still nice...
is there any objections? I like the old scheme better. I like how the bootloader files are separate from the linux files. Yes current scheme is nice.
We can start a TFTP/FTP/HTTP/NFS that points directly to /run/archiso/bootmnt from the live-enviroment. Or just extract/mount the ISO in a running system ;) Why can't we do that with the current scheme?
Because pxelinux works different compared to other bootloaders (in terms of filesystem). While syslinux/isolinux/extlinux you can see all files from the filesystem where is installed. For example extlinux installed on /boot/syslinux/ld-linux.sys from the bootloader you can access to /anyotherdir. In pxelinux things works differently, You have it installed on /tftpboot/syslinux/pxelinux.0 and you can not access to files outside "syslinux/" when you reference a file as "/pepito.txt" you are trying to access to /tftpboot/syslinux/pepito.txt (even if tftpd root is set to /tftpboot/). Yes sure still can be referenced as tftp:// (or http://)
I tried with change the tftp-prefix with dhcp-option 210 (pxelinux.pathprefix) "dnsmasq --dhcp-option-force=210,/" then having this scheme (by default will take syslinux/ as prefix, the directory where pxelinux.0 is found)
/tftpboot/arch/boot/i686/vmlinuz /tftpboot/syslinux/with-all-files-here /tftpboot/pxelinux.cfg/default
And default file with this content (the same method used in ISO under /isolinux/isolinux.cfg)
--- DEFAULT loadconfig
LABEL loadconfig CONFIG /syslinux/syslinux.cfg APPEND /syslinux/ ---
All things related to syslinux loads OK (c32, splash.png, etc...) but when you try to access to /arch/boot/i686/vmlinuz is not found
boot: cat /arch/pepe.txt cat.c32: /arch/pepe.txt: file not found boot: cat tftp://192.168.0.77/arch/pepe.txt I Am /tftpboot/arch/pepe.txt boot: cat pepe.txt I Am /tftpboot/syslinux/pepe.txt boot: cat /pepe.txt I Am /tftpboot/syslinux/pepe.txt boot:
-------------
Another alternative directory scheme is
/arch/boot/{i686,x86_64}/{vmlinuz,archiso.img,...} /arch/boot/syslinux/*.{cfg,c32,...} /arch/boot/pxelinux.cfg/default <- this is a copy of syslinux.cfg (not a "loadconfig" hack) So in the case of dual-iso, we need *.cfg files here. /arch/boot/{g,p}xelinux.0
What do you think about keep scheme like now but... * Set the dhcp to send that pxeconfig is syslinux/syslinux.cfg (same path for all *.cfg) * Convert all relative path in syslinux.cfg to absolute paths * Enable IPAPPEND even for non-pxelinux (you only see a non-harm warning mesage if you look quickly at screen (I can not see now, maybe newer syslinux versions...)). In this way avoid two same files that differs on in this directive. (anyway we can have a nice menu for differents boot options) In that way we have unified the same directory scheme / config files for all syslinux bootloaders. # mount -o ro /tmp/out/archlinux-2011.11.24-netinstall-i686.iso /mnt/iso # dnsmasq --port=0 --enable-tftp --tftp-root=/mnt/iso --dhcp-boot=/arch/boot/syslinux/gpxelinux.0,192.168.0.77 --dhcp-range=192.168.0.2,192.168.0.254,8640 --dhcp-option-force=209,/arch/boot/syslinux/syslinux.cfg --dhcp-option-force=210,http://192.168.0.77 or using an embbeded gpxe script ------ #!gpxe dhcp net0 set 209:string /arch/boot/syslinux/syslinux.cfg set 210:string http://192.168.0.77 chain ${210:string}/arch/boot/syslinux/gpxelinux.0 boot ------- Then adding archiso_curl_url=http://192.168.0.77/ # darkhttpd /mnt/iso darkhttpd/1.8, copyright (c) 2003-2011 Emil Mikulic. listening on: http://0.0.0.0:80/ 1322117543 192.168.0.219 "GET /arch/boot/syslinux/gpxelinux.0" 200 89814 "" "gPXE/1.0.1+" 1322117545 192.168.0.219 "GET /arch/boot/syslinux/syslinux.cfg" 200 2112 "" "gPXE/1.0.0" 1322117545 192.168.0.219 "GET /arch/boot/syslinux/vesamenu.c32" 200 155894 "" "gPXE/1.0.0" 1322117545 192.168.0.219 "GET /arch/boot/syslinux/syslinux.cfg" 200 2112 "" "gPXE/1.0.0" 1322117546 192.168.0.219 "GET /arch/boot/syslinux/splash.png" 200 45614 "" "gPXE/1.0.0" 1322117580 192.168.0.219 "GET /arch/boot/i686/vmlinuz" 200 2947463 "" "gPXE/1.0.0" 1322117583 192.168.0.219 "GET /arch/boot/i686/archiso.img" 200 16698712 "" "gPXE/1.0.0" 1322117586 192.168.0.219 "GET /arch/aitab" 200 668 "" "curl/7.23.1 (i686-pc-linux-gnu) libcurl/7.23.1 OpenSSL/1.0.0e zlib/1.2.5 libssh2/1.3.0" 1322117586 192.168.0.219 "GET /arch/i686/root-image.fs.sfs" 200 88629485 "" "curl/7.23.1 (i686-pc-linux-gnu) libcurl/7.23.1 OpenSSL/1.0.0e zlib/1.2.5 libssh2/1.3.0" 1322117587 192.168.0.219 "GET /arch/i686/lib-modules.fs.sfs" 200 35356909 "" "curl/7.23.1 (i686-pc-linux-gnu) libcurl/7.23.1 OpenSSL/1.0.0e zlib/1.2.5 libssh2/1.3.0" 1322117587 192.168.0.219 "GET /arch/any/usr-share.fs.sfs" 200 55234797 "" "curl/7.23.1 (i686-pc-linux-gnu) libcurl/7.23.1 OpenSSL/1.0.0e zlib/1.2.5 libssh2/1.3.0" I need to sleep, see later! -- Gerardo Exequiel Pozzi \cos^2\alpha + \sin^2\alpha = 1