Tại sao vẫn cần Dual Boot năm 2026?
Mình dùng Fedora làm máy development chính đã 2 năm và khá hài lòng với tốc độ cập nhật package — kernel mới, toolchain mới đều có sớm hơn Ubuntu vài tháng. Nhưng thực tế vẫn có những lúc phải boot vào Windows 11: demo với khách hàng dùng Microsoft Teams, test giao diện trên Edge, hay Adobe Premiere khi cần xuất video gấp. Virtual machine giải quyết được phần lớn, nhưng không phải tất cả — GPU passthrough vẫn phức tạp, và một số phần mềm doanh nghiệp phát hiện môi trường ảo hóa rồi từ chối chạy.
Cái khó của Dual Boot năm 2025–2026 không nằm ở bước cài đặt. Ba vấn đề thực tế mà mình đã gặp là: Secure Boot trên Windows 11 mặc định bật và hay gây conflict, GRUB2 bị ghi đè sau mỗi Windows Feature Update, và đồng hồ hệ thống bị lệch giữa hai OS. Bài này đi thẳng vào đúng những điểm đó.
Chuẩn bị trước khi cài đặt
Thứ tự cài đặt: Windows trước, Fedora sau
Đây là quy tắc không thay đổi. Windows installer ghi đè toàn bộ EFI System Partition và không nhận diện OS khác. Cài Windows 11 trước, Fedora sau — GRUB2 sẽ tự phát hiện Windows và thêm vào boot menu. Làm ngược lại, Windows sẽ xóa GRUB không thương tiếc.
Kiểm tra BIOS mode và Secure Boot
Trên Windows, mở msinfo32 và xác nhận:
- BIOS Mode: phải là
UEFI(không phải Legacy) - Secure Boot State: On hoặc Off đều được
Fedora 39+ hỗ trợ Secure Boot natively qua shim loader và MOK (Machine Owner Key), vì vậy không cần tắt Secure Boot. Mình đã giữ Secure Boot bật suốt quá trình cài trên máy ThinkPad và không gặp vấn đề gì.
Tạo vùng trống cho Fedora từ Windows
Mở Disk Management (diskmgmt.msc), chuột phải vào ổ C:\ → Shrink Volume. Dành tối thiểu 50GB cho Fedora (mình để 100GB để chứa Docker images và project code).
Vùng trống sẽ hiển thị là Unallocated — để nguyên, Fedora Anaconda installer sẽ tự xử lý. Cũng cần xác nhận EFI System Partition đã tồn tại (thường là phân vùng ~100–500MB, FAT32). Nếu đã có, Fedora dùng chung — không tạo mới.
Cài đặt Fedora vào hệ thống đã có Windows 11
Tạo USB boot
Download Fedora Workstation ISO từ trang chính thức. Trên Windows dùng Fedora Media Writer (khuyến nghị) hoặc Rufus ở chế độ GPT/UEFI. Trên Linux:
sudo dd if=Fedora-Workstation-Live-x86_64-40-1.14.iso \
of=/dev/sdX bs=4M status=progress oflag=sync
# Thay /dev/sdX bằng đúng device USB — kiểm tra bằng lsblk trước
Phân vùng với Anaconda Installer
Boot từ USB, chọn Install to Hard Drive. Tại màn hình Installation Destination:
- Chọn ổ cứng chứa Windows
- Chọn Custom storage configuration → Done
Tạo các mount point trên vùng Unallocated:
/boot/efi— chọn phân vùng EFI đã có sẵn, chỉ mount, không format lại (format sẽ xóa boot entry Windows)/boot— 1GB, ext4/— phần còn lại, Btrfs (mặc định Fedora, có snapshot rollback)- swap — tùy chọn; Fedora mặc định dùng zram nếu bỏ qua
Xử lý Secure Boot — MOK Enrollment
Sau khi cài xong và khởi động lần đầu, nếu Secure Boot đang bật, màn hình MOK Management (nền xanh lá, trông giống BIOS cũ) sẽ hiện ra. Đây là bình thường — đừng tắt máy.
Chọn Enroll MOK → Continue → nhập password đã tạo lúc cài → Reboot. Bước này đăng ký key của shim loader vào UEFI firmware, cho phép Fedora boot với Secure Boot bật.
Cấu hình GRUB2 và UEFI
Kiểm tra boot entry trong UEFI
sudo efibootmgr -v
# Output mẫu:
# BootCurrent: 0000
# BootOrder: 0000,0001
# Boot0000* fedora HD(1,GPT,...)/File(\EFI\fedora\shimx64.efi)
# Boot0001* Windows Boot Manager HD(1,GPT,...)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
Fedora nên là entry đầu tiên trong BootOrder. Nếu không, sửa lại:
sudo efibootmgr --bootorder 0000,0001
Cấu hình timeout và OS mặc định
sudo nano /etc/default/grub
Chỉnh các dòng sau:
GRUB_TIMEOUT=10 # Thời gian chờ tính bằng giây
GRUB_DEFAULT=saved # Nhớ lựa chọn lần trước
GRUB_SAVEDEFAULT=true # Lưu lựa chọn thành default
Rebuild grub config:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Nếu muốn Windows là OS mặc định:
# Xem danh sách menu entries kèm index
awk -F\' '/menuentry / {print i++, $2}' /boot/grub2/grub.cfg
# Đặt Windows làm default (thay số index tương ứng)
sudo grub2-set-default 2
Khôi phục GRUB2 sau khi Windows Update ghi đè
Windows Feature Update đôi khi reset BootOrder về Windows Boot Manager. Dấu hiệu: máy boot thẳng vào Windows, không còn thấy GRUB menu. Boot từ USB Fedora Live, chọn Try Fedora:
# Xác định phân vùng root Fedora
lsblk -f
# Mount hệ thống (thay sdaX, sdaY, sda1 cho đúng)
sudo mount /dev/sdaX /mnt
sudo mount /dev/sdaY /mnt/boot
sudo mount /dev/sda1 /mnt/boot/efi
# Bind mount các pseudo-filesystem
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
# Chroot và cài lại GRUB2
sudo chroot /mnt
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=fedora
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
Reboot — GRUB menu sẽ hiện lại với cả hai OS. Mình đã phải làm thao tác này hai lần trong năm đầu; từ khi có thói quen kiểm tra BootOrder sau mỗi Windows update thì không bị bất ngờ nữa.
Kiểm tra và Monitoring sau cài đặt
Sửa lệch đồng hồ giữa Windows và Linux
Đây là vấn đề mình gặp nhiều nhất: sau khi dùng Windows rồi boot vào Fedora, đồng hồ lệch 9 tiếng (UTC+9 ở Nhật). Nguyên nhân: Linux lưu hardware clock theo UTC, Windows lưu theo local time.
Cách xử lý: bảo Windows dùng UTC. Chạy trong Command Prompt (Administrator):
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
Trên Fedora:
sudo timedatectl set-local-rtc 0
sudo timedatectl set-ntp true
timedatectl status
Xác nhận Secure Boot vẫn hoạt động
# Kiểm tra trạng thái
mokutil --sb-state
# Output mong đợi: SecureBoot enabled
# Kiểm tra MOK key đã enroll
mokutil --list-enrolled | grep -A2 "Subject:"
Backup boot configuration và script kiểm tra tự động
# Backup EFI entries và grub config
sudo efibootmgr -v > ~/efi-backup-$(date +%Y%m%d).txt
sudo cp /boot/grub2/grub.cfg ~/grub-backup-$(date +%Y%m%d).cfg
# Script kiểm tra GRUB vẫn là default boot entry
cat > ~/check-grub.sh << 'EOF'
#!/bin/bash
FEDORA_ENTRY=$(efibootmgr | grep -i fedora | awk '{print $1}' | tr -d 'Boot*')
BOOT_ORDER=$(efibootmgr | grep BootOrder | awk -F: '{print $2}' | awk '{print $1}')
if [ "$BOOT_ORDER" != "$FEDORA_ENTRY" ]; then
echo "WARN: Fedora không phải default boot entry, đang sửa..."
sudo efibootmgr --bootorder ${FEDORA_ENTRY},$(efibootmgr | grep BootOrder | awk -F: '{print $2}' | sed "s/ ${FEDORA_ENTRY}//g" | tr -d ' ')
fi
EOF
chmod +x ~/check-grub.sh
Mount ổ Windows từ Fedora để chia sẻ file
# Cài ntfs-3g nếu chưa có
sudo dnf install ntfs-3g
# Mount thử ổ C:\ (thay /dev/sdaX)
sudo mount -t ntfs-3g /dev/sdaX /mnt/windows
ls /mnt/windows/Users/
Nếu Windows không tắt đúng cách (Fast Startup còn bật), ntfs-3g sẽ mount read-only. Giải pháp: vào Windows → Power Options → bỏ chọn Turn on fast startup. Hibernate thì tắt bằng powercfg /h off trong CMD Administrator.
Sau gần 2 năm dùng setup này, mình nhận ra Dual Boot trên UEFI ổn định hơn nhiều so với hồi cài Legacy BIOS. Điểm cần chú ý nhất là sau mỗi Windows major update — mở terminal kiểm tra efibootmgr trước khi restart. Mất 30 giây nhưng tránh được cả buổi ngồi chroot phục hồi.

