A modern, fast, and safe USB bootable drive creator for Linux, written in Rust π¦
Flicker is a Rufus alternative for Linux that allows you to easily create bootable USB drives from ISO images. Built with Rust for maximum safety, performance, and reliability.
- π Smart USB Detection - Automatically detects and lists USB devices
- π Fast Writing - Optimized 4MB chunk writes for maximum performance
- π‘οΈ Safety First - Multiple validations and confirmations to prevent data loss
- π Real-time Progress - Beautiful progress bars with ETA and speed
- β Data Verification - Optional byte-by-byte verification after writing
- π Auto Unmount - Automatically unmounts devices before writing
- π» CLI Interface - Simple and intuitive command-line interface
- β‘ Zero Dependencies - Single binary, no external tools required
# Clone the repository
git clone https://github.com/vimi-tt/Flicker.git
cd Flicker
# Build release version
cargo build --release
# Install to system
sudo cp target/release/flicker /usr/local/bin/
# Verify installation
flicker --version- Rust 1.70 or higher
- Linux kernel 3.0+
- Root privileges (for writing to devices)
flicker listOutput:
π Available USB devices:
/dev/sdb - SanDisk Ultra (14.92 GB)
/dev/sdc - Kingston DataTraveler (29.84 GB)
sudo flicker write --iso ubuntu-24.04.iso --device /dev/sdbsudo flicker write --iso ubuntu-24.04.iso --device /dev/sdb --verify# Simple list
flicker list
# Detailed information
flicker list --verbose
flicker list -vsudo flicker write --iso <ISO_FILE> --device <DEVICE> [OPTIONS]Options:
--iso, -i <FILE>- Path to ISO file (required)--device, -d <DEVICE>- Target device path (required)--verify, -v- Verify data after writing--yes, -y- Skip confirmation prompts
Examples:
# Basic write
sudo flicker write --iso debian.iso --device /dev/sdb
# With verification (recommended for important data)
sudo flicker write --iso ubuntu.iso --device /dev/sdb --verify
# Skip confirmation (use with caution!)
sudo flicker write --iso arch.iso --device /dev/sdb --yes
# Short flags
sudo flicker write -i ubuntu.iso -d /dev/sdb -vflicker verify --iso <FILE> [--checksum <HASH>]Note: Checksum verification is planned for future release
# Step 1: List devices to identify your USB
flicker list -v
# Step 2: Write ISO with verification
sudo flicker write \
--iso ~/Downloads/ubuntu-24.04-desktop-amd64.iso \
--device /dev/sdb \
--verify
# Step 3: Done! Safely remove your USBFlicker includes multiple safety checks to prevent accidental data loss:
- Root Permission Check - Ensures proper privileges
- ISO Validation - Verifies file exists and is valid
- Device Validation - Confirms device exists and is a block device
- USB Detection - Warns if target is not a removable device
- Size Check - Ensures ISO fits on device
- Mount Check - Auto-unmounts mounted partitions
- Confirmation Prompts - Multiple confirmations before writing
- Verification - Optional byte-by-byte verification
flicker/
βββ src/
β βββ main.rs # Entry point
β βββ cli/ # CLI argument parsing
β β βββ mod.rs
β βββ usb/ # USB device detection
β β βββ mod.rs
β βββ writer/ # ISO writing logic
β β βββ mod.rs
β βββ utils.rs # Helper functions
βββ docs/ # Documentation
βββ Cargo.toml # Project configuration
βββ README.md
# Development build (faster compilation)
cargo build
# Release build (optimized)
cargo build --release
# Run tests
cargo test
# Run with logging
RUST_LOG=debug cargo run -- list -v
# Check code without building
cargo check
# Format code
cargo fmt
# Run linter
cargo clippy- USB device detection
- ISO writing with progress
- Data verification
- Auto-unmounting
- Safety validations
- ISO checksum verification (SHA256, MD5)
- Multi-device support (write to multiple USBs)
- Resume interrupted writes
- GUI version (optional)
# Always use sudo for writing
sudo flicker write --iso file.iso --device /dev/sdb# List devices to find correct path
flicker list -v
# Check with system tools
lsblk# Use absolute path
sudo flicker write --iso /home/user/Downloads/ubuntu.iso --device /dev/sdb
# Or relative with ~
sudo flicker write --iso ~/Downloads/ubuntu.iso --device /dev/sdbPossible causes:
- Faulty USB device
- USB disconnected during write
- Bad ISO file
Solutions:
- Try another USB device
- Verify ISO checksum
- Re-download ISO file
For more help, see docs/COMMAND_WRITE.md
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by Rufus (Windows)
- Built with Rust π¦
- Uses clap for CLI parsing
- Uses indicatif for progress bars
Flicker - Making bootable USB creation simple, fast, and safe on Linux