Compare commits

...

47 Commits
v1.0 ... v1.8

Author SHA1 Message Date
Antynea
6ae56dbaf6 Merge pull request #16 from wesbarnett/master
Add GRUB_BTRFS_LIMIT 
add GRUB_BTRFS_SUBVOLUME_SORT
2016-03-19 16:35:54 +01:00
James Barnett
f820de4759 add sorting options 2016-03-19 08:19:10 -05:00
James Barnett
59164367e7 cleanup 2016-03-19 08:11:47 -05:00
James Barnett
f256338074 Add GRUB_BTRFS_LIMIT
Allow user to limit the number of snapshots listed in GRUB. This also reverses
the order of the snapshots such that the more recent ones come first. That is,
if a user specifies GRUB_BTRFS_LIMIT=10, then only the 10 most recent snapshots
will be shown. The default limit is 100, which seems very large. The more
snapshots in the GRUB menu, the longer the system takes to boot.
2016-03-18 16:46:11 -05:00
Antynea
52ab9dbe95 Merge pull request #14 from Antynea/v1.xx
fix: incorrect detection "$boot_dir_real_path" for initramfs
2016-02-15 03:44:10 +01:00
Antynea
28e9524ca5 fix: incorrect detection "$boot_dir_real_path" for initramfs 2016-02-08 00:01:42 +01:00
Antynea
8fffc13c2f Merge pull request #12 from Antynea/v1.xx
enhanced description
2016-01-15 18:31:18 +01:00
Antynea
a4db6a8870 enhanced description 2016-01-15 18:29:52 +01:00
Antynea
4388c334a3 Merge branch 'v1.xx' 2015-09-25 10:33:04 +02:00
Antynea
a2acaefa9c Merge branch 'master' into v1.xx 2015-09-25 10:32:33 +02:00
Antynea
3db73de479 fixme : choise of method 2015-09-25 10:24:20 +02:00
Antynea
39b2d09015 Add Show full path or only name of snapshots in grub-menu 2015-09-24 08:49:59 +02:00
Antynea
b511210646 Update README.md 2015-09-23 02:39:26 +02:00
Antynea
63d653746b Update README.md 2015-09-23 02:36:04 +02:00
Antynea
2df311179e Update README.md 2015-09-23 02:33:44 +02:00
Antynea
58b8f5d3ec Update README.md 2015-09-23 02:32:10 +02:00
Antynea
4081cbd27a update how to use it & to do:
add :

* GRUB_BTRFS_TITLE_FORMAT="p/d/n"
	(Custom title, shows/hides p"prefix" d"date" n"name" in grub-menu, separator "/", custom order available)

* Show full path or only name of snapshots in grub-menu
2015-09-23 02:29:01 +02:00
Antynea
9d3aa6d8a3 Update :
translation update

New option in /etc/default/grub

* GRUB_BTRFS_TITLE_FORMAT="p/d/n"
   (Custom title, shows/hides p"prefix" d"date" n"name" in grub-menu, separator "/", custom order available)
2015-09-23 02:14:46 +02:00
Antynea
25e2c16828 in progress
custom title menu
2015-09-19 04:48:45 +02:00
Antynea
14cbf60c5a in progress :
custom title menu
2015-09-19 04:31:17 +02:00
Antynea
2cf01a874f in progress
add custom title
2015-09-18 14:52:17 +02:00
Antynea
93b8ac07f5 new ideas 2015-09-11 22:46:26 +02:00
Antynea
252a6372dd Merge branch 'v1.xx' 2015-08-31 04:57:11 +02:00
Antynea
297f539f0a fixme: boot with microcode 2015-08-31 04:55:34 +02:00
Antynea
1c6c8c6051 Merge branch 'v1.xx'
Fix: redundancy parameter
2015-08-31 04:29:41 +02:00
Antynea
f0fb4b8e25 redundancy parameter 2015-08-31 04:20:33 +02:00
Antynea
650ac69552 Merge branch 'v1.xx' 2015-08-30 16:18:45 +02:00
Antynea
3ebc5b494a Update description
Add few comments
2015-08-30 16:14:59 +02:00
Antynea
615cbe9f3a Merge branch 'v1.xx' 2015-08-30 03:43:08 +02:00
Antynea
2e58a2b74d enhanced detect microcode 2015-08-30 03:39:15 +02:00
Antynea
4f725a8431 Merge branch 'master' into v1.xx 2015-08-30 02:38:23 +02:00
Antynea
d598529001 fixme : detect kernesl and initramfs with spaces
fixme : detect kernel and initramfs with spaces
2015-08-30 02:23:18 +02:00
Antynea
b925f639cd fixme : detect snapshot name with spaces
fixme : detect snapshot name with spaces
2015-08-30 01:19:25 +02:00
Antynea
31a0baa2b1 redundancy test
redundancy test
2015-08-30 00:15:15 +02:00
Antynea
3a7c6abece fixme : detect microcode
fixme : detect microcode
2015-08-29 23:45:32 +02:00
Antynea
5e0951d8cb Fixme : broken $boot_dir_real_path
Fixme : broken $boot_dir_real_path
2015-08-29 23:17:03 +02:00
Antynea
c9f5938e04 Merge branch 'v1.xx' 2015-08-29 18:22:16 +02:00
Antynea
128cbe28f3 Merge branch 'master' into v1.xx
Conflicts:
	41_snapshots-btrfs
