Chuyển qua chế độ console linux

Nội dung chính Show

  • Tổng quan
  • Mục đích
  • Virtual console
  • Text mode console
  • Linux framebuffer console
  • Linux serial port console
  • Các ký tự điều khiển [control character]
  • Danh sách các mục trong /dev/ liên quan đến console

Kiến trúc đơn giản hóa của Linux kernel

Framebuffer console hiển thị quá trình boot Knoppix. Sự xuất hiện hình ảnh chim cánh cụt cho thấy đây là framebuffer console, trái ngược với console trong chế độ text

Tổng quan

Linux console là 1 system console được tích hợp vào kernel [system console là 1 thiết bị nhận tất cả kernel messages/warning]. Linux console cung cấp 1 cách để kernel và các processes khác gửi text output đến user và nhận text input từ user. User thường nhập text bằng bàn phím và đọc text từ màn hình. Linux kernel hỗ trợ virtual console được tách biệt về mặc logic nhưng về vật lý thì đều cùng truy cập đến cùng 1 keyboard và màn hình.

Linux console và linux virtual console được cài đặt bởi VT subsystem của Linux kernel và không dựa vào bất kỳ phần mềm user space nào. Điều này là TRÁI ngược với trình giả lập terminal [terminal emulator] là 1 process của user space để giả lập 1 terminal và thường được sử dụng trong môi trường GUI

Linux console là 1 trong những tính năng đầu tiên của kernel được viết, có 2 cài đặt là framebuffertextmode:

  • Framebuffer: được cài đặt mặc định trong các Linux distros hiện đại và cùng với kernel mode setting, nó cung cấp hỗ trợ ở cấp kernel cho việc hiển thị phần cứng và các tính năng như hiển thị đồ họa khi khởi động hệ thống.
  • Text mode: đã từng được sử dụng tong các hệ thống tương thích PC với card đồ họa CGA, EGA, MDA và VGA

Linux console sử dụng bitmap có kích thước cố định, font monospace, thường mặc định là 8x16 pixel cho mỗi ký tự.

Linux console là 1 tính năng kernel tùy chọn và các hệ thống nhúng embedded không kích hoạt nó. Các hệ thống này thường cung cấp 1 UI thay thế [vd web base] hoặc boot ngay lập tức vào GUI.

Mục đích

Linux console cung cấp 1 cách để kernel và các process khác xuất output các messages dạng text ra cho user và nhận các input dạng text từ user. Trong Linux, nhiều thiết bị có thể được sử dụng như là 1 system console: virtual terminal, serial port, USB serial port, VGA trong text mode, framebuffer.

Một số Linux system hiện đại đã từ bỏ [deprecated] input và output dạng text dựa trên kernel, thay vào đó sẽ hiển thị 1 logo đồ họa hoặc 1 thanh tiến trình [progesss bar] khi khởi động hệ thống, sau đó khởi động thẳng vào GUI.

Trong quá trình khởi động kernel, console thường được sử dụng để hiển thị boot log của kernel. Boot log bao gồm các thông tin về các phần cứng đã được phát hiện và cập nhật trạng thái của tiến trình boot. Tại thời điểm này, kernel là phần mềm duy nhất đang chạy nên việc log thông qua user space [vd syslog] là không khả thi. Vì vậy, console cung cấp 1 nơi tiện lợi để xuất thông tin output này. Khi kernel đã hoàn thành việc booting, nó sẽ chạy init process [nó cũng gửi ouput ra console] để quản lý việc booting phần còn lại của hệ thống bao gồm việc khởi động bất kỳ background daemon nào.

Sau khi tiến trình boot của init hoàn thành, console sẽ được sử dụng để multiplex [dồn/ghép] nhiều virtual terminal [có thể truy cập bằng cách nhấn phím Ctrl-Alt-F1, Ctrl-Alt-F2 …, Ctrl-Alt-LeftArrow, Ctrl-Alt-RightArrow hoặc dùng lệnh/hàm chvt]. Trên mỗi virtual terminal, 1 process tên là getty sẽ được chạy, process getty này sẽ chạy /bin/login để xác thực user. Sau khi xác thực, 1 command shell sẽ được chạy. Virtual terminal [là console] được hỗ trợ ở cấp độ kernel.

Virtual console

Bài đầy đủ: Virtual console

