Information Files and Device Files
lspci
, lsusb
ve lsmod
komutlarının işletim sistemi tarafından saklanan donanım bilgilerini okumak için kullanılan ön uçlar olarak hareket eder. Bu tür bilgiler, /proc ve /sys dizinlerindeki özel dosyalarda saklanmaktadır. /proc dizini, çalışan işlemler ve donanım kaynakları ile ilgili bilgilere sahip dosyalar içerir. Örneğin, /proc/cpuinfo
dosyası işlemcinin modeli ve özellikleri hakkında bilgi içerirken, /proc/meminfo
dosyası sistem belleği (RAM) hakkında bilgi sağlar.
/sys ise sistem ayarlarına ve cihazlarla ilgili bilgilere erişim sağlar. /sys
dosya sistemi, Linux sürücü modeline dayanan ve donanım ve çekirdek arasındaki iletişimi sağlayan sysfs
dosya sistemiyle ilişkilidir. Bu dosya sistemi, özellikle donanım ve sürücülerle ilgili çekirdek parametrelerine ve ayarlarına erişmek için kullanılır. Örneğin, /sys/class
dizini, sistemdeki farklı cihaz sınıflarına ilişkin bilgileri içerir ve /sys/block
dizini, blok aygıtları (diskler, USB sürücüler vb.) hakkında bilgi içerir.
Standart bir Linux sistemindeki cihazlarla doğrudan ilgili olan diğer bir dizin /dev’dir. /dev içindeki her dosya bir sistem aygıtıyla, özellikle de depolama aygıtlarıyla ilişkilidir. Örneğin eski bir IDE sabit diski, anakartın ilk IDE kanalına bağlandığında /dev/hda dosyasıyla temsil edilir. Bu diskteki her bölüm, bulunan son bölüme kadar /dev/hda1, /dev/hda2 ile tanımlanacaktır.
Çıkarılabilir aygıtlar, /dev’de karşılık gelen aygıtları oluşturan udev alt sistemi tarafından işlenir. Linux çekirdeği, donanım algılama olayını yakalar ve bunu udev sürecine aktarır; udev daha sonra aygıtı tanımlar ve önceden tanımlanmış kuralları kullanarak /dev’de ilgili dosyaları dinamik olarak oluşturur.
Mevcut Linux dağıtımlarında udev, makinenin açılması sırasında halihazırda mevcut olan cihazların (coldplug detection) ve sistem çalışırken tanımlanan cihazların (hotplug detection) tanımlanmasından ve yapılandırılmasından sorumludur. Udev, /sys içine monte edilmiş donanımla ilgili bilgiler için sahte dosya sistemi olan SysFS’ye güvenir.
Coldplug ve Hotplug Detection Nedir ?
“Coldplug detection” veya “soğuk takma algılama”, bir bilgisayar veya cihazın başlangıç sırasında donanımın otomatik olarak algılanması ve tanımlanması sürecidir. Bu süreç, donanımın sisteme ilk kez bağlandığı veya sistemin yeniden başlatıldığı durumlarda gerçekleşir.Linux gibi işletim sistemlerinde, soğuk takma algılaması genellikle çekirdek ve donanım sürücüleri tarafından yönetilir. Yeniden başlatma veya güç açma işlemi sırasında, çekirdek donanımı otomatik olarak algılar, gerekli sürücüleri yükler ve donanımı sistemde tanımlar. Bu süreç, cihazların tak-çalıştır (plug-and-play) özelliğini desteklemesine ve kullanıcıların donanımı manuel olarak yapılandırmadan veya tanıtmadan kullanabilmesine olanak tanır.
“Hotplug detection” veya “sıcak takma algılama”, bir bilgisayar veya cihazın çalışır durumdayken donanımın otomatik olarak algılanması ve tanımlanması sürecidir. Bu süreç, cihazın güç kaynağına veya sisteme takılması sırasında gerçekleşir, ancak sistem durmaz veya yeniden başlatma işlemi gerektirmez. “Sıcak takma”, donanımın sisteme bağlanıp çıkarılabilir olması anlamına gelir. Örneğin, USB flash sürücüler, harici sabit diskler, klavyeler ve fareler gibi cihazlar sıcak takma özelliğine sahiptir. Bu tür cihazlar, cihazın çalışma durumundayken (hot) sisteme takılıp çıkarılabilir ve sistem tarafından otomatik olarak algılanabilir.
SysFS Nedir ?
sysfs
, Linux kernelinde yer alan ve sistemdeki donanım ve sürücüler hakkında bilgi sağlayan bir sanal dosya sistemi (virtual file system)dir. /sys
dizini altında bulunur ve genellikle sysfs
olarak adlandırılır.
sysfs
, sürücüler ve donanım aygıtları hakkında ayrıntılı bilgileri içeren bir hiyerarşik yapı sunar. Bu bilgiler, işletim sistemi tarafından yönetilen donanım bileşenlerinin özelliklerini, durumlarını ve yapılandırma seçeneklerini içerir. Örneğin, CPU, bellek, diskler, USB aygıtları ve ağ arayüzleri gibi çeşitli donanım bileşenlerinin bilgilerini içerir. Bu sanal dosya sistemi, çekirdek tarafından otomatik olarak oluşturulur ve sürücüler tarafından sağlanan bilgilerle doldurulur. sysfs
, çoğunlukla sistem yöneticileri, geliştiriciler ve otomatik yapılandırma araçları tarafından kullanılır. Örneğin, udev
gibi sistem bileşenleri, donanım aygıtlarını tanımlamak ve yapılandırmak için sysfs
‘i kullanır.Bu dosya sistemi, /proc
dosya sistemi gibi sistem durumu bilgilerini içermez, ancak sadece donanım ve sürücü bilgilerini sağlar. Bu nedenle, /sys
dizini genellikle donanım ve sürücü yönetimi için kullanılırken, /proc
dizini sistem durumu ve işlem bilgilerini içeren dinamik dosyaları sağlar.
Yeni cihazlar algılandıkça udev, /etc/udev/rules.d/ dizininde saklanan önceden tanımlanmış kurallarda eşleşen bir kural arar. En önemli kurallar dağıtım tarafından sağlanır, ancak belirli durumlar için yenileri eklenebilir
Storage Devices
Linux’ta depolama aygıtları genel olarak blok aygıtlar olarak adlandırılır, çünkü veriler bu aygıtlara farklı boyut ve konumlara sahip arabelleğe alınmış veri blokları halinde okunur. Her blok aygıtı /dev dizinindeki bir dosyayla tanımlanır ve dosyanın adı aygıt türüne (IDE, SATA, SCSI, vb.) ve bölümlerine bağlıdır.
Örneğin CD/DVD ve disket aygıtlarının adları buna göre /dev olarak verilecektir: ikinci IDE kanalına bağlı bir CD/DVD sürücüsü /dev/hdc olarak tanımlanır.
Linux çekirdeği sürüm 2.4’ten itibaren, çoğu depolama aygıtı artık donanım türlerine bakılmaksızın SCSI aygıtları gibi tanımlanıyor. IDE, SSD ve USB blok aygıtlarına sd ön eki eklenir.
IDE diskler için, sd öneki kullanılır, ancak sürücünün birincil veya ikincil olmasına bağlı olarak üçüncü harf seçilir. (birinci IDE kanalında, birincil sürücü sda ve ikincil sürücü sdb olacaktır). Bölümler sayısal olarak listelenir. Örneğin: /dev/sda1, /dev/sda2.
Bu kuralın istisnası, bellek kartları (SD kartlar) ve NVMe cihazlarıdır. SD kartlar için, birinci tanımlanan cihazın ilk ve ikinci bölümleri için /dev/mmcblk0p1, /dev/mmcblk0p2 yolu kullanılır. ikinci tanımlanan cihazın ilk ve ikinci bölümleri için /dev/mmcblk1p1, /dev/mmcblk1p2 yolları kullanılır. NVMe cihazları, /dev/nvme0n1p1 ve /dev/nvme0n1p2 gibi bir önekle gelir.
Guided Exercises
Soru 1: Bir işletim sistemi, sisteme ikinci bir SATA diski ekledikten sonra başlatılamıyorsa, tüm parçaların kusurlu olmadığını bilerek, bu hatanın olası nedeni ne olabilir?
Cevap 1: Önyükleme sırası, aksi takdirde BIOS önyükleyiciyi çalıştıramayabilir, BIOS yapılandırılmalıdır.
Soru 2: Yeni satın aldığınız masaüstü bilgisayarınızın PCI veri yoluna bağlı olan harici video kartının üretici tarafından tanıtılan kart olduğundan emin olmak istiyorsunuz, ancak bilgisayar kasasını açmak garantiyi geçersiz kılabilir. İşletim sistemi tarafından algılandığı şekliyle video kartının detaylarını listelemek için hangi komut kullanılabilir?
Cevap 2: İşletim sistemi tarafından algılanan donanım bilgilerini görüntülemek için “lspci” komutu kullanılabilir. Bu komut, PCI veri yoluna bağlı cihazların listesini sağlar ve bu listede video kartı da dahil olmak üzere tüm PCI cihazları hakkında bilgi sunar. Bu şekilde, harici video kartının modeli ve diğer detayları hakkında bilgi edinebilirsiniz, kasayı açmadan bilgisayarınızın garantisini bozmamış olursunuz.
Soru 3: Aşağıda lspci komutunun çıktısı verilmiştir:
03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt]
(rev 05)
Belirtilen cihaz için kullanılan kernel modülünü belirlemek için hangi komutu kullanmalısınız?
Cevap 3: lspci -s 03:00.0 -v
Soru 4: Bir sistem yöneticisi, sistemi yeniden başlatmadan önce Bluetooth kernel modülü için farklı parametreler denemek istiyor. Ancak, modprobe -r bluetooth komutuyla modülü kaldırırken herhangi bir girişim aşağıdaki hatayla sonuçlanıyor:
modprobe: FATAL: Module bluetooth is in use.
Bu hata neden kaynaklanır ?
Cevap 4: Bluetooth modülü çalışan bir işlem tarafından kullanılıyor.
Soru 5: Üretim ortamlarında eski makinelerin bulunması nadir karşılaşılan bir durum değildir. Bu eski makinelerin bazı özelliklerine özel dikkat göstermek gereklidir. Örneğin, bazı x86 sunucuları eski BIOS yazılım sürümleriyle, klavye algılanmadığında başlatılmayabilir. Bu özel sorunu nasıl önleyebiliriz?
Cevap 5: BIOS yapılandırma programında, klavye bulunamadığında bilgisayarın kilitlenmesini devre dışı bırakma seçeneği bulunmaktadır.
Soru 6: Linux çekirdeği etrafında inşa edilen işletim sistemleri, x86 dışındaki geniş bir bilgisayar mimarisi için de mevcuttur, örneğin ARM mimarisine dayalı tek kartlı bilgisayarlarda olduğu gibi. Dikkatli bir kullanıcı, Raspberry Pi gibi bu tür makinelerde lspci komutunun bulunmadığını fark edecektir. Bu eksikliği haklı çıkaran farklılık nedir?
Cevap 6: Raspberry Pi gibi ARM tabanlı bir bilgisayarın çoğundan farklı olarak, bir PCI veri yolu yoktur, bu nedenle lspci komutu işe yaramaz.
Soru 7: Birçok router’ın bir USB bağlantı noktası bulunur ve bu sayede bir USB sabit disk gibi harici bir cihaz bağlanabilir. Linux tabanlı bir işletim sistemi kullandıkları için, varsayalım ki yönlendiricide başka bir geleneksel blok cihazı yok, harici bir USB sabit disk /dev/ dizininde nasıl adlandırılır?
Cevap 7: Modern Linux çekirdekleri, USB sabit diskleri SATA cihazları olarak tanımlar, bu nedenle sisteminde başka bir geleneksel blok cihazı olmadığı için karşılık gelen dosya /dev/sda olacaktır.
Soru 8: 2018’de, Meltdown olarak bilinen donanım açığı keşfedildi. Bu, birçok mimarinin neredeyse tüm işlemcilerini etkiler. Linux çekirdeğinin son sürümleri, mevcut sistemin bu açığa karşı savunmasız olup olmadığını bilgilendirebilir. Bu bilgi nasıl elde edilir?
Cevap 8: /proc/cpuinfo dosyasında, ilgili CPU için bilinen hataları gösteren bir satır bulunur,
örneğin bugs: cpu_meltdown.
Kaynak