* add the network daemon to rc.conf
* configure dhcpd to background immediatly so we don't timeout if network is not up yet
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
* We use a rc.conf file loser to the upstream default.
* Use the recommend config files to setup hostname, locale, timezone and console
EDIT (Gerardo): Add empty FONT= and use ln -f for localtime
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Download and add the current installation guide as plain text.
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This was made originally using directly pacman-key file,
convert it in a patch form, to be more easy to track it.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Although everything should be fine now (due to the /lib -> /usr/lib symlink),
adjust everything to the proper path.
Edited (Gerardo): Also rename function name and image name to be consisten.
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Adding branding here is not worth the effort. We should keep the archiso environment as vanilla as possible.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
The old autologin method doesn't work anymore with recent login from util-linux.
Utilize agetty -a instead.
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This will allow users to install packages within the live environment.
We use the haveged daemon to increase entropy from CPU timings.
See http://www.issihosts.com/haveged/ for details.
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This ensures we do not pick up any testing or third party repos from the host.
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Download and add package signatures to the repository database
* Support any number of configured package caches
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
UTC is a more reasonable default than Canada/Pacific
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
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>
* For installed packages on live-enviroment use mkarchiso pkglist command.
* For packages in [core] repo in core.iso, make a list of them during repo generation.
It uses the same format like done by pkglist command: <repo>/<package>-<version>
(anyway repo is always core in this case).
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Now we can do this, since nobody touches this file before this step.
(previously by mkarchroot)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This mode allow to build all 6 ISOs in just one step if build type is <all>.
So "build.sh build all all" -> (single-i686, single-x86_64, dual) X (netinstall, core).
Note that the <purge> command is executed between each build step to save space,
so do not use this mode if you want to keep all temporal files in work_dir.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This allow to execute build.sh in 32-bit-compat without using a chroot
and doing tricks.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Remove devtools dependency.
* Better control over what files are touched inside chroot (root-image).
Now: NONE :)
* Two new commands:
+ init: To install {base} group and other needed packages (syslinux for now)
+ run: If we want to run some command inside chroot
(mkinitcpio, locale-gen, useradd, etc etc...)
* Renamed command: "created" to "install", says much better what does.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Needs mkinitpcio >= 0.8.4
Next changes will be for mdadm and mkinitcpio-nfs-utils:
* /lib/initcpio/udev/11-dm-initramfs.rules
* /lib/initcpio/ipconfig , /lib/initcpio/nfsmount
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
We are only using these files only for SYSLINUX bootloader that supports
".." as directories.
ISOLINUX jumps to archiso.cfg via isolinux.cfg
PXELINUX goes directly to archiso.cfg via DHCP configuration.
Suggested by Thomas.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* In that way we can have two differents syslinux menus depending if booting from
PXE or from non-PXE.
Some file renames are made to keep things ordered:
archiso_pxe* all things related to PXELINUX
archiso_sys* all things related to SYSLINUX
*_inc.cfg only contains INCLUDE directive
* By default NBD PXE option is selected for booting on timeout.
* As (NDB/NFS/HTTP/FTP) server is used the same IP from pxeserver.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* UI is more correct than DEFAULT for simple menu system.
* Remove TIMEOUT
* Remove PROMPT 0, this is the default value.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
On machines with common graphics chipsets (radeon, intel, nvidia), enable
KMS early. Downloading images from a remote server can take time, better
view the status with a nice resolution.
* In that way, we have unified directory scheme among {pxe,sys,ext,iso}linux,
sharing the same directory structure and config files.
* Also enable IPAPPEND (will show a warning message about unknown directive in non-pxelinux before menu)
NEW:
* Rename syslinux*.cfg -> archiso*.cfg
* Now syslinux.cfg is only a "loadconfig" trick like we are doing for isolinux
* All paths are now relative to %INSTALL_DIR% ($archisobasedir) (Default: /arch/)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
It add support for using *.sfs images via NFS.
It must be located after archiso_pxe_nbd in mkinitcpio.conf, in that way
NBD is the default.
New boot parameters:
archiso_nfs_srv=IP:/path
Set the NFS IP and path. Accepts ${pxeserver} as IP.
archiso_nfs_opt= Sets NFS mount opts (comma separated)
Defaults to:
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
:: Running Hook [archiso_pxe_common]
IP-Config: eth0 hardware address 52:54:00:12:34:57 mtu 1500
IP-Config: eth0 guessed broadcast address 192.168.0.255
IP-Config: eth0 guessed nameserver address 192.168.0.218
IP-Config: eth0 complete (from 192.168.0.218):
address: 192.168.0.90 broadcast: 192.168.0.255 netmask: 255.255.255.0
gateway: 192.168.0.218 dns0 : 192.168.0.218 dns1 : 0.0.0.0
rootserver: 192.168.0.218 rootpath:
filename :
:: Running Hook [archiso_pxe_nbd]
:: Running Hook [archiso_pxe_curl]
:: Running Hook [archiso_pxe_nfs]
:: Mounting '192.168.0.77:/mnt/iso'
...
192.168.0.77:/mnt/iso/ on /run/archiso/bootmnt type nfs (rw,relatime,vers=3,rsize=524288,wsize=524288,namlen=255,hard,nolock,proto=tcp,port=65535,timeo=7,retrans=3,sec=sys,local_lock=all,addr=192.168.0.77)
...
My /etc/exports
/mnt/iso 192.168.0.90(ro,no_subtree_check,no_root_squash)
Its add support for downloading the ISO image via HTTP/FTP with curl or download *.sfs files.
The files are downloaded on /run/archiso/curlspace (tmpfs) and setup a loop dev from it
(like in archiso_loop_mnt) in the ISO case, or just do a bind mount to
/run/archiso/bootmnt in the other case.
This hook must be located after archiso_pxe_nbd in mkinitcpio.conf, in that way
NBD is the default.
New bootparm:
* archiso_curl_url=(first form)
archiso_curl_url=http://192.168.0.7/archlinux/iso/archlinux.iso (absolute form)
Use an absolute URL. Fetch the entire ISO
archiso_curl_url=ftp://${pxeserver}/archlinux/iso/archlinux.iso (relative form)
Use the as IP the same server where PXE reside. Fetch the entire ISO
* archiso_curl_url=(second form)
archiso_curl_url=http://192.168.0.7/archlinux/iso/unpacked (absolute form)
Use an absolute URL. Where unpacked (an example name) is a directory where
${archisobasedir} ("arch" by default) is located with all *.sfs.
This fetch only needed files.
archiso_curl_url=ftp://${pxeserver}/archlinux/iso/unpacked (relative form)
Use the as IP the same server where PXE reside. Where unpacked (an example name)
is a directory where ${archisobasedir} ("arch" by default)
is located with all *.sfs. This fetch only needed files.
* curlspace_size= Set a size for a tmpfs filesystem where files are downloaded.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
One hook only setup the network device (archiso_pxe_common) the other
setup the NBD client (archiso_pxe_nbd).
New bootparam:
archiso_pxe_srv=IP
Allow to set an IP different from the PXE server.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Remove IDE stuff.
* Remove modules that can be added via relevant hooks.
* Replace sata with virtio in baseline profile.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Fix: FS#18959 - download_repos.sh does not report tcp timeouts and such
* Always use pacman cache. Previously pacman cache was used if package
already exists on it, now is also used to download pkg on it.
Finally copy all packages from cache with cp and make core.db.
* Using pacman, we can sure that package integrity is right.
* Always get a [core] package, in case of [testing] enabled.
* Now works when mirror is: Server = file:// ;)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This makes archiso_pxe_nbd functionallity full-independient from
archiso profiles (configs/*).
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Preparing terrain for UEFI support.
* Also make isohybrid hack in one step.
* Removed UDF layer, since xorriso does not support it.
* Removed unsupported options by xorriso (-uid/-gid/-allow-limited-size)
* Removed option already default in xorriso (-input-charset utf-8)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
usage ./build.sh [options] command <command options>
General options:
-N <iso_name> Set an iso filename (prefix)
Default: archlinux
-V <iso_version> Set an iso version (in filename)
Default: 2011.08.18
-L <iso_label> Set an iso label (disk label)
Default: ARCH_201108
-D <install_dir> Set an install_dir (directory inside iso)
Default: arch
-w <work_dir> Set the working directory
Default: work
-o <out_dir> Set the output directory
Default: out
-v Enable verbose output
-h This help message
Commands:
build <mode> <type>
Build selected .iso by <mode> and <type>
purge <mode>
Clean working directory except iso/ directory of build <mode>
clean <mode>
Clean working directory and .iso file in output directory of build <mode>
Command options:
<mode> Valid values 'single' or 'dual'
<type> Valid values 'netinstall', 'core' or 'all'
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Default (if not specified) -w work -o out.
-o <out_dir> is only used by 'iso' command.
Adjust build.sh of releng and baseline profile to reflect this change.
<project>
- work <- $work_dir
- out <- $out_dir
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
core/linux-atm:
* This was present in 2010.05
* Optionally needed by iproute2. Needed for ATM connections.
extra/mtools:
* This was present in 2010.05
* Optionally dependency of syslinux. Needed if want to install syslinux on vfat.
extra/smartmontools:
* Requested by Thomas Mudrunka
https://bugs.archlinux.org/task/25633
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
In this way:
* Prepare locales requested by boot param mostly early possible.
* Setup special console at end of rc.sysinit
Remove unneded include from automated_script (already included by rc.conf)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
purge_single command can be usefull to save space during build. It removes
all files in working directory except "iso/" and *.iso.
Workflow can be:
(32) ./build.sh all_iso_single -> i686 *.iso are ready.
(32) ./build.sh purge_single -> safe cleanup.
(64) ./build.sh all_iso_single -> x86_64 *.iso are ready.
(64) ./build.sh purge_single -> safe cleanup.
(any) ./build.sh all_iso_dual -> dual *.iso are ready.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
re-mount / as rw does not fail since regular file /etc/mtab does not exist
at that stage.
/etc/mtab was removed from root-image in this commit:
93763a2d82
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Use device mapper + snapshot module, instead union layer filesystem.
* A block-level approach vs vfs-level.
* No more unofficial (Linux) things.
* More memory is needed.
* Refactor mkarchiso.
* Refactor hooks/archiso.
* Fix install/archiso_pxe_nbd
(due recent change in mkinitcpio-0.6.15 on checked_modules()/all_modules())
[Thanks Dave for the improved workaround]
* New configs/releng to build official images.
* Works with a Bash script instead of Makefile.
(better control and easy to maintain)
* Remove configs/syslinux-iso.
* Remove archiso2dual script. Integrate functionality in configs/releng.
* New configs/baseline to build the most basic live medium or use as template.
* New README (draft). [Thanks Dieter for fixing english grammar]
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Change from none -> union (looks like util-linux is confused BUG?)
Avoid the message: "umount aufs failed: not found" at shutdown.
#1 mount -t tmpfs none /something
#2 mount -t tmpfs xxxx /something
The output of findmnt -rnu -o SOURCE will be blank in #1.
* Change from aufs -> auto, make its more generic.
* Update devpts and shm entries.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This makes interactive installations over serial consoles possible with
nothing more than specifying the console= kernel parameter.
Changed inittab id "s0" -> "z0" to avoid conflict with line ttyS0. (Gerardo)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Add two parameters:
img_dev=/dev/sdNM
where /dev/sdNM is the device where .iso is located.
img_loop=/path/to/arch.iso
where /path/to/arch.iso is the full path of the .iso in the device img_dev.
Original idea from Baurzhan Muftakhidinov.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This is how ISO will look now:
/syslinux only syslinux related files (syslinux.cfg, *.c32, etc)
/arch/ isomounts + *.sqfs images
/arch/boot/ Linux + initramfs + Memtest86+ + other files for early boot stage
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
syslinux's KERNEL command tries to autodetect the type of the kernel
by looking at the file's extension. This is unsafe, use the explicit
versions instead:
LINUX - for Linux kernels (memtest is booted like a Linux kernel, too)
COM32 - for COM32 modules
COMBOOT - for comboot modules (only poweroff.com right now)
See http://syslinux.zytor.com/wiki/index.php/SYSLINUX#KERNEL_file
Some modern HDD come with agressive APM settings by default,
not only "green ready" drive also "high end" drives.
Adding hdparm so users can change/disable hdd settings (mostly -B -S -M).
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
The name of the bootloader is syslinux, while isolinux is just one
of many components. isolinux.bin now also accepts syslinux.cfg
as a configuration file name (as do all other loaders).
Thus, rename the isolinux/ folder to syslinux/, and rename
isolinux.cfg to syslinux.cfg. The only occurrence of 'isolinux'
is now the actual loader file 'isolinux.bin'. This makes
the transition from isolinux to the other syslinux loaders
easier when remastering the ISO onto another medium.
HDT is a hardware detection/info tool. It will show information about your hardware,
including PCI devices. It will also show the names of the kernel modules that will
support your devices.
* squashfs images that will be part of read-only branchs for union mount in /
are mounted on /ro_branch/{image_name} instead of /tmpfs/mnt/{image_name}
(and avoid empty dirs on live env under /mnt)
* tmpfs that will be part of read-write branch for union mount in /
is mounted on /rw_branch instead of /tmpfs
* tmpfs that is for store *.sqfs images when copytoram=y, is mounted on
/copytoram instead of /tmpfs.sqfs
* tmpfs_size= parameter renamed to rw_branch_size=
* tmpfs_sqfs_size= parameter renamed to copytoram_size=
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
First install {base} group, then install rest of packages listed
at in packages file.
In this way, ensure a fully base system installed first,
avoinding errors from install scriptlets of rest of packages.
(currently there is no issue with packages listed on packages files,
but if some add more packages to customize the iso will see errors)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
dialog is no longer in the base group, but it needs to be included on
the CD for AIF.
Signed-off-by: Christopher Brannon <cmbrannon79@gmail.com>
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
This script can be part of the wiki, or in another package/project.
(See Dieter comment at FS#12619)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Register a mount_hook if booted via PXE. This allows to do all needed
steps before and after calling archiso_mount_handler.
* umount and disconnect network device if copytoram=y
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
The purpose of this script is to setup a basic PXE server enviroment
from Arch Linux live-media. Only need to setup an ip address in the
machine and launch it. Booting all machines conected to the network
via PXE will boot Arch Linux Live media :)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
nbd (network block device utilities) package is required.
This package is in AUR at this moment.
http://aur.archlinux.org/packages.php?ID=9691
Also added dnsmasq pkg, so the live-medium, appart of support booting from PXE
also add the capability to acts as server for PXE & NBD.
This is a dirty script to ilustrate how to launch server:
---- Cut here ----
IP=$1
ISO=$2
ifconfig eth0 ${IP}
dnsmasq \
--enable-tftp \
--tftp-root=/bootmnt/boot \
--dhcp-boot=/pxelinux.0,"${IP}" \
--dhcp-range=${IP%.*}.2,${IP%.*}.254,86400
nbd-server 9040 ${ISO} -r
---- Cut here ----
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>