archiso with gnome and d-leatin1 keyboard
6caa5bcb69
Makes an efiboot.img (FAT16) for "El Torito" (additional). Under an EFI-system, implies that this .ISO works only if is used as "CD-ROM/DVD-ROM" not in ISO-HYBRID-MBR mode. If you want, an EFI-ready USB-key, just unpack this "<ISO>/EFI/efiboot.img" (FAT16) to "<USB-key-FAT-formatted>/EFI" then copy "<ISO>/arch" and setup the filesystem label. An aditional EFI shell is provided with an startup script for automatic booting until EFI_STUB supports "linux.conf" to pass boot parms to kernel. Anyway I think that is a good idea to keep this shell, so can customize boot parms, or for doing other tasks on systems without an EFI-shell. RFCv1: Initial efiboot.img build with vmlinuz.efi (Linux with EFI_STUB enabled) and archiso.img (initramfs). RFCv2: Use an startup.nsh with EFI-Shell 2.0 (generated from build.sh) for automatic boot. RFCv3: Use and older EFI-Shell 1.0 instead of 2.0, since not all UEFI-systems are compatible with 2.3+ specs. RFCv4: The script "startup.nsh" improved by Keshav P R, using a for-loop (see notes below from original commit), now that has more than 1-line, I moved it to an independent file and is parsed by build.sh. ---- About startup.nsh: Author: Keshav P R <the.ridikulus.rat@gmail.com> Date: Thu Apr 5 10:33:20 2012 +0530 [configs/releng] Search in all existing UEFI FS mountpoints for archiso efistub kernel file There is no guarantee that the efistub kernel will always be in fs0: (similar to the case inside linux OS where the sda, sdb confusion exists, hence the need for UUIDs), especially when USB (instead os CD/ISO) is used for booting. Hence loop through all possible fs mountpoints (in UEFI) in startup.nsh and try to launch the first mountpoint that contains the archiso files. Cd's into the fs%m:\EFI\archiso directory also may remove future issues with efistub's linux.conf where the efistub might have problems identifying the directory from which the kernel was launched. Also add an helpful echo message showing the user the UEFI PATH to the archiso kernel file being launched by startup.nsh . Hopefully this should work in both CD and USB. Tested in Tianocore UDK/EDK2 DuetPkg X64 UEFI 2.3.1 firmware with EdkShellBinPkg's Shell. ---- Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar> |
||
---|---|---|
archiso | ||
configs | ||
README | ||
TODO |
INDEX ----- * Boot parameters (initramfs stage) * hooks/archiso * hooks/archiso_pxe_common * hooks/archiso_pxe_nbd * hooks/archiso_pxe_http * hooks/archiso_pxe_nfs * hooks/archiso_loop_mnt * Boot parameters (only for configs/releng) * etc/rc.conf * Build requirements * Image types generated by mkarchiso. * File format for aitab. * Why the /isolinux and /arch/boot/syslinux directories? * Know issues * Building the most basic Arch Linux live media. (configs/baseline) * Building official Arch Linux live media. (configs/releng) *** Boot parameters (initramfs stage) ** hooks/archiso * archisolabel= Set the filesystem label where archiso files reside. Default: (unset) * archisodevice= Set the device node where archiso medium is located. Default: "/dev/disk/by-label/${archisolabel}" * archisobasedir= Set the base directory where all files reside. Default: "arch" * aitab= Set the path for "aitab" file. Default: ${archisobasedir}/aitab * copytoram= If set to "y" or just "copytoram" without arguments, all SquashFS are copied to "RAM". Default: (unset) * checksum= If set to "y" or just "checksum" without arguments, performs a self-test of all files inside ${install_dir}, and continue booting if ok. Default: (unset) * cow_label= Set the filesystem label where COW (dm-snapshot) files must be stored. Default: (unset) * cow_device= Set the device node where COW (dm-snapshot) files must be stored. Default: (unset) or "/dev/disk/by-label/${cow_label}" * cow_directory= Set a directory inside ${cow_device}. Default: "/persistent_${archisolabel}/${arch}" * cow_persistent= Set if snapshots are persistent "P" or non-persistent "N". Default: "N" (if no ${cow_device} is used) otherwise "P". * cowspace_size= Set the size of tmpfs /cowspace. This space is used for Copy-On-Write files of dm-snapshot. Size is in bytes (suffix with "k", "m" and "g") or in percentage of available RAM. Default: "75%" * copytoram_size= Set the size of tmpfs. This space is used for copy of all SquashFS images used, if copytoram=y. Size is in bytes (suffix with "k", "m" and "g") or in percentage of available RAM. Default: "75%" * dm_snap_prefix= Set a prefix for device-mapper snapshot node names. Default: "arch" * arch= Force an architecture type (i686 | x86_64). Do not set it for normal operations. Useful for running a 64 bit kernel / 32 bit userspace. Default: (architecture of running kernel) ** hooks/archiso_pxe_common * ip= This parameter is setup automatically by PXELINUX when option "IPAPPEND" is set to 1 or 2 in config. ip=<client-ip>:<boot-server-ip>:<gw-ip>:<netmask> Default: (set via PXE server) * BOOTIF= This parameter is setup automatically by PXELINUX when option "IPAPPEND" is set to 2 or 3 in config. BOOTIF=<hardware-address-of-boot-interface> Default: (set via PXELINUX) ** hooks/archiso_pxe_nbd * archiso_nbd_name= Set NBD export name used by the server. Default: archiso * archiso_nbd_srv= Set an IP address where NBD reside. If ${pxeserver} is used, PXE IP will be used. Default: (unset) ** hooks/archiso_pxe_http * archiso_http_srv= Set an HTTP URL (must end with /) where ${archisobasedir} is found with all *.sfs files. In the IP/domain part if ${pxeserver} is used, use PXE IP. Default: (unset) * archiso_http_spc= Set the size of tmpfs where *.sfs files are downloaded. Default: "75%" ** hooks/archiso_pxe_nfs * archiso_nfs_srv= Set the NFS-IP:/path of the server In the IP part if ${pxeserver} is used, PXE IP will be used. Default: (unset) * archiso_nfs_opt= Set NFS mount options separated by comma. Default: (unset, see below) These are the implicit options: port = as given by server portmap daemon rsize = 1024 wsize = 1024 timeo = 7 retrans = 3 acregmin = 3 acregmax = 60 acdirmin = 30 acdirmax = 60 flags = hard, nointr, noposix, cto, ac ** hooks/archiso_loop_mnt * img_label= Set the filesystem label where archiso-image.iso. Default: (unset) * img_dev= Device where archiso-image.iso reside. Default: (unset) or "/dev/disk/by-label/${img_label}" * img_loop= Full path where archiso-image.iso is located on ${img_dev} Default: (unset) *** Boot parameters (only for configs/releng) ** /etc/rc.conf By default these parameters are set by default to these values if nothing is specified on command line. * locale= "en_US.UTF-8" * daemon_locale= "no" * hardwareclock= "UTC" * timezone= "Canada/Pacific" * keymap= "us" * consolefont= (unset) * consolemap= (unset) * usecolor= "yes" *** Build requirements ** For mkarchiso script needs these packages (build host): + squashfs-tools for mksquashfs + libisoburn for xorriso ** For configs/releng build.sh needs theses packages (build host): + dosfstools for mkfs.vfat ** For these hooks needs these packages (on target root-image) * archiso + (none) * archiso_loop_mnt + (none) * archiso_pxe_common + mkinitcpio-nfs-utils for ipconfig * archiso_pxe_nbd + nbd for nbd-client * archiso_pxe_http + curl for curl * archiso_pxe_nfs + mkinitcpio-nfs-utils for nfsmount * archiso_shutdown + (none) *** Image types generated by mkarchiso. * image-name.sfs SquashFS image with all files directly on it. * image-name.fs.sfs SquashFS with only one file inside (image-name.fs), which is an image of some type of filesystem (ext4, ext3, ext2, xfs), all files reside on it. *** File format for aitab. The aitab file holds information about the filesystems images that must be created by mkarchiso and mounted at initramfs stage from the archiso hook. It consists of some fields which define the behaviour of images. # <img> <mnt> <arch> <sfs_comp> <fs_type> <fs_size> <img> Image name without extension (.fs .fs.sfs .sfs). <mnt> Mount point. <arch> Architecture { i686 | x86_64 | any }. <sfs_comp> SquashFS compression type { gzip | lzo | xz }. <fs_type> Set the filesystem type of the image { ext4 | ext3 | ext2 | xfs }. A special value of "none" denotes no usage of a filesystem. In that case all files are pushed directly to SquashFS filesystem. <fs_size> An absolute value of file system image size in MiB. (example: 100, 1000, 4096, etc) A relative value of file system free space [in percent]. {1%..99%} (example 50%, 10%, 7%). This is an estimation, and calculated in a simple way. Space used + 10% (estimated for metadata overhead) + desired % *** Why the /isolinux and /arch/boot/syslinux directories? The /isolinux directory holds files needed for the ISOLINUX boot loader module of SYSLINUX. ISOLINUX can not find config files on /arch/boot/syslinux, like other boot loaders modules (EXTLINUX, SYSLINUX, etc). When make your custom boot-pendrive, you need to copy /arch directory to it. /isolinux/isolinux.cfg just holds /arch/boot/syslinux/syslinux.cfg *** Know issues ** On shutdown there are two steps that [FAIL]: "Unmounting Swap-backed Filesystems" and "Unmounting Non-API Filesystems", These filesystem are in use at this stage by archiso, but... This is not a real issue since, all mounted filesystem, loopback devices and device mapper devices made by archiso will be "free" on "shutdown tmpfs" (A.K.A deinitramfs), build at initramfs by [archiso_shutdown] initcpio hook. *** Building the most basic Arch Linux live media. (configs/baseline) * Install needed packages. # pacman -S git make squashfs-tools libisoburn --needed * Install archiso. # git clone git://projects.archlinux.org/archiso.git # make -C archiso/archiso install * Build a basic iso. # /usr/share/archiso/configs/baseline/build.sh Note: If you want to customize, just see the configs/releng directory which is used to build official images with much more things. *** Building official Arch Linux live media. (configs/releng) * Install needed packages. # pacman -S git make squashfs-tools libisoburn --needed * Install archiso. # git clone git://projects.archlinux.org/archiso.git # make -C archiso/archiso install * Build them! # /usr/share/archiso/configs/releng/build.sh build all all Note: See build.sh -h for more options.