summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.AURINFO14
-rw-r--r--.SRCINFO16
-rw-r--r--PKGBUILD19
-rw-r--r--autofsck_hook20
-rw-r--r--autofsck_install14
-rw-r--r--mkinitcpio-autofsck.install32
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
+}