Code Monkey home page Code Monkey logo

archiso's Introduction

INDEX
-----

* Alternative boot methods (configs/releng)
  * ISO in loopback mode
  * ISO in memdisk mode
  * Network booting (PXE) [first stage]
    * DHCP + TFTP
    * DHCP + HTTP
    * HTTP/NFS/NBD [second stage]



*** Alternative boot methods (configs/releng)

ISO images names consist of: archlinux-<YYYY>.<MM>.<DD>-dual.iso

Where:
    <YYYY> Year
    <MM> Month
    <DD> Day


** ISO in loopback mode.

Note: Described method is for using with GRUB2.
      GRUB2 is installed on target media and archlinux-<YYYY>.<MM>.<DD>-dual.iso
      is at path <TARGET-PATH> on disk <D> and partition <P>,
      where filesystem is labeled as <TARGET-FS-LABEL>.

menuentry "Arch Linux (x86_64)" {
    set isofile="/<TARGET-PATH>/archlinux-<YYYY>.<MM>.<DD>-dual.iso"
    loopback loop (hd<D>,<P>)$isofile
    linux (loop)/arch/boot/x86_64/vmlinuz archisolabel=<FS-LABEL> img_label=<TARGET-FS-LABEL> img_loop=$isofile
    initrd (loop)/arch/boot/x86_64/archiso.img
}

menuentry "Arch Linux (i686)" {
    set isofile="/<TARGET-PATH>/archlinux-<YYYY>.<MM>.<DD>-dual.iso"
    loopback loop (hd<D>,<P>)$isofile
    linux (loop)/arch/boot/i686/vmlinuz archisolabel=<FS-LABEL> img_label=<TARGET-FS-LABEL> img_loop=$isofile
    initrd (loop)/arch/boot/i686/archiso.img
}


** ISO in memdisk mode.

Note: Described method is for using with SYSLINUX. Anyway MEMDISK from SYSLINUX can work
      with other bootloaders.
      SYSLINUX is installed on target media and archlinux-<YYYY>.<MM>.<DD>-dual.iso
      is at path <TARGET-PATH>.
      On 32-bit systems, is needed to pass vmalloc=nnM to the kernel, where nn is the size
      of the ISO image plus 64 MiB (or 128 MiB).


LABEL arch_x64
   LINUX memdisk
   INITRD /<TARGET-PATH>/archlinux-<YYYY>.<MM>.<DD>-dual.iso
   APPEND iso

LABEL arch_x32
   LINUX memdisk
   INITRD /<TARGET-PATH>/archlinux-<YYYY>.<MM>.<DD>-dual.iso
   APPEND iso


** Network booting (PXE).

All ISOs are ready to act as PXE server, some manual steps are needed
to setup the desired PXE boot mode.
Alternatively it is possible to use an existing PXE server following the same logic.
Note: Setup network first, adjust IP adresses, and respect all slashes "/".

First stage is for loading kernel and initramfs via PXE, two methods described here:

* DHCP + TFTP

Note: All NIC firmwares should support this.

# dnsmasq --port=0 \
          --enable-tftp \
          --tftp-root=/run/archiso/bootmnt \
          --dhcp-range=192.168.0.2,192.168.0.254,86400 \
          --dhcp-boot=/arch/boot/syslinux/lpxelinux.0 \
          --dhcp-option-force=209,boot/syslinux/archiso.cfg \
          --dhcp-option-force=210,/arch/

* DHCP + HTTP

Note: Not all NIC firmware supports HTTP and DNS (if domain name is used).
      At least this works with iPXE and gPXE.

# dnsmasq --port=0 \
          --dhcp-range=192.168.0.2,192.168.0.254,86400 \
          --dhcp-boot=http://192.168.0.7/arch/boot/syslinux/lpxelinux.0 \
          --dhcp-option-force=209,boot/syslinux/archiso.cfg \
          --dhcp-option-force=210,http://192.168.0.7/arch/


Once the kernel is started from PXE, SquashFS files and other misc files
inside "arch" directory must be loaded (second stage). One of the following
methods can be used to serve the rest of live-medium.

* HTTP

# darkhttpd /run/archiso/bootmnt


* NFS

# echo "/run/archiso/bootmnt 192.168.0.*(ro,no_subtree_check,no_root_squash)" >> /etc/exports
# systemctl start rpc-mountd.service


* NBD

Note: Adjust ARCH_201302 as needed.

# cat << EOF > /tmp/nbd-server.conf
[generic]
[archiso]
    readonly = true
    exportname = /dev/disk/by-label/ARCH_201302
EOF
# nbd-server -C /tmp/nbd-server.conf

archiso's People

Contributors

aaronmgriffin avatar bluewind avatar boenki avatar brain0 avatar chandan83 avatar dieterbe avatar ka2107 avatar louipc avatar mrelendig avatar pierres avatar rcrowley avatar simoleone avatar svenstaro avatar toofishes avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.