Virtual console cho phép lưu trữ nhiều text buffer, cho phép nhiều chương trình console khác nhau chạy đồng thời nhưng tương tác với user trong các ngữ cảnh khác nhau. Từ góc độ user, điều này tạo ra ấn tượng có nhiều console độc lập nhau. Mỗi virtual console có các ký tự riêng và keyboard layout riêng. Linux 2.6 giới thiệu khả năng load nhiều font khác nhau cho mỗi virtual console

Text mode console

Text mode [chế độ văn bản] được sử dụng trong PC với các CGA/EGA/MDA/VGA video card cài đặt chế độ hiển thị video dạng text. Trong text mode, kernel sẽ gửi chuỗi [array] ký tự 2D đến video card, sau đó video card chuyển đổi các ký tự thành pixel để hiển thị.

Linux console có khả năng hỗ trợ bất kỳ card VGA text mode nào nhưng bản thân kernel rất giới hạn trong việc thiết lập các mode này.

Linux framebuffer console

Bài đầy đủ: Linux framebuffer

Linux framebuffer [fbdev] là 1 lớp đóng gói đồ họa không phụ thuộc vào phần cứng, ban đầu được cài đặt để cho phép linux kernel giả lập text console [như Macintosh không có hiển thị text mode]. Ngày nay nó cung cấp giả lập kernel space text mode trên bất kỳ platform nào. Ưu điểm của nó là đáng tin cậy và tương thích phần cứng tốt hơn cũng như loại bỏ các giới hạn kỹ thuật của VGA text mode.

Linux framebuffer console chỉ khác biệt với VGA trong cách vẽ các ký tự còn việc xử lý các sự kiện keyboard và hỗ trợ virtual console là hoàn toàn giống nhau.

Linux serial port console

Linux serial console là 1 console được cài đặt thông qua serial port, console này được bật bằng tùy chọn CONFIG_SERIAL_CONSOLE trong cấu hình kernel. Nó có thể được sử dụng trong một số hệ thống nhúng và trên server nơi việc tương tác trực tiếp với operator là không cần thiết. Serial console cho phép cùng mode truy cập vào hệ thống nhưng thường ở tốc độ thấp hơn vì băng thông nhỏ hơn của RS-232. Serial console thường được sử dụng trong quá trình phát triển phần mềm cho hệ thống nhúng và thường có thể truy cập được qua debug port.

Các ký tự điều khiển [control character]

Console sẽ phản hồi lại với một số ký tự điều khiển:

Ký tự điều khiểnTên ASCIIMô tả
^G BEL âm thanh đỗ chuông [Bell]
^H BS Backspace
^I HT Horizontal tab
^J LF Line feed
^K VT Vertical tab
^L FF Form feed
^M CR Carriage return
^N SO Shift out
^O SI Shift in
^X CAN Hủy escape sequence
^Z SUB Hủy escape sequence
^[ ESC Escape / bắt đầu escape sequence
^? DEL Nothing
ALT-^[ n/a Bắt đầu command sequence
Control sequenceMô tả
^[M Reverse line feed
^[D Line feed
^[E Carriage return và line feed
^[H Thiết lập tab stop
^[7 Store cursor
^[8 Restore cursor
^[> Chuyển keypad sang chế độ số
^[= Chuyển keypad chế độ ứng dụng
^[c Reset thiết lập terminal
^[Z In ra terminal ID

Danh sách các mục trong /dev/ liên quan đến console

TênMajorMinorMô tả
/dev/tty0 c 4 0 “console hiện tại”
/dev/tty1 … /dev/tty63 c 4 1 … 63 virtual consoles [điều khiển bởi bàn phím]
/dev/ttyS0 … c 4 64 … Serial ports, thích hợp cho system console
/dev/vcs c 7 0 Virtual Console Screen /dev/vcs là nội dung của màn hình virtual hiện tại
/dev/vcs1 … /dev/vcs63 c 7 1 … 63 Text [bảng ký tự pointer] của màn hình virtual.
/dev/vcsa1 … /dev/vcsa63 c 7 129 … 191 Màn hình Virtual Console với các thuộc tính. Hình ảnh đầy đủ của virtual text buffer; 4 bytes đầu tiên chứa số hàng, cột và vị trí con trỏ chuột

Link gốc

Bài Viết Liên Quan

Chủ Đề