mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-24 18:03:06 +02:00
grub-btrfs: New package
This kind of grub addon will extend the grub boot menu by a additional submenu where a BTRFS snapshot can be selected to directly use as root volume and boot into it. The grub-btrfsd daemon is using inotify(tools) to watch the snapshot directory for new or deleted snapshots and calls grub-mkconfig to adjust the snapshot grub submenu Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org> Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
committed by
Arne Fitzenreiter
parent
32d81fdc2e
commit
a6d5b71f2c
14
config/rootfiles/common/grub-btrfs
Normal file
14
config/rootfiles/common/grub-btrfs
Normal file
@@ -0,0 +1,14 @@
|
||||
boot/grub/grubenv
|
||||
etc/default/grub-btrfs
|
||||
etc/default/grub-btrfs/config
|
||||
etc/grub.d/41_snapshots-btrfs
|
||||
usr/bin/grub-btrfsd
|
||||
#usr/lib/systemd/system/grub-btrfsd.service
|
||||
#usr/share/doc/grub-btrfs
|
||||
#usr/share/doc/grub-btrfs/README.md
|
||||
#usr/share/doc/grub-btrfs/initramfs-overlayfs.md
|
||||
#usr/share/licenses
|
||||
#usr/share/licenses/grub-btrfs
|
||||
#usr/share/licenses/grub-btrfs/LICENSE
|
||||
#usr/share/man/man8/grub-btrfs.8.bz2
|
||||
#usr/share/man/man8/grub-btrfsd.8.bz2
|
||||
@@ -26,6 +26,7 @@ etc/rc.d/init.d/firewall
|
||||
etc/rc.d/init.d/firstsetup
|
||||
etc/rc.d/init.d/fsresize
|
||||
etc/rc.d/init.d/functions
|
||||
etc/rc.d/init.d/grub-btrfsd
|
||||
etc/rc.d/init.d/halt
|
||||
etc/rc.d/init.d/ipsec
|
||||
etc/rc.d/init.d/leds
|
||||
@@ -92,6 +93,7 @@ etc/rc.d/init.d/vnstat
|
||||
etc/rc.d/init.d/waitdrives
|
||||
etc/rc.d/init.d/wlanclient
|
||||
#etc/rc.d/rc0.d
|
||||
etc/rc.d/rc0.d/K01grub-btrfsd
|
||||
#etc/rc.d/rc0.d/K01imspetor
|
||||
#etc/rc.d/rc0.d/K01motion
|
||||
#etc/rc.d/rc0.d/K01vdradmin
|
||||
@@ -135,10 +137,12 @@ etc/rc.d/rc3.d/S32apache
|
||||
etc/rc.d/rc3.d/S40fcron
|
||||
etc/rc.d/rc3.d/S98rc.local
|
||||
#etc/rc.d/rc3.d/S98sslh
|
||||
etc/rc.d/rc3.d/S99grub-btrfsd
|
||||
#etc/rc.d/rc3.d/S99imspetor
|
||||
#etc/rc.d/rc3.d/S99motion
|
||||
#etc/rc.d/rc3.d/S99vdradmin
|
||||
#etc/rc.d/rc6.d
|
||||
etc/rc.d/rc6.d/K01grub-btrfsd
|
||||
#etc/rc.d/rc6.d/K01imspetor
|
||||
#etc/rc.d/rc6.d/K01motion
|
||||
#etc/rc.d/rc6.d/K01vdradmin
|
||||
|
||||
79
lfs/grub-btrfs
Normal file
79
lfs/grub-btrfs
Normal file
@@ -0,0 +1,79 @@
|
||||
###############################################################################
|
||||
# #
|
||||
# IPFire.org - A linux based firewall #
|
||||
# Copyright (C) 2007-2023 IPFire Team <info@ipfire.org> #
|
||||
# #
|
||||
# This program is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# This program is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
###############################################################################
|
||||
|
||||
###############################################################################
|
||||
# Definitions
|
||||
###############################################################################
|
||||
|
||||
include Config
|
||||
|
||||
VER = 4.13
|
||||
|
||||
THISAPP = grub-btrfs-$(VER)
|
||||
DL_FILE = $(THISAPP).tar.gz
|
||||
DL_FROM = $(URL_IPFIRE)
|
||||
DIR_APP = $(DIR_SRC)/$(THISAPP)
|
||||
TARGET = $(DIR_INFO)/$(THISAPP)
|
||||
|
||||
###############################################################################
|
||||
# Top-level Rules
|
||||
###############################################################################
|
||||
|
||||
objects = $(DL_FILE)
|
||||
|
||||
$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
|
||||
|
||||
$(DL_FILE)_BLAKE2 = e2f11a0a8282e3ec8ff8223e3bad70b5d5c5e81b4d740a1bf3554db412dbe48a8a0f216f4e6c65ae1d11c01a27b8b92bae9b470c60d2389505ce089511536e1a
|
||||
|
||||
install : $(TARGET)
|
||||
|
||||
check : $(patsubst %,$(DIR_CHK)/%,$(objects))
|
||||
|
||||
download :$(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
|
||||
b2 : $(subst %,%_BLAKE2,$(objects))
|
||||
|
||||
dist:
|
||||
@$(PAK)
|
||||
|
||||
###############################################################################
|
||||
# Downloading, checking, b2sum
|
||||
###############################################################################
|
||||
|
||||
$(patsubst %,$(DIR_CHK)/%,$(objects)) :
|
||||
@$(CHECK)
|
||||
|
||||
$(patsubst %,$(DIR_DL)/%,$(objects)) :
|
||||
@$(LOAD)
|
||||
|
||||
$(subst %,%_BLAKE2,$(objects)) :
|
||||
@$(B2SUM)
|
||||
|
||||
###############################################################################
|
||||
# Installation Details
|
||||
###############################################################################
|
||||
|
||||
$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
|
||||
@$(PREBUILD)
|
||||
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
|
||||
$(UPDATE_AUTOMAKE)
|
||||
cd $(DIR_APP) && make install
|
||||
@rm -rf $(DIR_APP)
|
||||
@$(POSTBUILD)
|
||||
@@ -91,6 +91,7 @@ $(TARGET) :
|
||||
install -v -m 755 $$i /etc/rc.d/helper/; \
|
||||
done
|
||||
|
||||
ln -sf ../init.d/grub-btrfsd /etc/rc.d/rc0.d/K01grub-btrfsd
|
||||
ln -sf ../init.d/imspetor /etc/rc.d/rc0.d/K01imspetor
|
||||
ln -sf ../init.d/motion /etc/rc.d/rc0.d/K01motion
|
||||
ln -sf ../init.d/vdradmin /etc/rc.d/rc0.d/K01vdradmin
|
||||
@@ -132,10 +133,12 @@ $(TARGET) :
|
||||
ln -sf ../init.d/fcron /etc/rc.d/rc3.d/S40fcron
|
||||
ln -sf ../../sysconfig/rc.local /etc/rc.d/rc3.d/S98rc.local
|
||||
ln -sf ../init.d/sslh /etc/rc.d/rc3.d/S98sslh
|
||||
ln -sf ../init.d/grub-btrfsd /etc/rc.d/rc3.d/S99grub-btrfsd
|
||||
ln -sf ../init.d/imspetor /etc/rc.d/rc3.d/S99imspetor
|
||||
ln -sf ../init.d/motion /etc/rc.d/rc3.d/S99motion
|
||||
ln -sf ../init.d/vdradmin /etc/rc.d/rc3.d/S99vdradmin
|
||||
|
||||
ln -sf ../init.d/grub-btrfsd /etc/rc.d/rc6.d/K01grub-btrfsd
|
||||
ln -sf ../init.d/imspetor /etc/rc.d/rc6.d/K01imspetor
|
||||
ln -sf ../init.d/motion /etc/rc.d/rc6.d/K01motion
|
||||
ln -sf ../init.d/vdradmin /etc/rc.d/rc6.d/K01vdradmin
|
||||
|
||||
1
make.sh
1
make.sh
@@ -1714,6 +1714,7 @@ buildipfire() {
|
||||
lfsmake2 wsdd
|
||||
lfsmake2 btrfs-progs
|
||||
lfsmake2 inotify-tools
|
||||
lfsmake2 grub-btrfs
|
||||
|
||||
# Kernelbuild ... current we have no platform that need
|
||||
# multi kernel builds so KCFG is empty
|
||||
|
||||
61
src/initscripts/system/grub-btrfsd
Normal file
61
src/initscripts/system/grub-btrfsd
Normal file
@@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
###############################################################################
|
||||
# #
|
||||
# IPFire.org - A linux based firewall #
|
||||
# Copyright (C) 2007-2024 IPFire Team <info@ipfire.org> #
|
||||
# #
|
||||
# This program is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# This program is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
###############################################################################
|
||||
|
||||
. /etc/sysconfig/rc
|
||||
. ${rc_functions}
|
||||
|
||||
SNAPSHOTDIR="/.snapshots"
|
||||
PIDFILE="/run/grub-btrfsd.pid"
|
||||
|
||||
root_is_btrfs() {
|
||||
[ "$(stat -f --format="%T" /)" == "btrfs" ] || return 1
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
root_is_btrfs || exit 0
|
||||
|
||||
boot_mesg "Starting Grub/Btrfs snapshot manager..."
|
||||
loadproc -b -p "$PIDFILE" /usr/bin/grub-btrfsd --syslog "$SNAPSHOTDIR"
|
||||
|
||||
# Store the gained PID to the defined pidfile
|
||||
echo "$!" > "$PIDFILE"
|
||||
;;
|
||||
|
||||
stop)
|
||||
boot_mesg "Stopping grub-btrfsd..."
|
||||
killproc -p "$PIDFILE" /usr/bin/grub-btrfsd
|
||||
sleep 1;
|
||||
;;
|
||||
|
||||
restart)
|
||||
$0 stop
|
||||
sleep 2
|
||||
$0 start
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user