İşletim sistemi seçim anahtarı

İşletim sistemi seçim anahtarı

Bilgisayarda hem Linux hem Windows kurulu olması (dual boot) gerçekten çok pratik - iki işletim sisteminin avantajlarından da yararlanabiliyorsunuz. Ama bu durumda beni sürekli sinir eden bir şey var.

Linux'u açmak istediğimde işler çok basit: güç tuşuna basıyorum ve başka hiçbir şey yapmama gerek yok, sistem otomatik olarak Linux'u açıyor.

Ama Windows'u açmak istediğimde tam bir dram yaşanıyor! GRUB menüsü ekranda sadece birkaç saniye görünüyor ve ben de o kısa süre içinde klavyeye tam zamanında basmak zorundayım. Yoksa sistem otomatik olarak Linux'u açıyor. Bu gerçekten can sıkıcı bir durum."

Yani kısacası: Linux açmak kolay ve otomatik, Windows açmak için ise hızlı reflekslere ihtiyaç var!

Bu proje, Linux ve Windows dual-boot sistemlerinde hangi işletim sisteminin başlatılacağını seçmek için fiziksel bir anahtar kullanan çok yaratıcı bir donanım çözümü

Çalışma Prensibi

1. USB Mass Storage Emülasyonu

  • STM32 mikrodenetleyici, bilgisayara USB bellek olarak görünüyor
  • Gerçek depolama alanı yok, sadece sanal dosya sistemi (FAT12)
  • Anahtarın pozisyonunu içeren bir dosya (switch_position) dinamik olarak oluşturuluyor

GRUB Entegrasyonu

GRUB boot loader'ı şu adımları takip ediyor:

# Sabit filesystem ID ile cihazı arar search --no-floppy --fs-uuid --set hdswitch 55AA-6922 # Bulunursa, dinamik config dosyasını okur source ($hdswitch)/switch_position_grub.cfg # Anahtar pozisyonuna göre işletim sistemi seçer if ; then set default="0" # Linux elif ; then set default="2" # Windows fi

Donanım

  • Mikrodenetleyici: STM32F103 "Blue Pill" (USB destekli)
  • Anahtar: Basit bir toggle switch
  • Bağlantı: GPIO pin'i anahtarla ground'a bağlanıyor
  • Pull-up: Internal pull-up kullanılıyor

Yazılım Katmanları

  1. USB Descriptors: Mass storage class olarak tanımlanıyor
  2. SCSI Protokolü: libopencm3'ün built-in implementasyonu
  3. FAT12 Filesystem: Sanal dosya sistemi oluşturuluyor
  4. GRUB Script: Boot seçimi yapılıyor

Sanal Dosya Sistemi

struct VirtualFile { char* longName; struct FatDirEntry dir; void (*read) (uint8_t* output); }; static void readSwitch(uint8_t* output) { output = gpio_get(GPIOA, GPIO6) ? '1' : '0'; }

Kurulum

Donanım Kurulumu

  • STM32 board'ını USB'ye bağla
  • Toggle switch'i GPIO pin'ine bağla
  • Cihazı masanın altına monte et

Yazılım Kurulumu

  1. GitHub'dan kodu indir: github.com/stecman/hw-boot-selection
  2. libopencm3 ile derle
  3. STM32'ye yükle
  4. /etc/grub.d/00_header dosyasını düzenle
  5. update-grub komutunu çalıştır

Masa altına monte edilen bu küçük cihaz sayesinde, artık boot işlemi tamamen otomatik. Hangi işletim sistemini kullanmak istiyorsa anahtarı o pozisyona getiriyor ve bilgisayarı açıyor. GRUB menüsüyle uğraşmaya gerek kalmıyor.

Önceki Yazı dua-cli: Disk Kullanımını
dua-cli: Disk Kullanımını

Disk alanınız dolduğunda ne yapıyorsunuz? Muhtemelen du -sh * komutunu çal�...

Sonraki Yazı RingReaper
RingReaper

RingReaper, Windows'ta kernel modunda (Ring 0) çalışan ve şu amaçlarla kull...