Linux Linux Session 1: Giới thiệu Linux cơ bản

BlackDrag0n

Moderator

Linux Session 1: Giới thiệu Linux cơ bản



Có lẽ mọi người đều nghe về hệ điều hành Linux nhưng việc tiếp cận nó rất khó khăn và không dễ dàng như Windows. Đây sẽ là Series mình chia sẻ kiến thức cũng như là kinh nghiệm sử dụng, cài đặt mà mình đúc kết lại cho mọi người. Hy vọng mọi người sẽ ủng hộ mình.

Unix là gì?


UNIX là một hệ điều hành đa nhiệm, đa người dùng và ổn định với máy chủ, được phát triển vào năm 1969 bởi Bell Labs của AT&T. Hiện nay Unix được thương mại hoá với một số phiên bản thường gặp như AIX (IBM), Solaris.
Một số bản miễn phí cho người dùng của nhanh BSD như là FreeBSD ( pfsense), OpenBSD, Darwin( macOS)...

1618912649518.png


Linux là gì?


Đến năm 1991, Linus Torvalds và cộng đồng đã phát triển ra một nhánh mới của UNIX với tên gọi là GNU/Linux. Đây là dự án phát triển dựa trên mã nguồn của UNIX để phát triển dựa trên Linux Kernel. Vì dựa trên UNIX nên Linux sẽ còn có tên gọi là UNIX like. Ngoài ra để gọi chung giữa Linux, macOS, UNIX còn có tên gọi là *nix.
Hệ thống Linux đươc chia thành các nhánh Distro khác nhau để phục vụ cho các mục đích khác nhau. Các bạn có thể tham khảo lịch sử hệ thống đistro Linux tại đây.

Kiến trúc hệ điều hành Linux



1618913500453.png


Được chia thành 2 phần user space và kernel space:
•Kernel Space: Mã thực thi có quyền truy cập không hạn chế vào bất kỳ không gian địa chỉ nào của memory và tới bất kỳ phần cứng nào. Nó được dành riêng cho các chức năng có độ tin cậy cao nhất bên trong hệ thống. Kernel mode thường được dành riêng cho các chức năng hoạt động ở cấp độ thấp nhất, đáng tin cậy nhất của hệ điều hành. Do số lượng truy cập mà kernel có, bất kỳ sự không ổn định nào bên trong mã thực thi kernel cũng có thể dẫn đến lỗi hệ thống hoàn toàn.
•User Space: Mã thực thi bị giới hạn truy cập. Nó là không gian địa chỉ mà các process user thông thường chạy. Những processes này không thể truy cập trực tiếp tới kernel space được. Khi đó các API request được sử dụng tới kernel để truy vấn memory và truy cập thiết bị phần cứng. Bởi truy cập bị hạn chế, các trục trặc hay vấn đề gì xảy ra trong user mode chỉ bị giới hạn trong không gian hệ thống mà chúng đang hoạt động và luôn có thể khôi phục được. Hầu hết các đoạn mã đang chạy trên máy tính của bạn sẽ thực thi trong User mode.

1618913855492.png


Trong User Space thì phần Shell sẽ là phần người dùng sử nhất. Mặc định các Distro linux sẽ sử dụng Bash shell, AIX sử dụng ksh. Ngoài ra còn có một số Shell như Zsh, Fsh,... những Shell này sẽ có một workflow khác nhau để phục vụ người dùng. Mỗi shell sẽ có phần tự gợi ý người dùng bằng nút tab, có thể cài đặt bằng cách cài gói bash-completion, zsh-completion,...

Nếu người dùng sử dụng hệ thống GUI như GNOME, KDE, XFCE4,... sẽ cần phải sử dụng X11 hoặc Wayland để render đồ hoạ cho người dùng. X11 được sử dụng bởi cộng đồng từ lâu. Wayland hiện nay đang trong quá trình thử nghiệm nên không được ổn định. Một số chức năng như X11-forwarding giúp người dùng sử dụng SSH có thể sử dụng GUI.

Các tiến trình của Linux sẽ được gọi là system daemon, được chia thành 2 loại là systemd và init.d. Giữa systemd và init.d thì systemd sẽ tối ưu hơn cho hệ thống cũng như dễ sử dụng hơn. Vì vậy đa số các Distro hiện này đều sử dụng Systemd. Đối với một số Distro sẽ link giữa init.d và Systemd nên người dùng có thể sử dụng cú pháp init.d nhưng sẽ được điều hướng sử dụng Systemd như CentOS 8, nên người sử dụng sẽ không thấy sự khác biệt.

Kernel:


Kernel được coi là trai tim của Linux. Kernel quản lý toàn bộ hệ thống linux từ profile của CPU đến việc phân bổ tài nguyên bộ nhớ đều được Kernel quản lý và quy định sẵn. Kernel gồm có 4 nhánh chính:
  • Bản Kernel mainline hiện tại là 5.12
  • Longterm (LTS)
  • Stable
  • Hardened
  • Zen Kernel
Thông thường kernel khi build sẽ build thành 2 bản, một bản sẽ được backup lại với tên là fallback để người dùng có thể sử dụng khi kernel build bị lỗi. Một bản sẽ là bản mới nhất và mặc định sẽ được chọn bởi bootloader.

Microcode



Microcode là những bản và lỗi cũng như update bảo mật của các nhà phân phối CPU như Intel, AMD. Microcode thường được load bởi bootloader nên sẽ được load cùng với kernel. Đây là thư mục boot của mình.
1618923957421.png


Cây thư mục Linux:


Các phân vùng chính thường được tách biệt với phân vùng root gồm:
  • /boot: Chứa file boot, kernel
  • /home: Chứa file của người dùng
  • /tmp: Chứa file tạm thời để build app. Được tách ra nếu người dùng muốn phân vùng này lớn
  • /var: Chứa log và source code web

1618914543380.png


Khi phân vùng hệ thống xong, các phân vùng lưu trong file /etc/fstab sẽ được khởi động cùng hệ thống.

1618914672851.png


Cấu trúc file fstab sẽ gồm:
  • Cột 1 + 2: Thiết bị cần mount và nơi mặc định để mount.
  • Cột 3 : loại file system
  • Cột 4: Tuỳ chọn mount gồm các option
    • defaults: sử dụng các tuỳ chọn mặc định đó là rw, suid, dev, exec, auto, nouser, and async
    • sync và async
    • auto và noauto
    • user và nouser
    • exec và noexec
  • Cột 5-6: dump và fsck

BOOTLOADER


Các loại bootloader thường được dùng:
  • Clover (macOS)
  • GRUB (default)
  • rEFInd
  • systemd-boot
  • EFISTUB

1618914762518.png


File config mặc định của grub sẽ nằm ở đường dẫn /etc/default/grub

1618914849579.png


Sử dụng lệnh update-grub hoặc grub-mkconfig -o /boot/grub/grub.cfg
Có thể truyền các tham số để can thiệp vào kernel ở phần Grub_cmdline_linux

Kết thúc Linux Session 1, hẹn gặp các bạn vào Linux Session 2 LVM.
 
Last edited:
Top