Linux console (Türkçe)
"Linux Console" İngilizce Vikipedi makalesinden:
- Linux konsolu, Linux kernel içerisinde bulunan bir sistem konsoludur. Linux konsolu, çekirdekten ve diğer işlemlerden kullanıcıya yazılı çıktı vermeyi ve kullanıcıdan girdi almayı sağlar. Kullanıcı genellikle girdiyi bir bilgisayar klavyesi ile yapar ve çıktıyı ise bilgisayar monitöründen okur. Linux çekirdeği sanal konsolları desteklemektedir, bu konsollar mantıksal olarak ayrıdır ancak aynı klavyeye ve ekrana bağlıdırlar.
Bu makale Linux konsolunun temellerinden ve yazı tipi gibi bazı ayarların nasıl kişiselleştirilebileceğinden bahsetmektedir. Klavye ayarları Linux console/Keyboard configuration alt sayfasında ele alınmıştır. Daha fazla özellik sunan (tam Unicode yazı tipleri, modern video kartı desteği vb.) diğer konsollar için KMSCON veya diğer benzer projelere göz atın.
Konsolun Uyarlanması
Kullanıcı ile direkt olarak etkileşime geçen diğer servislere kıyasla konsol, çekirdeğin içerisine gömülü hâldedir. Bu durum, Xterm gibi kullanıcı alanında çalışan normal uygulamalar olan uçbirim öykünücülerinden farklılık göstermektedir. Konsol, Linux çekirdeğinin yayınlanan tüm sürümlerinin her zaman bir parçası olmuştur ancak zamanla bazı değişikliklere uğramıştır. Bu değişikliklerden en önemlileri çerçeve belleğinin kullanımı ve Unicode desteğidir.
Yapılan tüm iyileştirmelere rağmen eski donanımlarla uyumlu olması gerekir ve bu sebeple çizgesel uçbirim öykünücülerine kıyasla kısıtlı özelliklere sahiptir. Linux konsolu ve uçbirim öykünücüleri arasındaki ana fark Linux konsolundaki kabukların direkt olarak TTY cihazlarına (/dev/tty*
) bağlı olmasıdır. Oysaki çizgesel uçbirim öykünücülerinde kabuklar sözde-TTYlara bağlıdır (/dev/pty*
).
Ek olarak çizgesel uçbirim öykünücüleri Linux konsoluna kıyasla birçok farklı özelliğe sahip olabilir. Örneğin kullanılabilir daha fazla yazı tipi, birden fazla sekme/pencere, ikili pencere modu, yukarı kaydırma bellekleri/sliderları (kullanıcının kaydırarak değer seçmesine izin veren bileşen), farklı arkaplan renkleri veya resimleri (tercihen saydamlık) gibi birçok ekstra özelliği barındırabilir. Bu özelliklerin bazıları Tmux veya GNU Screen gibi uçbirim çoklayıcılar ile, veya ncurses gibi kütüphanelerin yardımıyla metin esaslı kullanıcı arayüzüne sahip Vim, nano ve Emacs gibi programlar ile Linux konsolunda da kullanılabilir. Tabii bu programlar Linux konsolunda kullanıldığı gibi çizgesel uçbirim öykünücülerinde de kullanılabilir.
Sanal konsollar
Konsol kullanıcıya bir dizi sanal konsol olarak sunulur. Bunlar aynı anda birkaç bağımsız uçbirimin çalıştığı izlenimini verir; her sanal konsol farklı kullanıcılarla oturum açabilir, kendi kabuğunu çalıştırabilir ve kendi yazı tipi ayarlarına sahip olabilir. Sanal konsolların her biri /dev/ttyX
aygıtını kullanır ve Alt+Fx
tuşlarına basarak bunlar arasında geçiş yapılabilir (burada x
sanal konsol numarasına eşittir ve 1'den başlayacak şekilde tüm rakamları temsil eder). /dev/console
aygıtı otomatik olarak etkin sanal konsol ile eşlenir.
Ayrıca chvt(1), openvt(1) ve deallocvt(1) rehberlerine de bakınız.
Yazı modu
Linux, PC donanımı için bir çekirdek olarak başlamıştır. Hâliyle konsol o zamanlar tüm PC'lerin desteklediği standart IBM CGA/EGA/VGA grafikleri kullanılarak geliştirilmiştir. Grafikler, 16 renkli basit bir 80x25 karakter ekran sağlayan VGA metin modunda çalışıyordu. Bu eski mod, DEC VT100 serisi gibi özel metin uçbirimlerinin özellikleri ile benzerlikler barındırır. Sistem donanımı destekliyorsa metin kipinde (vga=0 nomodeset
ile) önyükleme yapmak hâlâ mümkündür, ancak neredeyse tüm modern dağıtımlar (Arch Linux dahil) bunun yerine çerçeve belleği konsolunu kullanır.
Çerçeve belleği konsolu
Linux diğer PC dışı mimarilere taşınırken, diğer mimariler VGA uyumlu grafik adaptörleri kullanmadığından ve metin modlarını hiç desteklemeyebileceğinden daha iyi bir çözüm gerekliydi. Çerçeve belleği konsolu tüm platformlarda standart bir konsol sağlamak için uyarlanmıştır. Bu nedenle cihazın sahip olduğu grafik donanımından bağımsız olarak aynı VGA tarzı arayüzü sunar. Bu nedenle, Linux konsolu bir uçbirim öykünücü değil, kendi başına bir uçbirimdir. linux
uçbirim tipini kullanır ve VT100 ile büyük ölçüde uyumludur.
Klavye kısayolları
Klavye kısayolları | Açıklama |
---|---|
Ctrl+Alt+Del
|
Sistemi yeniden başlatır (/usr/lib/systemd/system/ctrl-alt-del.target sembolik bağlantısında (symlink) belirtildiği üzere)
|
Alt+F1 , F2 , F3 , ...
|
n'inci sanal konsola geçiş yapar (Xorg ve Wayland'de kullanılan Ctrl+Alt+Fn kısayolu ile karıştırılmamalıdır)
|
Alt+Left
|
Bir önceki sanal konsola geçiş yapar |
Alt+Right
|
Bir sonraki sanal konsola geçiş yapar |
Scroll Lock
|
Scroll Lock aktif hâldeyken girdi ve çıktılar kilitlenir. |
Ctrl+c
|
Güncel görevi öldürür |
Ctrl+d
|
Dosya sonu sinyali gönderir |
Ctrl+z
|
Güncel görevi durdurur |
Ayrıca console_codes(4) rehberine bakın.
Yazı tipleri
Linux konsolu varsayılan olarak UTF-8 kodlamasını kullanır, ancak standart VGA uyumlu çerçeve belleği kullanıldığından, konsol yazı tipleri standart 256 veya 512 glifle sınırlıdır. Yazı tipi 256'dan fazla glife sahipse, renk sayısı 16'dan 8'e düşürülür. Verilen Unicode değerine görüntülenecek doğru sembolü atamak için, genellikle unimap olarak adlandırılan özel bir çeviri haritasına ihtiyaç duyulur. Geçmişte unimap'in harici olarak yüklenmesi gerekiyordu ancak günümüzde konsol yazı tiplerinin çoğunda unimap gömülü hâlde gelmektedir.
Varsayılan olarak sanal konsol, CP437 karakter seti[1] ile çekirdekte gömülü olan yazı tipini kullanır, ancak bu kolayca değiştirilebilir. Çekirdek 15 adet yazı tipi seçeneği sunar. Bunlarndan iki tanesi resmi olarak desteklenen çekirdekler tarafından sağlanır: VGA 8x16 yazı tipi (CONFIG_FONT_8x16
) ve Terminus 16x32 yazı tipi (CONFIG_FONT_TER16x32
). Çekirdek, ekran çözünürlüğünü değerlendirir ve yazı tipini buna göre seçer. Başka bir gömülü yazı tipini kullanmak için çekirdek parametrelerine, örneğin fbcon=font:TER16x32
eklenebilir.
kbd paketi, çekirdeğin karar verdiği sanal konsol yazı tipleri ve yazı tipi eşlemelerinin üzerine yazmak için bazı araçlar sunar. Kullanılabilir yazı tipleri /usr/share/kbd/consolefonts/
dizininde sağlanmıştır; .psfu ve .psfu.gz şeklinde bitenler gömülü Unicode çeviri haritasına sahiplerdir.
Tuşeşlemler (basılan klavye tuşu ile bilgisayarda kullanılan karakter arasındaki bağlantı) /usr/share/kbd/keymaps/
dizinin altındaki dizinler içerisindedir. Ayrıntı için Linux console/Keyboard configuration makalesine bakın.
eurlatgr
kullanılabilir. Pek çok Latin/Yunan harf çeşidinin yanı sıra özel karakterler de içerir [2].Ön izleme ve geçici değişiklikler
$ showconsolefont
komutu istediğiniz bir yazı tipine ait glifleri ve harfleri tablo şeklinde gösterir.
setfont
komutu ve önüne eklediğiniz (/usr/share/kbd/consolefonts/
içerisindeki) yazı tipi ismi ile yazı tipini geçici olarak değiştirebilirsiniz, örneğin:
$ setfont lat2-16 -m 8859-2
Yazı tipi isimleri büyük-küçük harf duyarlılığına sahiptir. setfont
komutuna herhangi bir parametre eklemezseniz varsayılan yazı tipini döndürür.
Örneğin yüklü olan 8x8 küçük bir yazı tipini kullanmak için aşağıdaki komutu kullanabilirsiniz:
$ setfont -h8 /usr/share/kbd/consolefonts/drdos8x8.psfu.gz
Daha büyük bir yazı tipi için, Terminus yazı tipi (terminus-font) birçok farklı boyut sunar, örneğin ter-132b
oldukça büyüktür.
Ayrıca -d
bayrağı ile kullancağınız yazı tipinin büyüklüğünü ikiye katlayabilirsiniz. Aşağıdaki örnekte 64*64 bir yazı tipi kullanılmıştır:
$ setfont -d ter-132n
- Tüm yazı tipi değiştirme komutları, herhangi bir geri dönüş sağlamasa bile hatalı yazlımadığı sürece başarılı bir şekilde çalıştırılır.
- Terminus yazı tipi isimleri (
ter-*
)/usr/share/terminus-font/README
belgesinde açıklanmıştır.
Kalıcı değişiklikler
/etc/vconsole.conf
içerisindeki FONT
değişkeni, açılış sırasında yazı tipini tüm konsollarda ayarlamak için kullanılır. Detaylar için vconsole.conf(5) rehberine bakın.
Č, ž, đ, š veya Ł, ę, ą, ś gibi harfleri görüntüleyebilmek için lat2-16.psfu.gz
yazı tipini kullanın:
/etc/vconsole.conf
... FONT=lat2-16 FONT_MAP=8859-2
Bu, ISO/IEC 8859 karakterlerinin ikinci kısmının 16 boyutunda kullanılacağı anlamına gelir. Yazı tipi boyutunu farklı değerler kullanarak değiştirebilirsiniz (örneğin lat2-08
). 8859 spesifikasyonu tarafından belirlenen bölgeler için Wikipedia:ISO/IEC 8859#The parts of ISO/IEC 8859 sayfasına bakın.
mkinitcpio v33'ten bu yana /etc/vconsole.conf
içinde belirtilen yazı tipi, initramfs'e yazı tipini ekleyen consolefont
kancası (hook) aracılığıyla varsayılan olarak erken kullanıcı alanı sırasında otomatik olarak yüklenir. Daha fazla bilgi için Mkinitcpio#HOOKS bölümüne bakın.
Ayrıca /etc/vconsole.conf
dosyasını değiştirdikten sonra systemd-vconsole-setup.service
servisini yeniden başlatmanız gerekebilir.
Eğer yazı tipi açılış sırasında değişmiyorsa veya sadece belli bir süreliğine değişiyorsa, yüksek ihtimalle ekran kartı sürücüsü başlatıldığında ve konsol çerçeve belleğine geçiş yapıldığında sıfırlanıyordur. Varsayılan olarak çekirdek kaynak kodunda bulunan sürücüler erkenden başlatılırlar. NVIDIA kullanıcıları, ekran kartı sürücülerini /etc/vconsole.conf
'dan önce başlatabilmek için NVIDIA#Early loading makalesine bakmalıdırlar.
İmleç görünümü
Bu konunun dokümantasyonu yetersizdir. Aşağıdaki makaleleri okumanız tavsiye edilir:
- Software cursor for VGA
- Cursor Appearance in the Linux Console
- Disable Cursor Blinking on Linux Console
Donanım | Yazılım | |
---|---|---|
Şekil |
|
|
Yanıp sönme |
|
|
Renk |
|
|
Konsol imleci Device Attributes (DA) kontrol işlevi ile ayarlanabilir. Parametreler dizisine tek tırnak işareti ile başlanması gerekir (console_codes(4) tam aksini söylese de).
Aşağıdaki örnekte tam blok halinde, yeşil, altında siyah semboller barındıran ve yanıp sönmeyen bir imleç verilmiştir:
$ printf "\x1b\x5b?16;$((8+4+2+1));$((32+0+8+4+2+1))\x63"
Yukarıdakinin aynısı, onaltılık kodlar (hex codes) yerine sekizli (sekizli sayı sistemindeki ile aynı "sekizli") ve karakterler ile de ifade edilebilir:
$ printf '\033[?16;15;47c'
Bu değişiklikler çekirdek parametreleri ile kalıcı yapılandırmalar olarak uygulanabilir:
vt.cur_default=0x2f0f10
İmleç boyutu
İlk parametre, 16 (çekirdek parametresinde en sağdaki iki hex hanesi, yani 10'dur) koduna sahip olup ismi cursor size yani imleç boyutu olmasına rağmen "yazılımsal imleci kullan" anlamına gelir.
Eğer donanımsal imleç şeklini değiştirmek istiyorsanız karşılık gelen sayıları kullanın (0'dan 6'ya kadar, yukarıdaki tabloya göz atın).
Bit kontrol karakterini değiştirmek
İkincisi ise tam Türkçe karşılığı olmayan ancak bit kontrol karakterini değiştirmek şeklinde çevirebileceğimiz toggle mask parametresidir. Bu parametre bir rengin ilgili bitlerini çevirmeye yarar.
Arka plan
(imleç bloku) |
Ön plan
(imlecin altındaki sembol) |
|||||||
---|---|---|---|---|---|---|---|---|
Parlak (vurgu)
veya yanıp sönen |
Kırmızı | Yeşil | Mavi |
Parlak (vurgu)
veya yanıp sönen |
Kırmızı | Yeşil | Mavi | |
Ondalıklar | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Onaltılıklar | 80 | 40 | 20 | 10 | 8 | 4 | 2 | 1 |
Örneğimizde ikinci parametre 15'tir (çekirdek parametresindeki orta hex değeri, yani 0f'dir), yani tüm dört ön plan (sembol) biti çevrilir. Burada en önemli kural: bit çevirme işlemi (ikinci parametre), bit ayarlamadan (üçüncü parametre) sonra yapılır.
Bit kontrol karakterini ayarlama
Üçüncü parametre, tam Türkçe karşılığı olmayan ancak bit kontrol karakterini ayarlamak şeklinde çevirebileceğimiz set mask parametresidir. Bu parametre ilgili karakter niteliği bitlerini ayarlamaya yarar. Örneğimizde 47 (çekirdek parametresinde en soldaki iki hex hanesi, yani 2f'dir) kullanılır, bu şu anlamlara gelir:
- (32) imleç bloğu için saf yeşil rengini kullan
- (8+4+2+1) tüm dört ön plan (sembol rengi) bitini ayarla. Bu bitler ikinci parametre ile çevrilecektir, böylece imlecin altındaki sembolün rengi siyah olacaktır (
0000
).
HiDPI
HiDPI#Linux console (tty) makalesine bakın.
Konsoldan gelen sesler
PC speaker#Beep makalesine bakın.