Để trở nên thành thạo Hệ điều hành Linux, đầu tiên ta cần hiểu rõ phần cứng của nó. Ban đầu, Linux gặp rất nhiều vấn đề với việc hỗ trợ phần cứng vì không có sự hỗ trợ từ các nhà sản xuất. Theo thời gian, sự hỗ trợ phần cứng trong hệ điều hành Linux đã tốt hơn và khả năng tương thích mạnh mẽ hơn.
Sự tương thích phần cứng
Phần cứng là khái niệm đề cập toàn bộ máy tính mà hệ điều hành sẽ cần để chạy. Những phần cứng có thể tháo rời được gọi là thiết bị ngoại vi. Ví dụ card video, nó được hàn lên bo mạch chủ nhưng nó vẫn được coi là thiết bị ngoại vi bởi vì nó giao tiếp với CPU thông qua bus. Thiết bị ngoại vi còn được gọi là thiết bị.
Hệ điều hành đề cập đến toàn bộ hệ thống, bao gồm tất cả các phần mềm ứng dụng. Linux là một hệ điều hành. Còn kernel chỉ là phần quản lý tương tác giữa phần cứng và ứng dụng. Nhân Linux chạy trên CPU và bộ nhớ trên bo mạch chủ.
Mỗi nhà sản xuất phần cứng xử lý dữ liệu khác nhau nên rất khó khăn cho các hệ điều hành để có thể tương thích. Giải pháp là tạo ra một “ngôn ngữ chung” và yêu cầu các nhà sản xuất cung cấp một trình điều khiển để phần cứng hiểu ngôn ngữ chung đó. Ngày xưa các nhà sản xuất không muốn dành ra thời gian để viết các trình điều khiển này nên chúng chủ yếu được viết bởi community. Nhưng nếu nhà sản xuất không cung cấp đủ thông tin cho community để viết trình điều khiển thì phần cứng đó không được hỗ trợ.
Hệ thống tệp của tiến trình hệ điều hành Linux
Hệ điều hành Linux có một triết lý là “tất cả mọi thứ đều là một file”. Có nghĩa là kể cả thông tin phần cứng, trạng thái hệ thống, tiến trình đều là file. Thư mục thông tin tiến trình nằm trong /proc
.
[sinhviencntt@centos ~]$ cd /proc
[sinhviencntt@centos proc]$ ls
1 1677 2395 265 2929 3224 864 dma loadavg sys
10 1678 2450 266 2930 324 9 driver locks sysrq-trigger
11 17 24627 267 2931 325 900 dynamic_debug mdstat sysvipc
12 1737 24652 27912 2932 3284 902 execdomains meminfo thread-self
13 18 25305 2813 2933 4 904 filesystems misc timer_list
14 1890 25339 28540 2935 6 937 fs modules tty
15 2 2536 28546 2936 676 946 interrupts mounts uptime
16374 21 2537 2860 3 682 955 iomem mtrr version
1639 22404 2540 28912 3061 688 962 ioports net vmallocinfo
Ngoài ra, procfs chứa thông tin chi tiết về phần cứng trong hệ thống. Các file trong /proc/ioports
, /proc/dma
, /proc/interrupts
có thể hiện thị nhiều thông tin có ích về thông tin hệ thống.
Khi xảy ra sự cố hoặc xung đột, có thể xem thông tin bằng các lệnh:
cat /proc/interrupts
cat /proc/ioports
cat /proc/dma
cat /proc/usb
cat /proc/pci
Một số câu lệnh:
lsmod
: hiển thị các module của kernel và những dependencies cho các module đó. Lệnh này có thể phát huy tác dụng khi cần kiểm tra xem thiết bị ngoại vi có driver hay chưa.
[sinhviencntt@net proc]$ lsmod
Module Size Used by
sunrpc 663552 1
dm_mirror 28672 0
dm_region_hash 24576 1 dm_mirror
dm_log 20480 2 dm_region_hash,dm_mirror
dm_mod 159744 2 dm_log,dm_mirror
dax 106496 1 dm_mod
crc32_pclmul 16384 0
ghash_clmulni_intel 16384 0
aesni_intel 372736 0
crypto_simd 16384 1 aesni_intel
cryptd 28672 2 crypto_simd,ghash_clmulni_intel
glue_helper 16384 1 aesni_intel
mousedev 24576 0
psmouse 36864 0
button 24576 0
ena 155648 0
ata_piix 40960 0
libata 303104 1 ata_piix
scsi_mod 270336 1 libata
crc32c_intel 24576 0
lscpu
: thông tin về CPU như số lượng và tốc độ của mỗi core hoặc socket.
[sinhvientcntt@net proc]$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
Stepping: 2
CPU MHz: 2399.897
BogoMIPS: 4800.12
Hypervisor vendor: Xen
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt
lspci
: hiển thị thông tin về các bus PCI và các thiết bị.
[sinhviencntt@net proc]$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)
lsblk
: hiển thị các block device (disk) gắn vào máy.
[sinhviencntt@net~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─centos-root 253:0 0 50G 0 lvm /
├─centos-swap 253:1 0 3.9G 0 lvm [SWAP]
└─centos-home 253:2 0 45.1G 0 lvm /home
sr0 11:0 1 55.9M 0 rom
lsscsi
: hiển thị thông tin thiết bị SCSI nếu hệ thống có hỗ trợ.lsdev
: hiển thị những device được nhận bởi hệ thống.lsraid
: hiển thị Redundant Array of Inexpecnsive Disks (RAID) trên máy.lsusb
: hiển thị thông tin về các thiết bị USB.
Phân vùng ổ đĩa
Phân vùng ổ đĩa là một đĩa đơn được chia thành một hoặc nhiều phần. Sự phân tách này cho phép chúng ta chỉ định không gian trên một ổ đĩa cho các mục đích sử dụng khác nhau. Ví dụ một ổ 3TB có thể được chia nhỏ với 500GB đầu tiên cho hệ điều hành và ứng dụng, 1TB cho cơ sở dữ liệu và 1.5TB cho đa phương tiện và giải trí.
Linux sử dụng tên thiết bị để chỉ các ổ đĩa và phân vùng.
- /dev/sda: là ổ đĩa cứng thứ nhất
- /dev/sda1: là phân vùng thứ nhất của ổ đĩa cứng thứ nhất
- /dev/sda3: là phân vùng thứ ba của ổ đĩa cứng thứ nhất
Lưu ý, phân vùng đầu tiên được ký hiệu là 1 nhưng trong một số trường hợp, số 0 chỉ thiết bị đầu tiên. Ví dụ như /dev/md0
là ổ RAID đầu tiên và /dev/scd0
là ổ CD đầu tiên.
Hệ thống cây tập tin gốc (Root Filesystem)
Hệ điều hành Linux có nhiều điểm khác biệt so với hệ điều hành của Microsoft nhưng cái mà dường như nổi bật nhất đó là hệ thống tập tin. Trong Windows, nếu bạn có 3 ổ đĩa, nó sẽ được gọi là ổ C, D, E. Nếu gắn thêm một ổ CD thì ổ đó được gọi là ổ F. Còn trong hệ điều hành Linux cũng như các hệ điều hành Unix khác, chỉ có một hệ thống tệp và các ổ đĩa được ghép vào các thư mục bằng cách gắn hệ thống tệp vào thư mục gốc.
Thư mục gốc ký hiệu là /
. Trong hình trên, nó nằm trên phân vùng sda1. Phân vùng /usr
được gắn vào từ sdb1
, còn sda3
được gắn vào /usr/local
.
Mỗi phân vùng có một hệ thống tệp riêng, và hệ điều hành gắn tất cả lại với nhau thành một hệ thống lớn.
Tổng kết
Bài tiếp theo mình sẽ giới thiệu về những lệnh Shell cơ bản nhất trong Hệ điều hành Linux. Mời các bạn đọc tại Bài 2: Thao tác với Linux Shell cơ bản.