GRUBST locks down your GRUB bootloader with password protection and provides a physical USB rescue key for emergency access.
This tool modifies your GRUB bootloader configuration. Incorrect usage may prevent your system from booting. Use at your own risk. The author assumes NO liability. Always have a backup recovery plan before using this tool.
| Feature | Description |
|---|---|
| 🔒 Lock GRUB | Prevents editing boot parameters, accessing recovery mode, or using the GRUB command line without a password |
| 🔑 USB Rescue Key | A physical USB drive acts as an instant unlock key — just plug it in before booting |
| 🔐 Backup Password | A secondary password you choose, in case you lose the USB key |
| 🛡️ Update Guard | Protection survives update-grub and kernel updates automatically |
| 💾 Auto Backup | GRUB configs are backed up before any changes, with instant restore |
| 🔍 Security Audit | Scans for disk encryption, Secure Boot, BIOS settings, and more |
🔒 Security Notice: GRUBST does not provide pre-built binaries. You must build from source on your own machine for security and transparency.
Follow these commands one by one:
# 1. Update package list and install prerequisites
sudo apt update
sudo apt install git curl build-essential pkg-config libgtk-3-dev \
libwebkit2gtk-4.1-dev libxdo-dev pkexec
# Note: On older Ubuntu/Debian releases, use libwebkit2gtk-4.0-dev if 4.1 is unavailable:
# sudo apt install libwebkit2gtk-4.0-dev libxdo-dev
# 2. Clone the repository
git clone https://github.com/sysdev-0/grubst.git
# 3. Enter the directory
cd grubst
# 4. Install Rust (if not installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# 5. Build the project (takes 2-5 minutes)
cargo build --release
# 6. Install with desktop integration
sudo make install
Done! GRUBST will now appear in your application menu.
Launch from your application menu or run sudo grubst.
After pulling new updates from Git, rebuild and reinstall to update the desktop app:
cd grubst
git pull
cargo build --release
sudo make install
This will update the installed binary and refresh the desktop integration.
libwebkit2gtk-4.1-dev / libwebkit2gtk-4.0-dev, libxdo-dev)pkexec)GRUBST must be run as root for lock/unlock operations:
sudo grubst
This opens the GUI where you can:
Normal boot (no USB):
┌──────────┐ ┌──────────────┐ ┌────────────────┐
│ BIOS │───▶│ GRUB Menu │───▶│ Linux boots │
│ │ │ (locked) │ │ normally ✅ │
└──────────┘ │ Can't edit │ └────────────────┘
│ Can't recover│
└──────────────┘
With USB rescue key:
┌──────────┐ ┌──────────────┐ ┌────────────────┐
│ BIOS │───▶│ GRUB Menu │───▶│ Full access │
│ │ │ (unlocked) │ │ Edit, recover │
└──────────┘ │ USB detected│ │ maintenance ✅│
└──────────────┘ └────────────────┘
GRUBST creates a standardized GRUB superuser account:
grubst_admin (fixed, cannot be changed)The fixed username prevents confusion and ensures consistency across installations. You don't need to remember it — the USB key handles authentication automatically.
src/
├── main.rs # Entry point (launches GUI)
├── lib.rs # Library exports (core + gui)
├── gui/
│ ├── mod.rs # Dioxus app shell + navigation
│ ├── style.css # UI styling
│ └── screens/
│ ├── home.rs # Dashboard screen
│ ├── lock.rs # Lock wizard (4 steps)
│ ├── unlock.rs # Unlock screen
│ └── audit.rs # Security audit screen
├── core/
│ ├── crypto.rs # PBKDF2 hashing, token generation
│ ├── usb.rs # USB detection, formatting, writing
│ ├── grub.rs # GRUB config management
│ ├── fingerprint.rs # Machine fingerprint (hardware binding)
│ ├── audit.rs # Security checks (8 checks)
│ ├── backup.rs # Backup & restore
│ └── update_guard.rs # update-grub protection hook
If you find GRUBST valuable and want to support its ongoing development, improvements, and maintenance, you can donate via PayPal:
Your support is greatly appreciated!
This project is licensed under the Business Source License 1.1 (BSL 1.1) — see the LICENSE file for details.
See SECURITY.md for the threat model scope and update-guard notes.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. The author is not responsible for any damage caused by using this software.
8 commits
Rust
88.4%
CSS
9.3%
Makefile
2.0%
GRUBST locks down your GRUB bootloader with password protection and provides a physical USB rescue key for emergency access.
This tool modifies your GRUB bootloader configuration. Incorrect usage may prevent your system from booting. Use at your own risk. The author assumes NO liability. Always have a backup recovery plan before using this tool.
| Feature | Description |
|---|---|
| 🔒 Lock GRUB | Prevents editing boot parameters, accessing recovery mode, or using the GRUB command line without a password |
| 🔑 USB Rescue Key | A physical USB drive acts as an instant unlock key — just plug it in before booting |
| 🔐 Backup Password | A secondary password you choose, in case you lose the USB key |
| 🛡️ Update Guard | Protection survives update-grub and kernel updates automatically |
| 💾 Auto Backup | GRUB configs are backed up before any changes, with instant restore |
| 🔍 Security Audit | Scans for disk encryption, Secure Boot, BIOS settings, and more |
🔒 Security Notice: GRUBST does not provide pre-built binaries. You must build from source on your own machine for security and transparency.
Follow these commands one by one:
# 1. Update package list and install prerequisites
sudo apt update
sudo apt install git curl build-essential pkg-config libgtk-3-dev \
libwebkit2gtk-4.1-dev libxdo-dev pkexec
# Note: On older Ubuntu/Debian releases, use libwebkit2gtk-4.0-dev if 4.1 is unavailable:
# sudo apt install libwebkit2gtk-4.0-dev libxdo-dev
# 2. Clone the repository
git clone https://github.com/sysdev-0/grubst.git
# 3. Enter the directory
cd grubst
# 4. Install Rust (if not installed)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# 5. Build the project (takes 2-5 minutes)
cargo build --release
# 6. Install with desktop integration
sudo make install
Done! GRUBST will now appear in your application menu.
Launch from your application menu or run sudo grubst.
After pulling new updates from Git, rebuild and reinstall to update the desktop app:
cd grubst
git pull
cargo build --release
sudo make install
This will update the installed binary and refresh the desktop integration.
libwebkit2gtk-4.1-dev / libwebkit2gtk-4.0-dev, libxdo-dev)pkexec)GRUBST must be run as root for lock/unlock operations:
sudo grubst
This opens the GUI where you can:
Normal boot (no USB):
┌──────────┐ ┌──────────────┐ ┌────────────────┐
│ BIOS │───▶│ GRUB Menu │───▶│ Linux boots │
│ │ │ (locked) │ │ normally ✅ │
└──────────┘ │ Can't edit │ └────────────────┘
│ Can't recover│
└──────────────┘
With USB rescue key:
┌──────────┐ ┌──────────────┐ ┌────────────────┐
│ BIOS │───▶│ GRUB Menu │───▶│ Full access │
│ │ │ (unlocked) │ │ Edit, recover │
└──────────┘ │ USB detected│ │ maintenance ✅│
└──────────────┘ └────────────────┘
GRUBST creates a standardized GRUB superuser account:
grubst_admin (fixed, cannot be changed)The fixed username prevents confusion and ensures consistency across installations. You don't need to remember it — the USB key handles authentication automatically.
src/
├── main.rs # Entry point (launches GUI)
├── lib.rs # Library exports (core + gui)
├── gui/
│ ├── mod.rs # Dioxus app shell + navigation
│ ├── style.css # UI styling
│ └── screens/
│ ├── home.rs # Dashboard screen
│ ├── lock.rs # Lock wizard (4 steps)
│ ├── unlock.rs # Unlock screen
│ └── audit.rs # Security audit screen
├── core/
│ ├── crypto.rs # PBKDF2 hashing, token generation
│ ├── usb.rs # USB detection, formatting, writing
│ ├── grub.rs # GRUB config management
│ ├── fingerprint.rs # Machine fingerprint (hardware binding)
│ ├── audit.rs # Security checks (8 checks)
│ ├── backup.rs # Backup & restore
│ └── update_guard.rs # update-grub protection hook
If you find GRUBST valuable and want to support its ongoing development, improvements, and maintenance, you can donate via PayPal:
Your support is greatly appreciated!
This project is licensed under the Business Source License 1.1 (BSL 1.1) — see the LICENSE file for details.
See SECURITY.md for the threat model scope and update-guard notes.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. The author is not responsible for any damage caused by using this software.
8 commits
Rust
88.4%
CSS
9.3%
Makefile
2.0%