public inbox for development@lists.ipfire.org
 help / color / mirror / Atom feed
From: Michael Tremer <michael.tremer@ipfire.org>
To: development@lists.ipfire.org
Subject: Re: [PATCH 15/17] grub-btrfs: New package
Date: Wed, 20 Mar 2024 09:47:02 +0000	[thread overview]
Message-ID: <DB2367F2-C1AD-46B0-869E-8681271F9456@ipfire.org> (raw)
In-Reply-To: <026e8baa5505d9e92c959255998bc7f610d264c3.camel@ipfire.org>

[-- Attachment #1: Type: text/plain, Size: 12079 bytes --]

Btrfs Snapshot Daemon?

GRUB/Btrfs Daemon?

Are we spelling btrfs lowercase everywhere? Wikipedia seems to have gone for a capital B, rest lowercase.

  https://en.wikipedia.org/wiki/Btrfs

-Michael

> On 19 Mar 2024, at 20:21, Stefan Schantl <stefan.schantl(a)ipfire.org> wrote:
> 
> Am Montag, dem 18.03.2024 um 16:13 +0000 schrieb Michael Tremer:
>> 
>> 
>>> On 15 Mar 2024, at 19:14, Stefan Schantl
>>> <stefan.schantl(a)ipfire.org> wrote:
>>> 
>>> 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(a)ipfire.org>
>>> ---
>>> config/rootfiles/common/grub-btrfs         | 14 ++++
>>> config/rootfiles/common/x86_64/initscripts |  4 ++
>>> lfs/grub-btrfs                             | 79
>>> ++++++++++++++++++++++
>>> lfs/initscripts                            |  3 +
>>> make.sh                                    |  1 +
>>> src/initscripts/system/grub-btrfsd         | 61 +++++++++++++++++
>>> 6 files changed, 162 insertions(+)
>>> create mode 100644 config/rootfiles/common/grub-btrfs
>>> create mode 100644 lfs/grub-btrfs
>>> create mode 100644 src/initscripts/system/grub-btrfsd
>>> 
>>> diff --git a/config/rootfiles/common/grub-btrfs
>>> b/config/rootfiles/common/grub-btrfs
>>> new file mode 100644
>>> index 000000000..a612af065
>>> --- /dev/null
>>> +++ b/config/rootfiles/common/grub-btrfs
>>> @@ -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
>>> diff --git a/config/rootfiles/common/x86_64/initscripts
>>> b/config/rootfiles/common/x86_64/initscripts
>>> index a5e1596fb..2d6fa85dc 100644
>>> --- a/config/rootfiles/common/x86_64/initscripts
>>> +++ b/config/rootfiles/common/x86_64/initscripts
>>> @@ -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
>>> diff --git a/lfs/grub-btrfs b/lfs/grub-btrfs
>>> new file mode 100644
>>> index 000000000..8dc0c4f3e
>>> --- /dev/null
>>> +++ b/lfs/grub-btrfs
>>> @@ -0,0 +1,79 @@
>>> +##################################################################
>>> #############
>>> +#                                                                 
>>>             #
>>> +# IPFire.org - A linux based
>>> firewall                                         #
>>> +# Copyright (C) 2007-2023  IPFire Team 
>>> <info(a)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 =
>>> e2f11a0a8282e3ec8ff8223e3bad70b5d5c5e81b4d740a1bf3554db412dbe48a8a0
>>> f216f4e6c65ae1d11c01a27b8b92bae9b470c60d2389505ce089511536e1a
>>> +
>>> +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)
>>> diff --git a/lfs/initscripts b/lfs/initscripts
>>> index e078632ab..4d67ee0c4 100644
>>> --- a/lfs/initscripts
>>> +++ b/lfs/initscripts
>>> @@ -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
>>> diff --git a/make.sh b/make.sh
>>> index 30bd5f16b..0aa3d26af 100755
>>> --- a/make.sh
>>> +++ b/make.sh
>>> @@ -1713,6 +1713,7 @@ buildipfire() {
>>>   lfsmake2 mympd
>>>   lfsmake2 btrfs-progs
>>>   lfsmake2 inotify-tools
>>> +  lfsmake2 grub-btrfs
>>> 
>>>   # Kernelbuild ... current we have no platform that need
>>>   # multi kernel builds so KCFG is empty
>>> diff --git a/src/initscripts/system/grub-btrfsd
>>> b/src/initscripts/system/grub-btrfsd
>>> new file mode 100644
>>> index 000000000..833f90cb1
>>> --- /dev/null
>>> +++ b/src/initscripts/system/grub-btrfsd
>>> @@ -0,0 +1,61 @@
>>> +#!/bin/sh
>>> +##################################################################
>>> #############
>>> +#                                                                 
>>>             #
>>> +# IPFire.org - A linux based
>>> firewall                                         #
>>> +# Copyright (C) 2007-2024  IPFire Team 
>>> <info(a)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-btrfsd..."
>> 
>> Please give this a more human-readable name. Like the other services
>> :)
> 
> Okay, any suggestions?
> 
>> 
>>> + 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
>>> -- 
>>> 2.39.2



  reply	other threads:[~2024-03-20  9:47 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-15 19:14 [PATCH 00/17] BTRFS support on IPFire 2.x (experimental) Stefan Schantl
2024-03-15 19:14 ` [PATCH 01/17] btrfs-progs: New package Stefan Schantl
2024-03-18 16:02   ` Michael Tremer
2024-03-19 19:53     ` Stefan Schantl
2024-03-15 19:14 ` [PATCH 02/17] installer: Allow to install IPFire on BTRFS Stefan Schantl
2024-03-18 16:03   ` Michael Tremer
2024-03-15 19:14 ` [PATCH 03/17] installer: Ensure to always create the /boot directory Stefan Schantl
2024-03-15 19:14 ` [PATCH 04/17] installer: Disable seperate boot partition Stefan Schantl
2024-03-18 16:05   ` Michael Tremer
2024-03-15 19:14 ` [PATCH 05/17] installer: Add code to create a BTRFS subvolume layout Stefan Schantl
2024-03-18 16:09   ` Michael Tremer
2024-03-19 20:05     ` Stefan Schantl
2024-03-22 16:21       ` Michael Tremer
2024-03-15 19:14 ` [PATCH 06/17] installer: Correctly umount main BTRFS partition Stefan Schantl
2024-03-15 19:14 ` [PATCH 07/17] installer: Add recurisve mkdir function Stefan Schantl
2024-03-15 19:14 ` [PATCH 08/17] installer: Mount BTRFS layout before installing the system Stefan Schantl
2024-03-18 16:11   ` Michael Tremer
2024-03-19 20:09     ` Stefan Schantl
2024-03-15 19:14 ` [PATCH 09/17] installer: Add /var/tmp to the BTRFS layout Stefan Schantl
2024-03-15 19:14 ` [PATCH 10/17] installer: Fix using BTRFS mount options when mounting the layout Stefan Schantl
2024-03-15 19:14 ` [PATCH 11/17] installer: Add code to proper unmount the BTRFS layout Stefan Schantl
2024-03-15 19:14 ` [PATCH 12/17] installer: Add code to correctly write the fstab when installing on BTRFS Stefan Schantl
2024-03-15 19:14 ` [PATCH 13/17] installer: Define common mount options for BTRFS volumes Stefan Schantl
2024-03-18 16:13   ` Michael Tremer
2024-03-19 20:19     ` Stefan Schantl
2024-03-22 16:23       ` Michael Tremer
2024-03-15 19:14 ` [PATCH 14/17] inotify-tools: New package Stefan Schantl
2024-03-15 19:14 ` [PATCH 15/17] grub-btrfs: " Stefan Schantl
2024-03-18 16:13   ` Michael Tremer
2024-03-19 20:21     ` Stefan Schantl
2024-03-20  9:47       ` Michael Tremer [this message]
2024-03-25 11:32         ` Michael Tremer
2024-03-15 19:14 ` [PATCH 16/17] installer: Mark BTRFS support as experimental Stefan Schantl
2024-03-18 16:14   ` Michael Tremer
2024-03-15 19:14 ` [PATCH 17/17] installer: Adjust BTRFS layout Stefan Schantl
2024-03-18 16:18 ` [PATCH 00/17] BTRFS support on IPFire 2.x (experimental) Michael Tremer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DB2367F2-C1AD-46B0-869E-8681271F9456@ipfire.org \
    --to=michael.tremer@ipfire.org \
    --cc=development@lists.ipfire.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox