Dari dokumentasi Kernel Linux di Kernel.org:
/dev/tty Current TTY device
/dev/console System console
/dev/tty0 Current virtual console
Di masa lalu yang indah /dev/console
adalah konsol System Administrator. Dan TTY adalah perangkat serial pengguna yang terhubung ke server.
Sekarang /dev/console
dan /dev/tty0
mewakili tampilan saat ini dan biasanya sama. Anda dapat menimpanya misalnya dengan menambahkan console=ttyS0
ke grub.conf
. Setelah itu /dev/tty0
Anda adalah monitor dan /dev/console
adalah /dev/ttyS0
.
Latihan untuk menunjukkan perbedaan antara /dev/tty
dan /dev/tty0
:
Beralih ke konsol ke-2 dengan menekan Ctrl +Alt +F2 . Masuk sebagai root
. Ketik sleep 5; echo tty0 > /dev/tty0
. Tekan Enter dan beralih ke konsol ke-3 dengan menekan Alt +F3 .Sekarang beralih kembali ke konsol ke-2 dengan menekan Alt +F2 . Ketik sleep 5; echo tty > /dev/tty
, tekan Enter dan beralih ke konsol ke-3.
Anda dapat melihat bahwa tty
adalah konsol tempat proses dimulai, dan tty0
adalah konsol yang selalu terkini.
-
/dev/console
adalah seperangkat perangkat virtual yang dapat diatur sebagai parameter saat boot. Itu mungkin dialihkan ke perangkat serial atau konsol virtual dan secara default mengarah ke/dev/tty0
. Saat beberapaconsole=
opsi diteruskan ke kernel, output konsol akan masuk ke lebih dari satu perangkat; -
/dev/tty[0-N]
(N
adalah nomor TTY yang diatribusikan tertinggi, mis. 63) adalah salah satu konsol virtual tempat Anda beralih dengan kontrol -alt -F1 dan seterusnya; -
/dev/tty0
juga secara default adalah konsol virtual; -
/dev/tty
semacam alias ke konsol (perangkat fisik, virtual atau semu, jika ada) yang terkait dengan proses yang membukanya. Tidak seperti perangkat lain, Anda tidak memerlukan hak akses root untuk menulisnya. Perhatikan juga bahwa proses seperti yang diluncurkan olehcron
dan proses batch serupa tidak memiliki/dev/tty
yang dapat digunakan , karena tidak terkait dengan apa pun. Proses ini memiliki?
diTTY
kolomps -ef
keluaran.
/dev/console
https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/serial-console.rst
Di Linux, konsol kernel dapat dikonfigurasi menggunakan console=
opsi boot. Kode kernel yang memanggil printk()
dapat menulis pesan untuk itu, mis. ketika perangkat dimuat atau terjadi kesalahan. Pesan-pesan ini juga di-buffer oleh kernel. (Lihat juga dmesg
). Saat perangkat konsol ditemukan dan dimulai, perangkat tersebut menerima semua pesan yang di-buffer sebelumnya.
Anda dapat melewati console=
beberapa kali untuk mengonfigurasi banyak konsol, dan pesan akan ditulis ke semuanya. Tampaknya Anda hanya dapat memilih satu konsol dari setiap "tipe":Anda tidak dapat menggunakan keduanya console=ttyS0
dan console=ttyS1
.
Dokumentasi kernel menentukan /dev/console
sebagai perangkat karakter bernomor (5,1)
. Membuka perangkat karakter ini akan membuka konsol "utama", yang merupakan tty terakhir dalam daftar konsol. Proses non-kernel pertama, disebut init
atau "PID 1", dimulai dengan /dev/console
terhubung ke keluaran standar, kesalahan standar, dan masukan standar.
Jika tidak ada konsol yang tty, buka /dev/console
mengembalikan kesalahan ENODEV
("Tidak ada perangkat seperti itu"). Kernel akan mencetak catat pesan, dan mulai init
tanpa memedulikan. Untuk contoh konsol kernel yang bukan perangkat tty, lihat netconsole
, atau printer baris konsol favorit saya.
Anda juga dapat melihat daftar konsol tty dengan membaca /sys/class/tty/console/active
. dokumentasi systemd menunjukkan bahwa pertama perangkat yang ditampilkan adalah konsol utama. Daftar ini sebenarnya dalam urutan terbalik dari baris perintah kernel. Dokumentasi kernel saat ini salah menyatakan bahwa perangkat terakhir yang ditampilkan adalah konsol utama atau "aktif". Untuk beberapa alasan, file ini dapat disurvei untuk perubahan (seandainya perangkat konsol dihapus?).
Di dalam systemd-nspawn
wadah, standar /dev/console
file diganti dengan perangkat pseudo-terminal (PTY). Ini akan digambarkan sebagai perangkat terminal virtual. Mereka dibuat secara dinamis dan juga digunakan untuk mengimplementasikan emulator terminal grafis seperti Terminal GNOME, dan untuk akses jarak jauh seperti ssh
.
/dev/tty0
Node perangkat Linux TTY tty1
melalui tty63
adalah terminal virtual. Mereka juga disebut sebagai VT, atau sebagai konsol virtual. Mereka mensimulasikan beberapa konsol di atas driver perangkat konsol fisik. Hanya satu konsol virtual yang ditampilkan dan dikontrol dalam satu waktu. Terminal aktif dapat dialihkan, mis. menggunakan chvt
, atau Ctrl+Alt+F1 melalui berapa pun tombol fungsi yang Anda miliki.
Anda juga dapat membaca dan menulis ke VT saat ini menggunakan /dev/tty0
. tty0
adalah konsol kernel biasa, mis. jika Anda tidak memilih salah satu secara eksplisit. "Sistem pertama-tama mencari kartu VGA [yang menjalankan VT] dan kemudian mencari port serial". Anda juga dapat menyetel konsol ke VT tertentu, mis. console=tty1
.
"Jika Anda tidak memiliki kartu VGA di sistem Anda, port serial pertama secara otomatis akan menjadi konsol." Sebuah "konsol serial" seperti ttyS0
mungkin merupakan alternatif yang paling umum untuk tty0
. Tidak mungkin menggunakan sistem VT di atas konsol serial.
/dev/tty
/dev/tty
adalah salah satu dari tiga file perangkat standar yang ditentukan oleh POSIX (/dev/
adalah salah satu dari tiga nama direktori yang ditentukan oleh POSIX). Membukanya sama dengan membuka terminal pengendali dari proses saat ini. Terminal pengontrol diatur saat proses pertama kali membuka terminal, setidaknya di Linux. Misalnya, di init
, itu akan merujuk ke /dev/console
.
Melepaskan dari terminal pengontrol adalah salah satu langkah yang secara tradisional diperlukan untuk memulai proses latar belakang, misalnya daemon pencatatan sistem. Langkah-langkah untuk menjadi proses latar belakang sangat rumit, tetapi untuk lebih spesifik, langkah yang terlepas dari terminal pengontrol adalah pemanggilan sistem setid. Dalam sistem yang lebih modern, sistem init mis. systemd memulai layanan tanpa terminal pengontrol apa pun sejak awal.