Merge pull request #1899 from thypon/mkinitcpio
New package: mkinitcpio-18
This commit is contained in:
commit
4279c09028
33 changed files with 2643 additions and 13 deletions
|
@ -1 +0,0 @@
|
||||||
busybox
|
|
1
srcpkgs/busybox-ntpd/files
Symbolic link
1
srcpkgs/busybox-ntpd/files
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../busybox/files/
|
1
srcpkgs/busybox-ntpd/patches
Symbolic link
1
srcpkgs/busybox-ntpd/patches
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../busybox/patches/
|
43
srcpkgs/busybox-ntpd/template
Normal file
43
srcpkgs/busybox-ntpd/template
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Build template for 'busybox-ntpd'.
|
||||||
|
pkgname=busybox-ntpd
|
||||||
|
version=1.23.2
|
||||||
|
revision=1
|
||||||
|
wrksrc="busybox-$version"
|
||||||
|
hostmakedepends="perl"
|
||||||
|
short_desc="The Swiss Army Knife of Embedded Linux (ntpd)"
|
||||||
|
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
||||||
|
license="GPL-2"
|
||||||
|
homepage="http://www.busybox.net"
|
||||||
|
distfiles="${homepage}/downloads/busybox-$version.tar.bz2"
|
||||||
|
checksum=05a6f9e21aad8c098e388ae77de7b2361941afa7157ef74216703395b14e319a
|
||||||
|
|
||||||
|
pre_build() {
|
||||||
|
mkdir -p src
|
||||||
|
mv * src || true
|
||||||
|
|
||||||
|
local t="busybox-ntpd"
|
||||||
|
mkdir -p $t
|
||||||
|
make -C $t CFLAGS="$CFLAGS" KBUILD_SRC=${wrksrc}/src \
|
||||||
|
-f ${wrksrc}/src/Makefile defconfig
|
||||||
|
cp -f ${FILESDIR}/${t}.dotconfig ${t}/.config
|
||||||
|
|
||||||
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
|
*-musl) sed -i -e /CONFIG_FEATURE_VI_REGEX_SEARCH/s/y/n/ \
|
||||||
|
-e /CONFIG_FEATURE_MOUNT_NFS/s/y/n/ \
|
||||||
|
${t}/.config;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$CROSS_BUILD" ]; then
|
||||||
|
sed -e \
|
||||||
|
"s,\(CONFIG_CROSS_COMPILER_PREFIX\).*,\1=\"${XBPS_CROSS_TRIPLET}-\",g" \
|
||||||
|
-i ${t}/.config
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
do_build() {
|
||||||
|
local t="busybox-ntpd"
|
||||||
|
make -C $t SKIP_STRIP=y CFLAGS="$CFLAGS" ${makejobs}
|
||||||
|
}
|
||||||
|
do_install() {
|
||||||
|
vbin busybox-ntpd/busybox_unstripped busybox-ntpd
|
||||||
|
vsv busybox-ntpd
|
||||||
|
}
|
1
srcpkgs/busybox-ntpd/update
Normal file
1
srcpkgs/busybox-ntpd/update
Normal file
|
@ -0,0 +1 @@
|
||||||
|
ignore="*.0"
|
|
@ -1,7 +1,7 @@
|
||||||
# Build template for 'busybox'.
|
# Build template for 'busybox'.
|
||||||
pkgname=busybox
|
pkgname=busybox
|
||||||
version=1.23.2
|
version=1.23.2
|
||||||
revision=1
|
revision=2
|
||||||
hostmakedepends="perl"
|
hostmakedepends="perl"
|
||||||
short_desc="The Swiss Army Knife of Embedded Linux"
|
short_desc="The Swiss Army Knife of Embedded Linux"
|
||||||
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
||||||
|
@ -24,7 +24,7 @@ pre_build() {
|
||||||
mv * src || true
|
mv * src || true
|
||||||
|
|
||||||
local t
|
local t
|
||||||
for t in busybox busybox-static busybox-ntpd; do
|
for t in busybox busybox-static; do
|
||||||
mkdir -p $t
|
mkdir -p $t
|
||||||
make -C $t CFLAGS="$(_cflags $t)" KBUILD_SRC=${wrksrc}/src \
|
make -C $t CFLAGS="$(_cflags $t)" KBUILD_SRC=${wrksrc}/src \
|
||||||
-f ${wrksrc}/src/Makefile defconfig
|
-f ${wrksrc}/src/Makefile defconfig
|
||||||
|
@ -45,7 +45,7 @@ pre_build() {
|
||||||
}
|
}
|
||||||
do_build() {
|
do_build() {
|
||||||
local t
|
local t
|
||||||
for t in busybox busybox-static busybox-ntpd; do
|
for t in busybox busybox-static; do
|
||||||
make -C $t SKIP_STRIP=y CFLAGS="$(_cflags $t)" ${makejobs}
|
make -C $t SKIP_STRIP=y CFLAGS="$(_cflags $t)" ${makejobs}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
@ -60,11 +60,3 @@ busybox-static_package() {
|
||||||
vbin busybox-static/busybox busybox.static
|
vbin busybox-static/busybox busybox.static
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
busybox-ntpd_package() {
|
|
||||||
short_desc+=" (ntpd)"
|
|
||||||
pkg_install() {
|
|
||||||
vbin busybox-ntpd/busybox_unstripped busybox-ntpd
|
|
||||||
vsv busybox-ntpd
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
1
srcpkgs/mkinitcpio-encrypt
Symbolic link
1
srcpkgs/mkinitcpio-encrypt
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
mkinitcpio
|
21
srcpkgs/mkinitcpio-encryptssh/template
Normal file
21
srcpkgs/mkinitcpio-encryptssh/template
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Template file for 'mkinitcpio-encryptssh'
|
||||||
|
pkgname=mkinitcpio-encryptssh
|
||||||
|
version=0.16
|
||||||
|
revision=1
|
||||||
|
_realname=dropbear_initrd_encrypt
|
||||||
|
wrksrc="$_realname-$version-$revision"
|
||||||
|
noarch=yes
|
||||||
|
depends="mkinitcpio cryptsetup dropbear mkinitcpio-nfs-utils psmisc iproute2"
|
||||||
|
short_desc="Allows for an encrypted root device to be unlocked remotely over SSH"
|
||||||
|
maintainer="Andrea Brancaleoni <miwaxe@gmail.com>"
|
||||||
|
license="GPL-3"
|
||||||
|
homepage="https://github.com/grazzolini/dropbear_initrd_encrypt"
|
||||||
|
distfiles="$homepage/archive/v$version-$revision.tar.gz"
|
||||||
|
checksum=6b24ea3d6e1ee55d304ca31707fe17c545f7ea843a13b764e22475f838c41eae
|
||||||
|
|
||||||
|
do_install() {
|
||||||
|
vinstall dropbear_hook 644 usr/lib/initcpio/hooks dropbear
|
||||||
|
vinstall dropbear_install 644 usr/lib/initcpio/install dropbear
|
||||||
|
vinstall encryptssh_hook 644 usr/lib/initcpio/hooks encryptssh
|
||||||
|
vinstall encryptssh_install 644 usr/lib/initcpio/install encryptssh
|
||||||
|
}
|
1
srcpkgs/mkinitcpio-lvm2
Symbolic link
1
srcpkgs/mkinitcpio-lvm2
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
mkinitcpio
|
1
srcpkgs/mkinitcpio-mdadm
Symbolic link
1
srcpkgs/mkinitcpio-mdadm
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
mkinitcpio
|
90
srcpkgs/mkinitcpio-nfs-utils/files/initcpio-hook-net
Normal file
90
srcpkgs/mkinitcpio-nfs-utils/files/initcpio-hook-net
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
# vim: set ft=sh:
|
||||||
|
run_hook() {
|
||||||
|
local line i net_mac bootif_mac bootif_dev defaultrootpath defaultserver
|
||||||
|
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
|
||||||
|
local DEVICE
|
||||||
|
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
|
||||||
|
local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH
|
||||||
|
local filename
|
||||||
|
# /tmp/net-*.conf
|
||||||
|
|
||||||
|
if [ -z "${ip}" -a -n "${nfsaddrs}" ]; then
|
||||||
|
ip="${nfsaddrs}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${ip}" ]; then
|
||||||
|
if [ -n "${BOOTIF}" ]; then
|
||||||
|
bootif_mac=${BOOTIF#01-}
|
||||||
|
bootif_mac=${bootif_mac//-/:}
|
||||||
|
for i in /sys/class/net/*/address; do
|
||||||
|
read net_mac < ${i}
|
||||||
|
if [ "${bootif_mac}" == "${net_mac}" ]; then
|
||||||
|
bootif_dev=${i#/sys/class/net/}
|
||||||
|
bootif_dev=${bootif_dev%/address}
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
ip="${ip}::${bootif_dev}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# setup network and save some values
|
||||||
|
ipconfig "ip=${ip}"
|
||||||
|
|
||||||
|
for conf in /tmp/net-*.conf; do
|
||||||
|
[ -f "$conf" ] && . "$conf"
|
||||||
|
done
|
||||||
|
|
||||||
|
# calculate nfs_server, nfs_path and nfs_option for later nfs mount
|
||||||
|
if [ "${root}" = "/dev/nfs" -o "${nfsroot}" != "" ]; then
|
||||||
|
# parse ROOTPATH if defined by dhcp server
|
||||||
|
if [ -n "${ROOTPATH}" ]; then
|
||||||
|
line="${ROOTPATH}"
|
||||||
|
nfs_server="${line%%:*}"
|
||||||
|
[ "${nfs_server}" = "${line}" ] && nfs_server="${ROOTSERVER}"
|
||||||
|
defaultserver="${nfs_server}"
|
||||||
|
line="${line#*:}"
|
||||||
|
nfs_path="${line}"
|
||||||
|
defaultrootpath="${nfs_path}"
|
||||||
|
else
|
||||||
|
# define a default ROOTPATH
|
||||||
|
if [ "${ROOTPATH}" = "" ]; then
|
||||||
|
defaultrootpath="/tftpboot/${IPV4ADDR}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# parse nfsroot if present (overrides ROOTPATH)
|
||||||
|
if [ -n "${nfsroot}" ]; then
|
||||||
|
line="${nfsroot}"
|
||||||
|
nfs_server="${line%%:*}"
|
||||||
|
[ -z "${nfs_server}" ] && nfs_server="${defaultserver}"
|
||||||
|
line="${line#*:}"
|
||||||
|
nfs_path="${line%%,*}"
|
||||||
|
line="${line#"${nfs_path}"}"
|
||||||
|
[ -z "${nfs_path}" ] && nfs_path="${defaultrootpath}"
|
||||||
|
nfs_option="${line#","}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ensure root and filesystem type are set proper for nfs boot
|
||||||
|
root="/dev/nfs"
|
||||||
|
rootfstype="nfs"
|
||||||
|
|
||||||
|
echo "NFS-Mount: ${nfs_server}:${nfs_path}"
|
||||||
|
|
||||||
|
# set mount handler for NFS
|
||||||
|
mount_handler="nfs_mount_handler"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
nfs_mount_handler() {
|
||||||
|
if [ -z "$nfs_server" -o -z "$nfs_path" ]; then
|
||||||
|
err "Unable to mount root filesystem over NFS: wrong parameters."
|
||||||
|
echo "You are being dropped to a recovery shell"
|
||||||
|
echo " Type 'exit' to try and continue booting"
|
||||||
|
launch_interactive_shell
|
||||||
|
msg "Trying to continue (this will most likely fail) ..."
|
||||||
|
fi
|
||||||
|
nfsmount ${nfs_option:+-o ${nfs_option}} "${nfs_server}:${nfs_path}" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
108
srcpkgs/mkinitcpio-nfs-utils/files/initcpio-install-net
Normal file
108
srcpkgs/mkinitcpio-nfs-utils/files/initcpio-install-net
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
build() {
|
||||||
|
add_checked_modules '/drivers/net/'
|
||||||
|
add_module nfsv3?
|
||||||
|
|
||||||
|
add_binary "/usr/lib/initcpio/ipconfig" "/bin/ipconfig"
|
||||||
|
add_binary "/usr/lib/initcpio/nfsmount" "/bin/nfsmount"
|
||||||
|
|
||||||
|
add_runscript
|
||||||
|
}
|
||||||
|
|
||||||
|
help() {
|
||||||
|
cat <<HELPEOF
|
||||||
|
This hook loads the necessary modules for a network device.
|
||||||
|
Detection will take place at runtime. To minimize the modules
|
||||||
|
in the image, add the autodetect hook too.
|
||||||
|
For pcmcia net devices please use pcmcia hook too.
|
||||||
|
|
||||||
|
Kernel Parameters:
|
||||||
|
An interface spec can be either short form, which is just the name of
|
||||||
|
an interface (eth0 or whatever), or long form. The long form consists
|
||||||
|
of up to seven elements, separated by colons:
|
||||||
|
|
||||||
|
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
|
||||||
|
nfsaddrs= is an alias to ip= and can be used too.
|
||||||
|
|
||||||
|
<client-ip> IP address of the client. If empty, the address will
|
||||||
|
either be determined by RARP/BOOTP/DHCP. What protocol
|
||||||
|
is used de- pends on the <autoconf> parameter. If this
|
||||||
|
parameter is not empty, autoconf will be used.
|
||||||
|
|
||||||
|
<server-ip> IP address of the NFS server. If RARP is used to
|
||||||
|
determine the client address and this parameter is NOT
|
||||||
|
empty only replies from the specified server are
|
||||||
|
accepted. To use different RARP and NFS server,
|
||||||
|
specify your RARP server here (or leave it blank), and
|
||||||
|
specify your NFS server in the 'nfsroot' parameter
|
||||||
|
(see above). If this entry is blank the address of the
|
||||||
|
server is used which answered the RARP/BOOTP/DHCP
|
||||||
|
request.
|
||||||
|
|
||||||
|
<gw-ip> IP address of a gateway if the server is on a different
|
||||||
|
subnet. If this entry is empty no gateway is used and the
|
||||||
|
server is assumed to be on the local network, unless a
|
||||||
|
value has been received by BOOTP/DHCP.
|
||||||
|
|
||||||
|
<netmask> Netmask for local network interface. If this is empty,
|
||||||
|
the netmask is derived from the client IP address assuming
|
||||||
|
classful addressing, unless overridden in BOOTP/DHCP reply.
|
||||||
|
|
||||||
|
<hostname> Name of the client. If empty, the client IP address is
|
||||||
|
used in ASCII notation, or the value received by
|
||||||
|
BOOTP/DHCP.
|
||||||
|
|
||||||
|
<device> Name of network device to use. If this is empty, all
|
||||||
|
devices are used for RARP/BOOTP/DHCP requests, and the
|
||||||
|
first one we receive a reply on is configured. If you
|
||||||
|
have only one device, you can safely leave this blank.
|
||||||
|
|
||||||
|
<autoconf> Method to use for autoconfiguration. If this is either
|
||||||
|
'rarp', 'bootp', or 'dhcp' the specified protocol is
|
||||||
|
used. If the value is 'both', 'all' or empty, all
|
||||||
|
protocols are used. 'off', 'static' or 'none' means
|
||||||
|
no autoconfiguration.
|
||||||
|
Examples:
|
||||||
|
ip=127.0.0.1:::::lo:none --> Enable the loopback interface.
|
||||||
|
ip=192.168.1.1:::::eth2:none --> Enable static eth2 interface.
|
||||||
|
ip=:::::eth0:dhcp --> Enable dhcp protcol for eth0 configuration.
|
||||||
|
|
||||||
|
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
|
||||||
|
|
||||||
|
If the 'nfsroot' parameter is NOT given on the command line, the default
|
||||||
|
"/tftpboot/%s" will be used.
|
||||||
|
|
||||||
|
<server-ip> Specifies the IP address of the NFS server. If this field
|
||||||
|
is not given, the default address as determined by the
|
||||||
|
'ip' variable (see below) is used. One use of this
|
||||||
|
parameter is for example to allow using different servers
|
||||||
|
for RARP and NFS. Usually you can leave this blank.
|
||||||
|
|
||||||
|
<root-dir> Name of the directory on the server to mount as root. If
|
||||||
|
there is a "%s" token in the string, the token will be
|
||||||
|
replaced by the ASCII-representation of the client's IP
|
||||||
|
address.
|
||||||
|
|
||||||
|
<nfs-options> Standard NFS options. All options are separated by commas.
|
||||||
|
If the options field is not given, the following defaults
|
||||||
|
will be used:
|
||||||
|
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
|
||||||
|
|
||||||
|
root=/dev/nfs
|
||||||
|
|
||||||
|
If you don't use nfsroot= parameter you need to set root=/dev/nfs
|
||||||
|
to boot from a nfs root by autoconfiguration.
|
||||||
|
HELPEOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
83
srcpkgs/mkinitcpio-nfs-utils/patches/musl.patch
Normal file
83
srcpkgs/mkinitcpio-nfs-utils/patches/musl.patch
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
From 9e6dd28c7b2d9649cc3fc3ea9effadcb29d233c5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrea Brancaleoni <miwaxe@gmail.com>
|
||||||
|
Date: Thu, 25 Jun 2015 18:01:23 +0200
|
||||||
|
Subject: [PATCH] musl
|
||||||
|
|
||||||
|
---
|
||||||
|
ipconfig/packet.c | 27 +++++++++++++--------------
|
||||||
|
1 file changed, 13 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/ipconfig/packet.c b/ipconfig/packet.c
|
||||||
|
index 446073a..afedf9d 100644
|
||||||
|
--- a/ipconfig/packet.c
|
||||||
|
+++ b/ipconfig/packet.c
|
||||||
|
@@ -7,10 +7,9 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
-#include <net/if_packet.h>
|
||||||
|
+#include <linux/if_packet.h>
|
||||||
|
#include <netinet/if_ether.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
-#include <netpacket/packet.h>
|
||||||
|
#include <asm/byteorder.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <netinet/ip.h>
|
||||||
|
@@ -92,10 +91,10 @@ static struct header ipudp_hdrs = {
|
||||||
|
.daddr = INADDR_BROADCAST,
|
||||||
|
},
|
||||||
|
.udp = {
|
||||||
|
- .source = __constant_htons(LOCAL_PORT),
|
||||||
|
- .dest = __constant_htons(REMOTE_PORT),
|
||||||
|
- .len = 0,
|
||||||
|
- .check = 0,
|
||||||
|
+ .uh_sport = __constant_htons(LOCAL_PORT),
|
||||||
|
+ .uh_dport = __constant_htons(REMOTE_PORT),
|
||||||
|
+ .uh_ulen = 0,
|
||||||
|
+ .uh_sum = 0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -127,8 +126,8 @@ int packet_send(struct netdev *dev, struct iovec *iov, int iov_len)
|
||||||
|
msg.msg_flags = 0;
|
||||||
|
|
||||||
|
if (cfg_local_port != LOCAL_PORT) {
|
||||||
|
- ipudp_hdrs.udp.source = htons(cfg_local_port);
|
||||||
|
- ipudp_hdrs.udp.dest = htons(cfg_remote_port);
|
||||||
|
+ ipudp_hdrs.udp.uh_sport = htons(cfg_local_port);
|
||||||
|
+ ipudp_hdrs.udp.uh_dport = htons(cfg_remote_port);
|
||||||
|
}
|
||||||
|
|
||||||
|
dprintf("\n udp src %d dst %d", ntohs(ipudp_hdrs.udp.source),
|
||||||
|
@@ -159,7 +158,7 @@ int packet_send(struct netdev *dev, struct iovec *iov, int iov_len)
|
||||||
|
ipudp_hdrs.ip.check = ip_checksum((uint16_t *) &ipudp_hdrs.ip,
|
||||||
|
ipudp_hdrs.ip.ihl);
|
||||||
|
|
||||||
|
- ipudp_hdrs.udp.len = htons(len - sizeof(struct iphdr));
|
||||||
|
+ ipudp_hdrs.udp.uh_ulen = htons(len - sizeof(struct iphdr));
|
||||||
|
|
||||||
|
dprintf("\n bytes %d\n", len);
|
||||||
|
|
||||||
|
@@ -243,14 +242,14 @@ int packet_recv(struct netdev *dev, struct iovec *iov, int iov_len)
|
||||||
|
|
||||||
|
ret -= 4 * ip->ihl;
|
||||||
|
|
||||||
|
- dprintf("\n udp src %d dst %d ", ntohs(udp->source),
|
||||||
|
- ntohs(udp->dest));
|
||||||
|
+ dprintf("\n udp src %d dst %d ", ntohs(udp->uh_sport),
|
||||||
|
+ ntohs(udp->uh_dport));
|
||||||
|
|
||||||
|
- if (udp->source != htons(cfg_remote_port) ||
|
||||||
|
- udp->dest != htons(cfg_local_port))
|
||||||
|
+ if (udp->uh_sport != htons(cfg_remote_port) ||
|
||||||
|
+ udp->uh_dport != htons(cfg_local_port))
|
||||||
|
goto free_pkt;
|
||||||
|
|
||||||
|
- if (ntohs(udp->len) > ret)
|
||||||
|
+ if (ntohs(udp->uh_ulen) > ret)
|
||||||
|
goto free_pkt;
|
||||||
|
|
||||||
|
ret -= sizeof(struct udphdr);
|
||||||
|
--
|
||||||
|
2.4.4
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
--- a/nfsmount/mount.c 2012-11-10 20:16:31.894540497 -0500
|
||||||
|
+++ b/nfsmount/mount.c 2012-11-10 20:16:39.957369011 -0500
|
||||||
|
@@ -358,9 +358,9 @@
|
||||||
|
bail:
|
||||||
|
if (mounted) {
|
||||||
|
if (data->flags & NFS_MOUNT_VER3) {
|
||||||
|
- umount_v3(path, clnt);
|
||||||
|
+ umount_v3(rem_path, clnt);
|
||||||
|
} else {
|
||||||
|
- umount_v2(path, clnt);
|
||||||
|
+ umount_v2(rem_path, clnt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
35
srcpkgs/mkinitcpio-nfs-utils/template
Normal file
35
srcpkgs/mkinitcpio-nfs-utils/template
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# Template file for 'mkinitcpio-nfs-utils'
|
||||||
|
pkgname=mkinitcpio-nfs-utils
|
||||||
|
version=0.3
|
||||||
|
revision=1
|
||||||
|
build_style=gnu-makefile
|
||||||
|
short_desc="Ipconfig and nfsmount tools for NFS root support in mkinitcpio"
|
||||||
|
maintainer="Andrea Brancaleoni <miwaxe@gmail.com>"
|
||||||
|
license="GPL-2"
|
||||||
|
homepage="http://www.archlinux.org/"
|
||||||
|
depends="mkinitcpio"
|
||||||
|
distfiles="https://sources.archlinux.org/other/mkinitcpio/$pkgname-$version.tar.xz"
|
||||||
|
checksum=d290d489844fae100ca7b848b8eef40078124ff373203086bacc07329d1e8939
|
||||||
|
|
||||||
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
|
*-musl)
|
||||||
|
CFLAGS="-DSYS_NMLN=65"
|
||||||
|
# http://osxr.org/glibc/source/sysdeps/unix/sysv/linux/bits/utsname.h?v=glibc-2.15; fixes musl not having set this variable
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
patch_args="-Np1"
|
||||||
|
|
||||||
|
pre_configure() {
|
||||||
|
case "$XBPS_TARGET_MACHINE" in
|
||||||
|
*-musl)
|
||||||
|
sed -i 's|PROGRAMS = ipconfig nfsmount|PROGRAMS = ipconfig|g' Makefile
|
||||||
|
# No RPC in musl for now
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
post_install() {
|
||||||
|
vinstall ${FILESDIR}/initcpio-install-net 644 usr/lib/initcpio/install net
|
||||||
|
vinstall ${FILESDIR}/initcpio-hook-net 644 usr/lib/initcpio/hooks net
|
||||||
|
}
|
1
srcpkgs/mkinitcpio-udev
Symbolic link
1
srcpkgs/mkinitcpio-udev
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
mkinitcpio
|
3
srcpkgs/mkinitcpio/files/11-dm-initramfs.rules
Normal file
3
srcpkgs/mkinitcpio/files/11-dm-initramfs.rules
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
# needed with new udev/mkinitcpio and as implemented in dracut:
|
||||||
|
# <http://git.kernel.org/?p=boot/dracut/dracut.git;a=commitdiff;h=12b9736228f2b34c15a9cb63be79cf7b6e865b54>
|
||||||
|
SUBSYSTEM=="block", KERNEL=="dm-[0-9]*", ACTION=="add|change", OPTIONS="db_persist"
|
93
srcpkgs/mkinitcpio/files/69-dm-lvm-metad.rules
Normal file
93
srcpkgs/mkinitcpio/files/69-dm-lvm-metad.rules
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
# Copyright (C) 2012 Red Hat, Inc. All rights reserved.
|
||||||
|
#
|
||||||
|
# This file is part of LVM2.
|
||||||
|
|
||||||
|
# Udev rules for LVM.
|
||||||
|
#
|
||||||
|
# Scan all block devices having a PV label for LVM metadata.
|
||||||
|
# Store this information in LVMetaD (the LVM metadata daemon) and maintain LVM
|
||||||
|
# metadata state for improved performance by avoiding further scans while
|
||||||
|
# running subsequent LVM commands or while using lvm2app library.
|
||||||
|
# Also, notify LVMetaD about any relevant block device removal.
|
||||||
|
#
|
||||||
|
# This rule is essential for having the information in LVMetaD up-to-date.
|
||||||
|
# It also requires blkid to be called on block devices before so only devices
|
||||||
|
# used as LVM PVs are processed (ID_FS_TYPE="LVM2_member" or "LVM1_member").
|
||||||
|
|
||||||
|
SUBSYSTEM!="block", GOTO="lvm_end"
|
||||||
|
|
||||||
|
|
||||||
|
ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="lvm_end"
|
||||||
|
|
||||||
|
# If the PV label got lost, inform lvmetad immediately.
|
||||||
|
# Detect the lost PV label by comparing previous ID_FS_TYPE value with current one.
|
||||||
|
ENV{.ID_FS_TYPE_NEW}="$env{ID_FS_TYPE}"
|
||||||
|
IMPORT{db}="ID_FS_TYPE"
|
||||||
|
ENV{ID_FS_TYPE}=="LVM2_member|LVM1_member", ENV{.ID_FS_TYPE_NEW}!="LVM2_member|LVM1_member", ENV{LVM_PV_GONE}="1"
|
||||||
|
ENV{ID_FS_TYPE}="$env{.ID_FS_TYPE_NEW}"
|
||||||
|
ENV{LVM_PV_GONE}=="1", GOTO="lvm_scan"
|
||||||
|
|
||||||
|
# Only process devices already marked as a PV - this requires blkid to be called before.
|
||||||
|
ENV{ID_FS_TYPE}!="LVM2_member|LVM1_member", GOTO="lvm_end"
|
||||||
|
ENV{DM_MULTIPATH_DEVICE_PATH}=="1", GOTO="lvm_end"
|
||||||
|
|
||||||
|
# Inform lvmetad about any PV that is gone.
|
||||||
|
ACTION=="remove", GOTO="lvm_scan"
|
||||||
|
|
||||||
|
# Create /dev/disk/by-id/lvm-pv-uuid-<PV_UUID> symlink for each PV
|
||||||
|
ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-id/lvm-pv-uuid-$env{ID_FS_UUID_ENC}"
|
||||||
|
|
||||||
|
# If the PV is a special device listed below, scan only if the device is
|
||||||
|
# properly activated. These devices are not usable after an ADD event,
|
||||||
|
# but they require an extra setup and they are ready after a CHANGE event.
|
||||||
|
# Also support coldplugging with ADD event but only if the device is already
|
||||||
|
# properly activated.
|
||||||
|
# This logic should be eventually moved to rules where those particular
|
||||||
|
# devices are processed primarily (MD and loop).
|
||||||
|
|
||||||
|
# DM device:
|
||||||
|
KERNEL!="dm-[0-9]*", GOTO="next"
|
||||||
|
ENV{DM_UDEV_PRIMARY_SOURCE_FLAG}=="1", ENV{DM_ACTIVATION}=="1", GOTO="lvm_scan"
|
||||||
|
GOTO="lvm_end"
|
||||||
|
|
||||||
|
# MD device:
|
||||||
|
LABEL="next"
|
||||||
|
KERNEL!="md[0-9]*", GOTO="next"
|
||||||
|
IMPORT{db}="LVM_MD_PV_ACTIVATED"
|
||||||
|
ACTION=="add", ENV{LVM_MD_PV_ACTIVATED}=="1", GOTO="lvm_scan"
|
||||||
|
ACTION=="change", ENV{LVM_MD_PV_ACTIVATED}!="1", TEST=="md/array_state", ENV{LVM_MD_PV_ACTIVATED}="1", GOTO="lvm_scan"
|
||||||
|
ACTION=="add", KERNEL=="md[0-9]*p[0-9]*", GOTO="lvm_scan"
|
||||||
|
ENV{LVM_MD_PV_ACTIVATED}!="1", ENV{SYSTEMD_READY}="0"
|
||||||
|
GOTO="lvm_end"
|
||||||
|
|
||||||
|
# Loop device:
|
||||||
|
LABEL="next"
|
||||||
|
KERNEL!="loop[0-9]*", GOTO="next"
|
||||||
|
ACTION=="add", ENV{LVM_LOOP_PV_ACTIVATED}=="1", GOTO="lvm_scan"
|
||||||
|
ACTION=="change", ENV{LVM_LOOP_PV_ACTIVATED}!="1", TEST=="loop/backing_file", ENV{LVM_LOOP_PV_ACTIVATED}="1", GOTO="lvm_scan"
|
||||||
|
ENV{LVM_LOOP_PV_ACTIVATED}!="1", ENV{SYSTEMD_READY}="0"
|
||||||
|
GOTO="lvm_end"
|
||||||
|
|
||||||
|
# If the PV is not a special device listed above, scan only after device addition (ADD event)
|
||||||
|
LABEL="next"
|
||||||
|
ACTION!="add", GOTO="lvm_end"
|
||||||
|
|
||||||
|
LABEL="lvm_scan"
|
||||||
|
|
||||||
|
# The table below summarises the situations in which we reach the LABEL="lvm_scan".
|
||||||
|
# Marked by X, X* means only if the special dev is properly set up.
|
||||||
|
# The artificial ADD is supported for coldplugging. We avoid running the pvscan
|
||||||
|
# on artificial CHANGE so there's no unexpected autoactivation when WATCH rule fires.
|
||||||
|
# N.B. MD and loop never actually reaches lvm_scan on REMOVE as the PV label is gone
|
||||||
|
# within a CHANGE event (these are caught by the "LVM_PV_GONE" rule at the beginning).
|
||||||
|
#
|
||||||
|
# | real ADD | real CHANGE | artificial ADD | artificial CHANGE | REMOVE
|
||||||
|
# =============================================================================
|
||||||
|
# DM | | X | X* | | X
|
||||||
|
# MD | | X | X* | |
|
||||||
|
# loop | | X | X* | |
|
||||||
|
# other | X | | X | | X
|
||||||
|
ENV{SYSTEMD_READY}="1"
|
||||||
|
RUN+="/usr/bin/lvm pvscan --background --cache --activate ay --major $major --minor $minor", ENV{LVM_SCANNED}="1"
|
||||||
|
|
||||||
|
LABEL="lvm_end"
|
139
srcpkgs/mkinitcpio/files/encrypt_hook
Normal file
139
srcpkgs/mkinitcpio/files/encrypt_hook
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
#!/usr/bin/ash
|
||||||
|
|
||||||
|
run_hook() {
|
||||||
|
modprobe -a -q dm-crypt >/dev/null 2>&1
|
||||||
|
[ "${quiet}" = "y" ] && CSQUIET=">/dev/null"
|
||||||
|
|
||||||
|
# Get keyfile if specified
|
||||||
|
ckeyfile="/crypto_keyfile.bin"
|
||||||
|
if [ -n "$cryptkey" ]; then
|
||||||
|
IFS=: read ckdev ckarg1 ckarg2 <<EOF
|
||||||
|
$cryptkey
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [ "$ckdev" = "rootfs" ]; then
|
||||||
|
ckeyfile=$ckarg1
|
||||||
|
elif resolved=$(resolve_device "${ckdev}" ${rootdelay}); then
|
||||||
|
case ${ckarg1} in
|
||||||
|
*[!0-9]*)
|
||||||
|
# Use a file on the device
|
||||||
|
# ckarg1 is not numeric: ckarg1=filesystem, ckarg2=path
|
||||||
|
mkdir /ckey
|
||||||
|
mount -r -t "$ckarg1" "$resolved" /ckey
|
||||||
|
dd if="/ckey/$ckarg2" of="$ckeyfile" >/dev/null 2>&1
|
||||||
|
umount /ckey
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Read raw data from the block device
|
||||||
|
# ckarg1 is numeric: ckarg1=offset, ckarg2=length
|
||||||
|
dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
[ ! -f ${ckeyfile} ] && echo "Keyfile could not be opened. Reverting to passphrase."
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${cryptdevice}" ]; then
|
||||||
|
DEPRECATED_CRYPT=0
|
||||||
|
IFS=: read cryptdev cryptname cryptoptions <<EOF
|
||||||
|
$cryptdevice
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
DEPRECATED_CRYPT=1
|
||||||
|
cryptdev="${root}"
|
||||||
|
cryptname="root"
|
||||||
|
fi
|
||||||
|
|
||||||
|
warn_deprecated() {
|
||||||
|
echo "The syntax 'root=${root}' where '${root}' is an encrypted volume is deprecated"
|
||||||
|
echo "Use 'cryptdevice=${root}:root root=/dev/mapper/root' instead."
|
||||||
|
}
|
||||||
|
|
||||||
|
for cryptopt in ${cryptoptions//,/ }; do
|
||||||
|
case ${cryptopt} in
|
||||||
|
allow-discards)
|
||||||
|
cryptargs="${cryptargs} --allow-discards"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Encryption option '${cryptopt}' not known, ignoring." >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if resolved=$(resolve_device "${cryptdev}" ${rootdelay}); then
|
||||||
|
if cryptsetup isLuks ${resolved} >/dev/null 2>&1; then
|
||||||
|
[ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
|
||||||
|
dopassphrase=1
|
||||||
|
# If keyfile exists, try to use that
|
||||||
|
if [ -f ${ckeyfile} ]; then
|
||||||
|
if eval cryptsetup --key-file ${ckeyfile} open --type luks ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; then
|
||||||
|
dopassphrase=0
|
||||||
|
else
|
||||||
|
echo "Invalid keyfile. Reverting to passphrase."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Ask for a passphrase
|
||||||
|
if [ ${dopassphrase} -gt 0 ]; then
|
||||||
|
echo ""
|
||||||
|
echo "A password is required to access the ${cryptname} volume:"
|
||||||
|
|
||||||
|
#loop until we get a real password
|
||||||
|
while ! eval cryptsetup open --type luks ${resolved} ${cryptname} ${cryptargs} ${CSQUIET}; do
|
||||||
|
sleep 2;
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -e "/dev/mapper/${cryptname}" ]; then
|
||||||
|
if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
|
||||||
|
export root="/dev/mapper/root"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
err "Password succeeded, but ${cryptname} creation failed, aborting..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [ -n "${crypto}" ]; then
|
||||||
|
[ ${DEPRECATED_CRYPT} -eq 1 ] && warn_deprecated
|
||||||
|
msg "Non-LUKS encrypted device found..."
|
||||||
|
if echo "$crypto" | awk -F: '{ exit(NF == 5) }'; then
|
||||||
|
err "Verify parameter format: crypto=hash:cipher:keysize:offset:skip"
|
||||||
|
err "Non-LUKS decryption not attempted..."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
exe="cryptsetup open --type plain $resolved $cryptname $cryptargs"
|
||||||
|
IFS=: read c_hash c_cipher c_keysize c_offset c_skip <<EOF
|
||||||
|
$crypto
|
||||||
|
EOF
|
||||||
|
[ -n "$c_hash" ] && exe="$exe --hash '$c_hash'"
|
||||||
|
[ -n "$c_cipher" ] && exe="$exe --cipher '$c_cipher'"
|
||||||
|
[ -n "$c_keysize" ] && exe="$exe --key-size '$c_keysize'"
|
||||||
|
[ -n "$c_offset" ] && exe="$exe --offset '$c_offset'"
|
||||||
|
[ -n "$c_skip" ] && exe="$exe --skip '$c_skip'"
|
||||||
|
if [ -f "$ckeyfile" ]; then
|
||||||
|
exe="$exe --key-file $ckeyfile"
|
||||||
|
else
|
||||||
|
exe="$exe --verify-passphrase"
|
||||||
|
echo ""
|
||||||
|
echo "A password is required to access the ${cryptname} volume:"
|
||||||
|
fi
|
||||||
|
eval "$exe $CSQUIET"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
err "Non-LUKS device decryption failed. verify format: "
|
||||||
|
err " crypto=hash:cipher:keysize:offset:skip"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -e "/dev/mapper/${cryptname}" ]; then
|
||||||
|
if [ ${DEPRECATED_CRYPT} -eq 1 ]; then
|
||||||
|
export root="/dev/mapper/root"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
err "Password succeeded, but ${cryptname} creation failed, aborting..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
err "Failed to open encryption mapping: The device ${cryptdev} is not a LUKS volume and the crypto= paramater was not specified."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
rm -f ${ckeyfile}
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
44
srcpkgs/mkinitcpio/files/encrypt_install
Normal file
44
srcpkgs/mkinitcpio/files/encrypt_install
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
build() {
|
||||||
|
local mod
|
||||||
|
|
||||||
|
add_module dm-crypt
|
||||||
|
if [[ $CRYPTO_MODULES ]]; then
|
||||||
|
for mod in $CRYPTO_MODULES; do
|
||||||
|
add_module "$mod"
|
||||||
|
done
|
||||||
|
else
|
||||||
|
add_all_modules '/crypto/'
|
||||||
|
fi
|
||||||
|
|
||||||
|
add_binary "cryptsetup"
|
||||||
|
add_binary "dmsetup"
|
||||||
|
add_file "/usr/lib/udev/rules.d/10-dm.rules"
|
||||||
|
add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
|
||||||
|
add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
|
||||||
|
add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
|
||||||
|
|
||||||
|
add_runscript
|
||||||
|
}
|
||||||
|
|
||||||
|
help() {
|
||||||
|
cat <<HELPEOF
|
||||||
|
This hook allows for an encrypted root device. Users should specify the device
|
||||||
|
to be unlocked using 'cryptdevice=device:dmname' on the kernel command line,
|
||||||
|
where 'device' is the path to the raw device, and 'dmname' is the name given to
|
||||||
|
the device after unlocking, and will be available as /dev/mapper/dmname.
|
||||||
|
|
||||||
|
For unlocking via keyfile, 'cryptkey=device:fstype:path' should be specified on
|
||||||
|
the kernel cmdline, where 'device' represents the raw block device where the key
|
||||||
|
exists, 'fstype' is the filesystem type of 'device' (or auto), and 'path' is
|
||||||
|
the absolute path of the keyfile within the device.
|
||||||
|
|
||||||
|
Without specifying a keyfile, you will be prompted for the password at runtime.
|
||||||
|
This means you must have a keyboard available to input it, and you may need
|
||||||
|
the keymap hook as well to ensure that the keyboard is using the layout you
|
||||||
|
expect.
|
||||||
|
HELPEOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
15
srcpkgs/mkinitcpio/files/kernel-hook-postinst
Normal file
15
srcpkgs/mkinitcpio/files/kernel-hook-postinst
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Kernel post-install hook for mkinitcpio.
|
||||||
|
#
|
||||||
|
# Arguments passed to this script: $1 pkgname, $2 version.
|
||||||
|
#
|
||||||
|
PKGNAME="$1"
|
||||||
|
VERSION="$2"
|
||||||
|
|
||||||
|
if [ ! -x bin/mkinitcpio ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkinitcpio -g boot/initramfs-${VERSION}.img -k ${VERSION}
|
||||||
|
exit $?
|
13
srcpkgs/mkinitcpio/files/kernel-hook-postrm
Normal file
13
srcpkgs/mkinitcpio/files/kernel-hook-postrm
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Kernel post-remove hook for mkinitcpio.
|
||||||
|
#
|
||||||
|
# Arguments passed to this script: $1 pkgname, $2 version.
|
||||||
|
#
|
||||||
|
PKGNAME="$1"
|
||||||
|
VERSION="$2"
|
||||||
|
|
||||||
|
if [ -f /boot/initramfs-${VERSION}.img ]; then
|
||||||
|
rm -f /boot/initramfs-${VERSION}.img
|
||||||
|
fi
|
||||||
|
exit $?
|
1587
srcpkgs/mkinitcpio/files/lvm.conf
Normal file
1587
srcpkgs/mkinitcpio/files/lvm.conf
Normal file
File diff suppressed because it is too large
Load diff
12
srcpkgs/mkinitcpio/files/lvm2_hook
Normal file
12
srcpkgs/mkinitcpio/files/lvm2_hook
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/ash
|
||||||
|
|
||||||
|
run_earlyhook() {
|
||||||
|
mkdir /run/lvm
|
||||||
|
lvmetad
|
||||||
|
}
|
||||||
|
|
||||||
|
run_cleanuphook() {
|
||||||
|
kill $(cat /run/lvmetad.pid)
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
34
srcpkgs/mkinitcpio/files/lvm2_install
Normal file
34
srcpkgs/mkinitcpio/files/lvm2_install
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#!/usr/bin/bash
|
||||||
|
|
||||||
|
build() {
|
||||||
|
local mod
|
||||||
|
for mod in dm-mod dm-snapshot dm-mirror dm-cache dm-cache-mq; do
|
||||||
|
add_module "$mod"
|
||||||
|
done
|
||||||
|
|
||||||
|
add_binary "/usr/bin/lvm"
|
||||||
|
add_binary "/usr/bin/lvmetad"
|
||||||
|
add_binary "/usr/bin/dmsetup"
|
||||||
|
add_binary "/usr/bin/cache_check"
|
||||||
|
add_binary "/usr/bin/cache_dump"
|
||||||
|
add_binary "/usr/bin/cache_metadata_size"
|
||||||
|
add_binary "/usr/bin/cache_repair"
|
||||||
|
add_binary "/usr/bin/cache_restore"
|
||||||
|
add_file "/usr/lib/udev/rules.d/10-dm.rules"
|
||||||
|
add_file "/usr/lib/udev/rules.d/13-dm-disk.rules"
|
||||||
|
add_file "/usr/lib/udev/rules.d/95-dm-notify.rules"
|
||||||
|
add_file "/usr/lib/udev/rules.d/11-dm-lvm.rules"
|
||||||
|
add_file "/usr/lib/initcpio/udev/69-dm-lvm-metad.rules" "/usr/lib/udev/rules.d/69-dm-lvm-metad.rules"
|
||||||
|
add_file "/usr/lib/initcpio/udev/11-dm-initramfs.rules" "/usr/lib/udev/rules.d/11-dm-initramfs.rules"
|
||||||
|
add_file "/usr/lib/initcpio/conf/lvm.conf" "/etc/lvm/lvm.conf"
|
||||||
|
|
||||||
|
add_runscript
|
||||||
|
}
|
||||||
|
|
||||||
|
help() {
|
||||||
|
cat <<HELPEOF
|
||||||
|
This hook enables LVM2 volumes in initramfs.
|
||||||
|
HELPEOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
49
srcpkgs/mkinitcpio/files/mdadm_hook
Normal file
49
srcpkgs/mkinitcpio/files/mdadm_hook
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
#!/usr/bin/ash
|
||||||
|
|
||||||
|
run_hook() {
|
||||||
|
local i= mdconfig=/etc/mdadm.conf
|
||||||
|
|
||||||
|
# for partitionable raid, we need to load md_mod first!
|
||||||
|
modprobe md_mod 2>/dev/null
|
||||||
|
|
||||||
|
if [ -n "$md" ]; then
|
||||||
|
echo 'DEVICE partitions' >"$mdconfig"
|
||||||
|
for i in $(cat /proc/cmdline); do
|
||||||
|
case $i in
|
||||||
|
# raid
|
||||||
|
md=[0-9]*,/*)
|
||||||
|
device=${i%%,*}
|
||||||
|
device=${device/=/}
|
||||||
|
array=${i#*,}
|
||||||
|
echo "ARRAY /dev/$device devices=$array"
|
||||||
|
;;
|
||||||
|
# partitionable raid
|
||||||
|
md=d[0-9]*,/*)
|
||||||
|
device=${i%%,*}
|
||||||
|
device=${device/=/_}
|
||||||
|
array=${i#*,}
|
||||||
|
echo "ARRAY /dev/$device devices=$array"
|
||||||
|
;;
|
||||||
|
# raid UUID
|
||||||
|
md=[0-9]*,[0-9,a-fA-F]*)
|
||||||
|
device=${i%%,*}
|
||||||
|
device=${device/=/}
|
||||||
|
array=${i#*,}
|
||||||
|
echo "ARRAY /dev/$device UUID=$array"
|
||||||
|
;;
|
||||||
|
# partitionable raid UUID
|
||||||
|
md=d[0-9]*,[0-9,a-fA-F]*)
|
||||||
|
device=${i%%,*}
|
||||||
|
device=${device/=/_}
|
||||||
|
array=${i#*,}
|
||||||
|
echo "ARRAY /dev/$device UUID=$array"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done >>"$mdconfig"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# assemble everything
|
||||||
|
[ -s "$mdconfig" ] && /usr/bin/mdassemble
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
46
srcpkgs/mkinitcpio/files/mdadm_install
Normal file
46
srcpkgs/mkinitcpio/files/mdadm_install
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
build() {
|
||||||
|
add_checked_modules -f 'dm-' 'drivers/md/*'
|
||||||
|
|
||||||
|
# check if a custom mdadm.conf exists
|
||||||
|
if grep -q ^ARRAY /etc/mdadm.conf; then
|
||||||
|
echo "Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays."
|
||||||
|
add_file "/etc/mdadm.conf"
|
||||||
|
fi
|
||||||
|
add_binary "/usr/bin/mdassemble"
|
||||||
|
add_file "/usr/lib/udev/rules.d/63-md-raid-arrays.rules"
|
||||||
|
|
||||||
|
add_runscript
|
||||||
|
}
|
||||||
|
|
||||||
|
help() {
|
||||||
|
cat <<HELPEOF
|
||||||
|
This hook loads the necessary modules for any raid root device,
|
||||||
|
and assembles the raid device when run.
|
||||||
|
|
||||||
|
If arrays are defined in /etc/mdadm.conf, the file will be used instead
|
||||||
|
of command line assembling.
|
||||||
|
|
||||||
|
Command Line Setup:
|
||||||
|
- for raid arrays with persistent superblocks:
|
||||||
|
md=<md device no.>,dev0,dev1,...,devn
|
||||||
|
md=<md device no.>,uuid
|
||||||
|
- for partitionable raid arrays with persistent superblocks:
|
||||||
|
md=d<md device no.>,dev0,dev1,...,devn
|
||||||
|
md=d<md device no.>,uuid
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
- <md device no.> = the number of the md device:
|
||||||
|
0 means md0, 1 means md1, ...
|
||||||
|
- <dev0-devn>: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1
|
||||||
|
or 0900878d:f95f6057:c39a36e9:55efa60a
|
||||||
|
Examples:
|
||||||
|
- md=d0,/dev/sda3,/dev/sda4 md=d1,/dev/hda1,/dev/hdb1
|
||||||
|
This will setup 2 md partitionable arrays.
|
||||||
|
- md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1
|
||||||
|
This will setup 2 md arrays with persistent superblocks.
|
||||||
|
HELPEOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
25
srcpkgs/mkinitcpio/files/mdadm_udev_install
Normal file
25
srcpkgs/mkinitcpio/files/mdadm_udev_install
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
build() {
|
||||||
|
add_checked_modules -f 'dm-' 'drivers/md/*'
|
||||||
|
|
||||||
|
# check if a custom mdadm.conf exists
|
||||||
|
if grep -qw ^ARRAY "$BASEDIR/etc/mdadm.conf"; then
|
||||||
|
echo "Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays."
|
||||||
|
add_file "/etc/mdadm.conf"
|
||||||
|
fi
|
||||||
|
|
||||||
|
add_binary "/usr/bin/mdadm"
|
||||||
|
add_file "/usr/lib/udev/rules.d/63-md-raid-arrays.rules"
|
||||||
|
add_file "/usr/lib/udev/rules.d/64-md-raid-assembly.rules"
|
||||||
|
}
|
||||||
|
|
||||||
|
help() {
|
||||||
|
cat <<HELPEOF
|
||||||
|
This hook loads the necessary modules for a RAID array and uses incremental
|
||||||
|
assembly via udev at runtime to create the devices. This hook will NOT work
|
||||||
|
without the udev hook included on the image.
|
||||||
|
HELPEOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
20
srcpkgs/mkinitcpio/files/udev_hook
Normal file
20
srcpkgs/mkinitcpio/files/udev_hook
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/usr/bin/ash
|
||||||
|
|
||||||
|
run_earlyhook() {
|
||||||
|
udevd --daemon --resolve-names=never
|
||||||
|
udevd_running=1
|
||||||
|
}
|
||||||
|
|
||||||
|
run_hook() {
|
||||||
|
msg ":: Triggering uevents..."
|
||||||
|
udevadm trigger --action=add --type=subsystems
|
||||||
|
udevadm trigger --action=add --type=devices
|
||||||
|
udevadm settle
|
||||||
|
}
|
||||||
|
|
||||||
|
run_cleanuphook() {
|
||||||
|
udevadm control --exit
|
||||||
|
udevadm info --cleanup-db
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
27
srcpkgs/mkinitcpio/files/udev_install
Normal file
27
srcpkgs/mkinitcpio/files/udev_install
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
build() {
|
||||||
|
add_file "/etc/udev/udev.conf"
|
||||||
|
add_binary /usr/bin/udevd
|
||||||
|
add_binary /usr/bin/udevadm
|
||||||
|
|
||||||
|
for rule in 50-udev-default.rules 60-persistent-storage.rules 64-btrfs.rules 80-drivers.rules; do
|
||||||
|
add_file "/usr/lib/udev/rules.d/$rule"
|
||||||
|
done
|
||||||
|
|
||||||
|
for tool in ata_id scsi_id; do
|
||||||
|
add_file "/usr/lib/udev/$tool"
|
||||||
|
done
|
||||||
|
|
||||||
|
add_runscript
|
||||||
|
}
|
||||||
|
|
||||||
|
help() {
|
||||||
|
cat <<HELPEOF
|
||||||
|
This hook will use udev to create your root device node and detect the needed
|
||||||
|
modules for your root device. It is also required for firmware loading in
|
||||||
|
initramfs. It is recommended to use this hook.
|
||||||
|
HELPEOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh ts=4 sw=4 et:
|
|
@ -0,0 +1,39 @@
|
||||||
|
From ea4c4154205372154457c794513ae46b61ea4e4c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Dave Reisner <dreisner@archlinux.org>
|
||||||
|
Date: Mon, 4 Aug 2014 08:31:37 -0400
|
||||||
|
Subject: [mkinitcpio] [PATCH] avoid compound conditional leading to spurious
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
As seen:
|
||||||
|
|
||||||
|
https://bbs.archlinux.org/viewtopic.php?id=185204
|
||||||
|
https://bbs.archlinux.org/viewtopic.php?id=185265
|
||||||
|
---
|
||||||
|
functions | 8 ++++++--
|
||||||
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/functions b/functions
|
||||||
|
index 20bbffe..362d07b 100644
|
||||||
|
--- a/functions
|
||||||
|
+++ b/functions
|
||||||
|
@@ -423,11 +423,15 @@ add_full_dir() {
|
||||||
|
|
||||||
|
for f in "$1"/*; do
|
||||||
|
if [[ -L $f ]]; then
|
||||||
|
- [[ $f = $filter ]] && add_symlink "$f" "$(readlink "$f")"
|
||||||
|
+ if [[ $f = $filter ]]; then
|
||||||
|
+ add_symlink "$f" "$(readlink "$f")"
|
||||||
|
+ fi
|
||||||
|
elif [[ -d $f ]]; then
|
||||||
|
add_full_dir "$f"
|
||||||
|
elif [[ -f $f ]]; then
|
||||||
|
- [[ $f = $filter ]] && add_file "$f"
|
||||||
|
+ if [[ $f = $filter ]]; then
|
||||||
|
+ add_file "$f"
|
||||||
|
+ fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
--
|
||||||
|
2.1.0
|
||||||
|
|
25
srcpkgs/mkinitcpio/patches/default-to-runit-init.patch
Normal file
25
srcpkgs/mkinitcpio/patches/default-to-runit-init.patch
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
From 6a100b4a4a709f177f383988079a2a3c3ada08b8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrea Brancaleoni <miwaxe@gmail.com>
|
||||||
|
Date: Thu, 25 Jun 2015 01:59:58 +0200
|
||||||
|
Subject: [PATCH] default to runit-init
|
||||||
|
|
||||||
|
---
|
||||||
|
init | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/init b/init
|
||||||
|
index 4891ed8..7534d23 100644
|
||||||
|
--- a/init
|
||||||
|
+++ b/init
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
|
||||||
|
udevd_running=0
|
||||||
|
mount_handler=default_mount_handler
|
||||||
|
-init=/sbin/init
|
||||||
|
+init=/usr/bin/runit-init
|
||||||
|
rd_logmask=0
|
||||||
|
|
||||||
|
. /init_functions
|
||||||
|
--
|
||||||
|
2.4.4
|
||||||
|
|
67
srcpkgs/mkinitcpio/template
Normal file
67
srcpkgs/mkinitcpio/template
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
# Template file for 'mkinitcpio'
|
||||||
|
pkgname=mkinitcpio
|
||||||
|
version=18
|
||||||
|
revision=1
|
||||||
|
noarch=yes
|
||||||
|
build_style=gnu-makefile
|
||||||
|
depends="busybox-static bsdcpio"
|
||||||
|
short_desc="Next generation of initramfs creation"
|
||||||
|
maintainer="Andrea Brancaleoni <miwaxe@gmail.com>"
|
||||||
|
license="GPL-2"
|
||||||
|
homepage="https://wiki.archlinux.org/index.php/Mkinitcpio"
|
||||||
|
distfiles="https://sources.archlinux.org/other/$pkgname/$pkgname-$version.tar.gz"
|
||||||
|
checksum=187bdeeade08996010fbff480ccc91e47722d275c22fd6feb4a4b63061e9fc22
|
||||||
|
|
||||||
|
conf_files="/etc/mkinitcpio.conf"
|
||||||
|
|
||||||
|
patch_args="-Np1"
|
||||||
|
|
||||||
|
post_install() {
|
||||||
|
ln -s /usr/bin/busybox.static $DESTDIR/usr/lib/initcpio/busybox
|
||||||
|
|
||||||
|
vinstall ${FILESDIR}/kernel-hook-postinst 755 etc/kernel.d/post-install 20-mkinitcpio
|
||||||
|
vinstall ${FILESDIR}/kernel-hook-postrm 755 etc/kernel.d/post-remove 20-mkinitcpio
|
||||||
|
}
|
||||||
|
|
||||||
|
mkinitcpio-udev_package() {
|
||||||
|
depends="${sourcepkg}>=${version}_${revision} eudev"
|
||||||
|
short_desc+=" - udev support"
|
||||||
|
pkg_install() {
|
||||||
|
vinstall ${FILESDIR}/udev_hook 644 usr/lib/initcpio/hooks udev
|
||||||
|
vinstall ${FILESDIR}/udev_install 644 usr/lib/initcpio/install udev
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mkinitcpio-lvm2_package() {
|
||||||
|
depends="${sourcepkg}>=${version}_${revision} lvm2 thin-provisioning-tools"
|
||||||
|
short_desc+=" - lvm2 support"
|
||||||
|
conf_files="/usr/lib/initcpio/conf/lvm.conf"
|
||||||
|
pkg_install() {
|
||||||
|
vinstall ${FILESDIR}/lvm2_hook 644 usr/lib/initcpio/hooks lvm2
|
||||||
|
vinstall ${FILESDIR}/lvm2_install 644 usr/lib/initcpio/install lvm2
|
||||||
|
for RULES in ${FILESDIR}/*.rules; do
|
||||||
|
vinstall $RULES 644 usr/lib/initcpio/udev $(basename $RULES)
|
||||||
|
done
|
||||||
|
vinstall ${FILESDIR}/lvm.conf 644 usr/lib/initcpio/conf
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mkinitcpio-encrypt_package() {
|
||||||
|
depends="${sourcepkg}>=${version}_${revision}
|
||||||
|
${sourcepkg}-lvm2>=${version}_${revision} cryptsetup"
|
||||||
|
short_desc+=" - encrypt support"
|
||||||
|
pkg_install() {
|
||||||
|
vinstall ${FILESDIR}/encrypt_hook 644 usr/lib/initcpio/hooks encrypt
|
||||||
|
vinstall ${FILESDIR}/encrypt_install 644 usr/lib/initcpio/install encrypt
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mkinitcpio-mdadm_package() {
|
||||||
|
depends="${sourcepkg}>=${version}_${revision} mdadm"
|
||||||
|
short_desc+=" - mdadm support"
|
||||||
|
pkg_install() {
|
||||||
|
vinstall ${FILESDIR}/mdadm_hook 644 usr/lib/initcpio/hooks mdadm
|
||||||
|
vinstall ${FILESDIR}/mdadm_install 644 usr/lib/initcpio/install mdadm
|
||||||
|
vinstall ${FILESDIR}/mdadm_udev_install 644 usr/lib/initcpio/install mdadm_udev
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue