Simplify build process, using the same method like in shutdown hook by mkinitcpio
we still need a custom shutdown script for archiso,
since "twisted" structure of block devices.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Add libraries from /usr/lib and /sbin/losetup.
* Use used_block_devices to detach loop devices.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This list includes block devices of:
* Boot medium [archisodevice] (only if no copytoram= is used)
* Loop medium [img_dev] (only if no copytoram= is used)
* COW space [cowdevice] (only if cowdevice= is used (no tmpfs is used))
* Loop devices used for SquashFS images.
* Loop devices used for device-mapper devices (two per each dm-device, one RO{*.fs} and one RW{*.cow})
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
New losetup from util-linux 2.21 uses new /dev/loop-control from Linux 3.1.
Needs mkinitcpio-0.8.2+ (provides modules.devname, or workaround with earlymodules=loop)
Get advantages from it! Removing custom shell code.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This is needed for initscripts 2012.01, at least the entry for /.
Otherwise / is remounted ro, but not remounted rw later.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This was the first implementation that downloads the complete ISO,
but now we have the posibility of download only needed *.sfs files.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This was useful to me during development of dm-snapshot support
to create very quickly isos without wating for SquashFS compression.
Is time to remove this, I think the is no practical usage,
and make the code a bit more simple.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Now we have more than one PXE boot methods.
* archiso_ndb_srv= accepts special ${pxeserver} parameter like in others PXE hooks.
* This allows to setup network from initramfs without forcing using a special PXE hook.
* Update README
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
We are currently checksuming all files inside $archisobasedir
(aitab, *sfs, kernel/initramfs and boot/syslinux related files)
this is stored in one file only. Its works good for now,
but I think we only need to checksum only aitab and *.sfs if they are needed.
Currently if you boot a dual-iso in i686, also checksum is done
for *.sfs of x86_64. Not a big issue, this just take a bit more time.
The real issue is when booting via PXE with HTTP/FTP methods,
since they download only aitab and needed *.sfs files,
can not use directly the only one file where checksums are stored.
This patch does:
(1) Do not checksum syslinux related files, anyway you are already reach initramfs stage.
(2) Do not checksum kernel/initramfs files, for the same as (1)
(3) Two checksum.${arch}.md5 for each i686 and x86_64 for only aitab and *.sfs.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
[ramfs /]# cat /etc/resolv.conf
nameserver 192.168.0.77
[ramfs /]# curl -O http://releng.archlinux.org/pxeboot/README
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1129 100 1129 0 0 2191 0 --:--:-- --:--:-- --:--:-- 4589
[ramfs /]#
Do not "add_binary /lib/libnss_dns.so.2", because will add libnss_dns-VERSION.so.2 as libnss_dns.so.2
Is not an issue will work (nobody links directly to VERSION), but is not nice.
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>
In this way allow to mount /run/archiso/bootmnt from another hook,
but still use the logic from the main mount_hook, skipping only this mount.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Now bootmnt/img_dev is always a ro-mount,
and cowspace is first ro-mount then rw-mount.
* Fix a "hidden" bug: at the time of test [[ -ef ]], if devices nodes
are not ready, such test will fail then archisodevice will mounted ro and
when cow_device is mounted to be rw it fails.
(I recently suffered this on a machine with slow USB)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* ipconfig cmd writes a file in /tmp that is ready for direct evaluation.
We can use this instead of parsing the output, to do this some variable
renames are needed.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
* Support img_label=
* Allow use img_dev= as cow_device=
* Use new function _mnt_dev() from archiso.
* Check for error while setting loopback device.
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
This allow to take control again of these mountpoints outside initramfs.
(i.e: on deinitramfs stage at shutdown for unmount it)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Add some options to control where all COW files will be located.
Until this moment all files are located in a tmpfs filesystem.
Now is posible to set a device via a filesystem label or device node
plus a directory, where all these files will be stored.
All dm-snapshot devices will be persistent by default,
but this can be changed if wanted.
Take care, a filesystem that does not support sparse files maybe
is not the best choice for COW files, because they are created with
the same size (is apparent) like the read-only device (the image.fs inside .sfs).
Of course sooner or later, depending on use, these files actually end up
being as big as the read-only device.
KNOW-ISSUE: On shutdown in step "Unmounting Filesystems" will [FAIL],
all filesystem except $cow_device, will be unmounted/remounted-ro.
For this reason this change needs an archiso_shutdown hook, thats
unmount all block devices used by archiso. (Work in progress)
Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Separate this code from main mount hook, and make it more generic.
_mnt_dev(device, mountpoint, flags) ->
wait for device and mount, launch a shell if something goes wrong.
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>
Default value is "arch". This implies that all device mapper node
for snapshot devices will be for example: arch_root-image.
This helps AIF to hidden these devices from "Device Configuration".
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>