diff options
-rw-r--r-- | .AURINFO | 14 | ||||
-rw-r--r-- | .SRCINFO | 16 | ||||
-rw-r--r-- | PKGBUILD | 19 | ||||
-rw-r--r-- | autofsck_hook | 20 | ||||
-rw-r--r-- | autofsck_install | 14 | ||||
-rw-r--r-- | mkinitcpio-autofsck.install | 32 |
6 files changed, 115 insertions, 0 deletions
diff --git a/.AURINFO b/.AURINFO new file mode 100644 index 000000000000..6307c2d3f797 --- /dev/null +++ b/.AURINFO @@ -0,0 +1,14 @@ +pkgbase = mkinitcpio-autofsck + pkgdesc = mkinitcpio hook containing auto fsck + pkgver = 0.0.2 + pkgrel = 1 + url = https://github.com/jckimble/mkinitcpio-autofsck + install = mkinitcpio-autofsck.install + arch = any + license = BSD + depends = mkinitcpio>=0.9.0 + source = autofsck_hook + source = autofsck_install + +pkgname = mkinitcpio-autofsck + diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..e16e5219d562 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,16 @@ +pkgbase = mkinitcpio-autofsck + pkgdesc = mkinitcpio hook containing auto fsck + pkgver = 0.0.2 + pkgrel = 1 + url = https://github.com/jckimble/mkinitcpio-autofsck + install = mkinitcpio-autofsck.install + arch = any + license = BSD + depends = mkinitcpio>=0.9.0 + source = autofsck_hook + source = autofsck_install + md5sums = cc263a07bdc61ac085f6a41e0c807d0b + md5sums = 87f1878c956a19d883ab6dbb1c59d993 + +pkgname = mkinitcpio-autofsck + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..981965b6963a --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,19 @@ +# Contributor: James C Kimble <jckimble at gmail dot com> +pkgname='mkinitcpio-autofsck' +pkgver=0.0.2 +pkgrel=1 +pkgdesc='mkinitcpio hook containing auto fsck' +url='https://github.com/jckimble/mkinitcpio-autofsck' +arch=('any') +license=('BSD') +install="${pkgname}.install" +depends=('mkinitcpio>=0.9.0') +source=('autofsck_hook' 'autofsck_install') + +package() { + install -o root -g root -D ${srcdir}/autofsck_install ${pkgdir}/usr/lib/initcpio/install/autofsck + install -o root -g root -D ${srcdir}/autofsck_hook ${pkgdir}/usr/lib/initcpio/hooks/autofsck +} + +md5sums=('cc263a07bdc61ac085f6a41e0c807d0b' + '87f1878c956a19d883ab6dbb1c59d993') diff --git a/autofsck_hook b/autofsck_hook new file mode 100644 index 000000000000..773c08844bc8 --- /dev/null +++ b/autofsck_hook @@ -0,0 +1,20 @@ +#!/usr/bin/ash + +run_hook () { + eval "$(busybox sed 's/fsck_device/orig_fsck_device/' init_functions)" + eval "fsck_device(){ auto_fsck_device \$1;}" +} +auto_fsck_device() { + orig_fsck_device $1; + RET=$?; + if [ -n "$fsckret" ] && [ "$fsckret" -ne 255 ]; then + if bitfield_has_bit "$fsckret" 4; then + fsck -a $1; + if [ "$?" == "0" ];then + return 0; + fi; + fi; + fi; + return $RET; +} + diff --git a/autofsck_install b/autofsck_install new file mode 100644 index 000000000000..24002f97ee77 --- /dev/null +++ b/autofsck_install @@ -0,0 +1,14 @@ +#!/bin/bash + +build() { + add_runscript +} + +help() { + cat <<HELPEOF +This hook attempts to automate fixing fsck errors by running 'fsck -a [device]'. Will fallback to terminal on failure to fix disk. +HELPEOF +} + + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/mkinitcpio-autofsck.install b/mkinitcpio-autofsck.install new file mode 100644 index 000000000000..f92ace459009 --- /dev/null +++ b/mkinitcpio-autofsck.install @@ -0,0 +1,32 @@ +post_install() { post_upgrade "${@}"; } + +post_upgrade() { + + + [ -z "${2}" ] && ! grep -qe '^HOOKS=.*autofsck' /etc/mkinitcpio.conf && cat <<'MSG' + +==> Add hook to /etc/mkinitcpio.conf: + -> HOOKS="[...] autofsck" +MSG + + + cat <<'MSG' +==> Run mkinitcpio to update your initramfs image + # mkinitcpio -p linux +MSG + + echo +} + +post_remove() { + + cat <<'MSG' + +==> Remove "autofsck" from HOOKS in /etc/mkinitcpio.conf + +==> Run mkinitcpio to update your initramfs image (remove hook) + # mkinitcpio -p linux +MSG + + echo +} |