2015-08-29 18:17:42 +02:00
Antynea
aae6892218 Update README.md 2015-08-10 06:29:19 +02:00
Antynea
84ecc2a5a7 Update README.md 2015-08-10 06:27:31 +02:00
Antynea
7c1178b17c Update README.md 2015-08-10 06:26:49 +02:00
Antynea
7d07503f07 Update README.md 2015-08-09 04:21:52 +02:00
Antynea
f646dfd900 Update README.md 2015-08-09 04:20:25 +02:00
Antynea
b4d4bc0aac Update README.md 2015-08-09 04:19:38 +02:00
Antynea
6f7fb178fb Merge pull request #9 from Antynea/Development
enhanced
2015-07-22 02:05:05 +02:00
Antynea
d561206775 enhanced
enhanced
2015-07-22 01:59:28 +02:00
Antynea
563151507d enhanced
enhanced
2015-07-22 01:52:48 +02:00
3 changed files with 198 additions and 75 deletions

View File

@@ -1,39 +1,46 @@
#! /usr/bin/bash #! /usr/bin/env bash
# #
# #
######################################################################################################################################################### #################################################################################################################################################
# Written by: Antynea # # Written by: Antynea #
# # # #
# Purpose: Include btrfs snapshots at boot options. # # Purpose: Include btrfs snapshots at boot options (grub-menu). #
# # # #
# What this script does: # # What this script does: #
# - Automatically List snapshots existing on root partition (btrfs). # # - Automatically List snapshots existing on root partition (btrfs). #
# - Automatically Detect kernel, initramfs and intel microcode in "/boot" directory on snapshots. (For custon name, see below.) # # - Automatically Detect if "/boot" is in separate partition. #
# - Automatically Create corresponding "menuentry" in grub.cfg , which ensures a very easy rollback. # # - Automatically Detect kernel, initramfs and intel microcode in "/boot" directory on snapshots. (For custon name, see below.) #
# # # - Automatically Create corresponding "menuentry" in grub.cfg , which ensures a very easy rollback. #
# How to use it: # # #
# - Add this lines to /etc/default/grub: # # How to use it: #
# # # - Add this lines to /etc/default/grub: #
# * GRUB_BTRFS_SUBMENUNAME="ArchLinux Snapshots" (Name menu appearing in grub.) # # #
# * GRUB_BTRFS_PREFIXENTRY="Snapshot:" (Add a name ahead your snapshots entries.) # # * GRUB_BTRFS_SUBMENUNAME="ArchLinux Snapshots" #
# * GRUB_BTRFS_NKERNEL=("vmlinuz-linux") (Use only if you have custom kernel name or auto-detect failed.) # # (Name menu appearing in grub.) #
# * GRUB_BTRFS_NINIT=("initramfs-linux.img" "initramfs-linux-fallback.img") (Use only if you have custom initramfs name or auto-detect failed.) # # * GRUB_BTRFS_PREFIXENTRY="Snapshot:" #
# * GRUB_BTRFS_INTEL_UCODE=("intel-ucode.img") (Use only if you have custom intel-ucode or auto-detect failed.) # # (Add a name ahead your snapshots entries.) #
# # # * GRUB_BTRFS_DISPLAY_PATH_SNAPSHOT="true" #
# - Generate grub.cfg (on Archlinux use grub-mkconfig -o /boot/grub/grub.cfg ) # # (Show full path snapshot or only name) #
# # # * GRUB_BTRFS_TITLE_FORMAT="p/d/n" #
# - grub-btrfs automatically generates snapshots entries. # # (Custom title, shows/hides p"prefix" d"date" n"name" in grub-menu, separator "/", custom order available) #
# - You will see it appear different entries (e.g : Snapshot: my snapshot name overkill [2014-02-12 11:24:37]) # # * GRUB_BTRFS_NKERNEL=("vmlinuz-linux") #
# # # (Use only if you have custom kernel name or auto-detect failed.) #
# Warning: # # * GRUB_BTRFS_NINIT=("initramfs-linux.img" "initramfs-linux-fallback.img") #
# # # (Use only if you have custom initramfs name or auto-detect failed.) #
# Script in progress # # * GRUB_BTRFS_INTEL_UCODE=("intel-ucode.img") #
# to do : # # (Use only if you have custom intel-ucode or auto-detect failed.) #
# # # # #
# * verify compatibility with manjaro and snapper (but I don't use them, so it will take some time) # # - Generate grub.cfg (on Archlinux use grub-mkconfig -o /boot/grub/grub.cfg) #
# # # #
# # # - grub-btrfs automatically generates snapshots entries. #
######################################################################################################################################################### # - You will see it appear different entries (e.g : Snapshot: [2014-02-12 11:24:37] my snapshot name overkill) #
# #
# #
# To do: #
# # #
# * Display name of microcode in menuentry when available #
# #
#################################################################################################################################################
set -e set -e
@@ -50,17 +57,29 @@ sysconfdir="/etc"
### Variables in /etc/default/grub ### ### Variables in /etc/default/grub ###
###################################### ######################################
## Choice of method ## Choice of method
choise_of_method=${GRUB_BTRFS_SUBMENUNAME:-"1"} choise_of_method=${GRUB_BTRFS_METHOD:-"1"}
## Submenu name ## Submenu name
submenuname=${GRUB_BTRFS_SUBMENUNAME:-"ArchLinux Snapshots"} submenuname=${GRUB_BTRFS_SUBMENUNAME:-"ArchLinux Snapshots"}
## Prefix entry ## Prefix entry
prefixentry=${GRUB_BTRFS_PREFIXENTRY:-"Snapshot:"} prefixentry=${GRUB_BTRFS_PREFIXENTRY:-"Snapshot:"}
## Show full path snapshot or only name
path_snapshot=${GRUB_BTRFS_DISPLAY_PATH_SNAPSHOT:-"true"}
## Title format
title_format=${GRUB_BTRFS_TITLE_FORMAT:-"p/d/n"}
## Kernel(s) name(s) ## Kernel(s) name(s)
nkernel=("${GRUB_BTRFS_NKERNEL[@]}") nkernel=("${GRUB_BTRFS_NKERNEL[@]}")
## Initramfs name(s) ## Initramfs name(s)
ninit=("${GRUB_BTRFS_NINIT[@]}") ninit=("${GRUB_BTRFS_NINIT[@]}")
## Microcode(s) name(s) ## Microcode(s) name(s)
microcode=("${GRUB_BTRFS_INTEL_UCODE[@]:-intel-ucode.img}") microcode=("${GRUB_BTRFS_INTEL_UCODE[@]}")
## Limit to show in menu
limit=("${GRUB_BTRFS_LIMIT[@]:-100}")
## How to sort
subvolsort=${GRUB_BTRFS_SUBVOLUME_SORT:-"descending"}
case "${subvolsort}" in
ascending) btrfssubvolsort=("--sort=+rootid");;
*) btrfssubvolsort=("--sort=-rootid")
esac
######################## ########################
### variables script ### ### variables script ###
@@ -90,7 +109,6 @@ boot_dir()
boot_dir="$gbgmp/$snap_dir_name/boot" boot_dir="$gbgmp/$snap_dir_name/boot"
[[ "$root_uuid" != "$boot_uuid" ]] && boot_dir="/boot" [[ "$root_uuid" != "$boot_uuid" ]] && boot_dir="/boot"
echo "$boot_dir" echo "$boot_dir"
if [ -d ${boot_dir} ]; then boot_dir_real_path="$(make_system_path_relative_to_its_root "$boot_dir")"; fi
} }
@@ -104,11 +122,14 @@ boot_dir()
snapshots_entry() snapshots_entry()
{ {
## \" required for snap,kernels,init,microcode with space in their name ## \" required for snap,kernels,init,microcode with space in their name
echo " submenu '${1} ${2} ${3}' {" echo " submenu '"${title_menu[*]}"' {
for k in "${name_kernel[@]}"; do submenu '---> "${title_menu[*]}" <---' { echo }
for i in "${name_initramfs[@]}"; do "
echo "\ for k in "${name_kernel[@]}"; do
menuentry '${2} with "${k}" & "${i}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid'{ for i in "${name_initramfs[@]}"; do
for u in "${name_microcode[@]}"; do
echo "\
menuentry '"${k}" & "${i}"' ${CLASS} "\$menuentry_id_option" 'gnulinux-snapshots-$boot_uuid'{
$(save_default_entry) $(save_default_entry)
if [ x\$feature_all_video_module = xy ]; then if [ x\$feature_all_video_module = xy ]; then
insmod all_video insmod all_video
@@ -120,80 +141,130 @@ snapshots_entry()
else else
search --no-floppy --fs-uuid --set=root ${boot_uuid} search --no-floppy --fs-uuid --set=root ${boot_uuid}
fi fi
echo 'Loading Snapshot: "${snap_dir_name}" "${snap_date_time}"' echo 'Loading Snapshot: "${snap_date_time}" "${snap_dir_name}"'
echo 'Loading Kernel: "${k}" ...' echo 'Loading Kernel: "${k}" ...'
linux \"${boot_dir_real_path}/"${k}"\" root=UUID=${root_uuid} rw rootflags=subvol=\""${snap_dir_name}"\" ${kernel_parameters} linux \"${boot_dir_real_path}/"${k}"\" root=UUID=${root_uuid} rw rootflags=subvol=\""${snap_dir_name}"\" ${kernel_parameters}\
echo 'Loading Initramfs: "${i}" ...'" "
if [ -f "/${boot_dir_real_path}/"${microcode}"" ] ; then if [ -f "$(boot_dir)"/"${u}" ] ; then
echo "\ echo "\
initrd \"${boot_dir_real_path}/"${microcode}"\" initrd \"/${snap_dir_name}/boot/"${i}"\"" echo 'Loading Microcode & Initramfs: "${u}" "${i}" ...'
else initrd \"${boot_dir_real_path}/"${u}"\" \"${boot_dir_real_path}/"${i}"\""
echo "\ else
echo "\
echo 'Loading Initramfs: "${i}" ...'
initrd \"${boot_dir_real_path}/"${i}"\"" initrd \"${boot_dir_real_path}/"${i}"\""
fi fi
echo " }" echo " }"
done done
done done
done
echo " }" echo " }"
} }
## List of snapshots on filesystem ## List of snapshots on filesystem
snapshot_list() snapshot_list()
{ {
for snap in $(btrfs subvolume list -sa /); do for snap in $(btrfs subvolume list -sa "${btrfssubvolsort}" /); do
IFS=$oldIFS IFS=$oldIFS
snap=($snap) snap=($snap)
local snap_path_name=${snap[@]:13:${#snap[@]}} local snap_path_name=${snap[@]:13:${#snap[@]}}
# Discard deleted snapshots # Discard deleted snapshots
if [ $snap_path_name = "DELETED" ]; then continue; fi if [ "$snap_path_name" = "DELETED" ]; then continue; fi
[[ ${snap_path_name%%"/"*} == "<FS_TREE>" ]] && snap_path_name=${snap_path_name#*"/"} [[ ${snap_path_name%%"/"*} == "<FS_TREE>" ]] && snap_path_name=${snap_path_name#*"/"}
echo ${snap[@]:10:2} ${snap_path_name} echo ${snap[@]:10:2} ${snap_path_name}
done done
} }
## Detect kernels in "/boot"
detect_kernel() detect_kernel()
{ {
## Arch original kernel (auto-detect) ## Arch original kernel (auto-detect)
for akernel in $(boot_dir)/vmlinuz-* ; do for akernel in "$(boot_dir)"/vmlinuz-* ; do
list_kernel+=("$akernel") list_kernel+=("$akernel")
done done
## Custom name kernel in GRUB_BTRFS_NKERNEL ## Custom name kernel in GRUB_BTRFS_NKERNEL
if [ ! -z ${nkernel} ] ; then if [ ! -z "${nkernel}" ] ; then
for ckernel in "${nkernel[@]}" ; do for ckernel in "${nkernel[@]}" ; do
[[ ! -f /$(boot_dir)/${ckernel} ]] && continue; [[ ! -f /"$(boot_dir)"/"${ckernel}" ]] && continue;
list_kernel+=("$ckernel") list_kernel+=("$ckernel")
done done
fi fi
} }
## Detect initramfs in "/boot"
detect_initramfs() detect_initramfs()
{ {
## Arch original initramfs (auto-detect) ## Arch original initramfs (auto-detect)
for ainitramfs in $(boot_dir)/initramfs-* ; do for ainitramfs in "$(boot_dir)"/initramfs-* ; do
list_initramfs+=("$ainitramfs") list_initramfs+=("$ainitramfs")
done done
## Custom name initramfs in GRUB_BTRFS_NINIT ## Custom name initramfs in GRUB_BTRFS_NINIT
if [ ! -z ${ninit} ] ; then if [ ! -z "$ninit" ] ; then
for cinitramfs in "${ninit[@]}" ; do for cinitramfs in "${ninit[@]}" ; do
[[ ! -f /$(boot_dir)/${ninit} ]] && continue; [[ ! -f /"$(boot_dir)"/"${cinitramfs}" ]] && continue;
list_initramfs+=("$ninit") list_initramfs+=("$cinitramfs")
done done
fi fi
} }
## List of kernels and initramfs in snapshots ## Detect microcode in "/boot"
detect_microcode()
{
## Arch original intel microcode
for aucode in "$(boot_dir)"/intel-ucode.img ; do
list_ucode+=("$aucode")
done
## Custom name microcode in GRUB_BTRFS_INTEL_UCODE
if [ ! -z "$microcode" ] ; then
for cucode in "${microcode[@]}" ; do
[[ ! -f /"$(boot_dir)"/"${cucode}" ]] && continue
list_ucode+=("$cucode")
done
fi
}
## Show full path snapshot or only name
path_snapshot()
{
case "${path_snapshot}" in
true) name_snapshot=("${snap_dir_name}");;
*) name_snapshot=("${snap_dir_name#*"/"}")
esac
}
## Title format in grub-menu
title_format()
{
case "${title_format}" in
p/d/n) title_menu=("${prefixentry}" "${snap_date_time}" "${name_snapshot}");;
p/n/d) title_menu=("${prefixentry}" "${snap_dir_name}" "${snap_date_time}");;
p/d) title_menu=("${prefixentry}" "${snap_date_time}");;
p/n) title_menu=("${prefixentry}" "${snap_dir_name}");;
d/n) title_menu=("${snap_date_time}" "${snap_dir_name}");;
n/d) title_menu=("${snap_dir_name}" "${snap_date_time}");;
p) title_menu=("${prefixentry}");;
d) title_menu=("${snap_date_time}");;
n) title_menu=("${snap_dir_name}");;
*) gettext_printf $"# Warning: GRUB_BTRFS_TITLE_FORMAT=${title_format}, syntax error \n" >&2
esac
}
## List of kernels, initramfs and microcode in snapshots
list_kernels_initramfs() list_kernels_initramfs()
{ {
IFS=$'\n' IFS=$'\n'
c=0
for item in $(snapshot_list); do for item in $(snapshot_list); do
IFS=$oldIFS IFS=$oldIFS
item=($item) item=($item)
snap_dir_name=${item[@]:2:${#item[@]}} snap_dir_name=${item[@]:2:${#item[@]}}
[[ ! -d "$gbgmp/$snap_dir_name/boot" ]] && continue; [[ ! -d "$gbgmp/$snap_dir_name/boot" ]] && continue;
snap_date_time=${item[@]:0:2} snap_date_time=${item[@]:0:2}
gettext_printf $"# Found Snapshot: %s\n" "$snap_dir_name $snap_date_time" >&2 ; gettext_printf $"# Found Snapshot: %s\n" "${snap_date_time} ${snap_dir_name}" >&2 ;
unset list_kernel unset list_kernel
detect_kernel detect_kernel
name_kernel=("${list_kernel[@]##*"/"}") name_kernel=("${list_kernel[@]##*"/"}")
@@ -202,8 +273,22 @@ list_kernels_initramfs()
detect_initramfs detect_initramfs
name_initramfs=("${list_initramfs[@]##*"/"}") name_initramfs=("${list_initramfs[@]##*"/"}")
# echo "initramfs = ${name_initramfs[*]}" # echo "initramfs = ${name_initramfs[*]}"
# Create menu entries unset list_ucode
snapshots_entry "${prefixentry}" "${snap_dir_name}" "${snap_date_time}" detect_microcode
name_microcode=("${list_ucode[@]##*"/"}")
# echo "ucode = ${name_microcode[*]}"
boot_dir_real_path="$(make_system_path_relative_to_its_root "$(boot_dir)")"
## Create menu entries
# name snpashot
path_snapshot
# title menu custom
title_format
# echo "${title_menu[*]}"
snapshots_entry
c=$((1+$c))
if [[ $c -gt $limit ]]; then
break;
fi
done done
IFS=$oldIFS IFS=$oldIFS
} }
@@ -220,4 +305,4 @@ if [ ${choise_of_method} = "1" ] ; then
umount $gbgmp umount $gbgmp
gettext_printf "###### - Grub-btrfs: Auto-detect - ######\n" >&2 ; gettext_printf "###### - Grub-btrfs: Auto-detect - ######\n" >&2 ;
fi fi
### End choice of method ### ### End choice of method ###

View File

@@ -1,3 +1,5 @@
[![GitHub release](https://img.shields.io/github/release/Antynea/grub-btrfs.svg)](https://github.com/Antynea/grub-btrfs)
### grub-btrfs ### grub-btrfs
@@ -11,31 +13,67 @@ grub-btrfs, Include btrfs snapshots at boot options. (grub menu)
Simple rollback using snapshots you made previously. Simple rollback using snapshots you made previously.
- Automatically List snapshots existing on root partition (btrfs). * Automatically List snapshots existing on root partition (btrfs).
- Automatically Detect kernel, initramfs and intel microcode in "/boot" directory on snapshots. (For custon name, see below.)
- Automatically Create corresponding menuentry in grub.cfg , which ensures a very easy rollback. * Automatically Detect if "/boot" is in separate partition.
* Automatically Detect kernel, initramfs and intel microcode in "/boot" directory on snapshots. (For custon name, see below.)
* Automatically Create corresponding "menuentry" in grub.cfg , which ensures a very easy rollback.
#### How to use it: #### How to use it:
Add this lines to /etc/default/grub: Add this lines to /etc/default/grub:
* GRUB_BTRFS_SUBMENUNAME="ArchLinux Snapshots" (Name menu appearing in grub.) * GRUB_BTRFS_SUBMENUNAME="ArchLinux Snapshots"
* GRUB_BTRFS_PREFIXENTRY="Snapshot:" (Add a name ahead your snapshots entries.)
* GRUB_BTRFS_NKERNEL=("vmlinuz-linux") (Use only if you have custom kernel name or auto-detect failed.) (Name menu appearing in grub.)
* GRUB_BTRFS_NINIT=("initramfs-linux.img" "initramfs-linux-fallback.img") (Use only if you have custom initramfs name or auto-detect failed.)
* GRUB_BTRFS_INTEL_UCODE=("intel-ucode.img") (Use only if you have custom intel-ucode or auto-detect failed.) * GRUB_BTRFS_PREFIXENTRY="Snapshot:"
(Add a name ahead your snapshots entries.)
* GRUB_BTRFS_DISPLAY_PATH_SNAPSHOT="true"
(Show full path snapshot or only name)
* GRUB_BTRFS_TITLE_FORMAT="p/d/n"
(Custom title, shows/hides p"prefix" d"date" n"name" in grub-menu, separator "/", custom order available)
* GRUB_BTRFS_NKERNEL=("vmlinuz-linux")
(Use only if you have custom kernel name or auto-detect failed.)
* GRUB_BTRFS_NINIT=("initramfs-linux.img" "initramfs-linux-fallback.img")
(Use only if you have custom initramfs name or auto-detect failed.)
* GRUB_BTRFS_INTEL_UCODE=("intel-ucode.img")
(Use only if you have custom intel-ucode or auto-detect failed.)
* GRUB_BTRFS_LIMIT=("100")
(Limit the number of snapshots populated in the GRUB menu.)
* GRUB_BTRFS_SUBVOLUME_SORT=("descending")
(Sort the found subvolumes by newest first ("descending") or oldest first
("ascending"). If "ascending" is chosen then the $GRUB_BTRFS_LIMIT oldest
subvolumes will populate the menu.)
Generate grub.cfg (on Archlinux use grub-mkconfig -o /boot/grub/grub.cfg ) Generate grub.cfg (on Archlinux use grub-mkconfig -o /boot/grub/grub.cfg )
grub-btrfs automatically generates snapshots entries. grub-btrfs automatically generates snapshots entries.
You will see it appear differents entries (e.g : Snapshot: my snapshot name overkill [2014-02-12 11:24:37]) You will see it appear differents entries (e.g : Snapshot: [2014-02-12 11:24:37] my snapshot name overkill )
#### TO DO #### TO DO
* verify compatibility with manjaro and snapper (but I don't use them, so it will take some time) * Display name of microcode in menuentry when available

Binary file not shown.