Nguyen Minh Hung Minhung Linux Structure #LinuxFundamentals #Introduction #Part1 01 History Bắt đầu với việc phát hành hệ điều hành Unix của Ken Thompson và Dennis Ritchie (cả hai đều làm việc cho AT&T vào thời điểm đó) vào năm 1970. The Berkeley Software Distribution (BSD) được phát hành vào năm 1977, nhưng vì nó chứa Unix code do AT&T sở hữu nên một vụ kiện đã hạn chế sự phát triển của BSD. Richard Stallman bắt đầu dự án GNU (GNU Is Not Unix) vào năm 1983. Mục tiêu của ông là tạo ra một hệ điều hành giống Unix nhưng "free" (freedom), và một phần dự án của ông đã dẫn đến việc tạo ra giấy phép GNU General Public License (GPL).
Linux là một dự án cá nhân bắt đầu vào năm 1991 bởi một sinh viên Phần Lan tên là Linus Torvalds. Qua nhiều năm, Linux kernel đã chuyển từ một số lượng nhỏ các file được viết bằng ngôn ngữ C sang phiên bản mới nhất với hơn 23 triệu dòng code (không bao gồm comment), được cấp phép theo GNU General Public License v2. Linux có sẵn trong hơn 600 bản phân phối (hệ điều hành dựa trên Linux kernel). Phổ biến và nổi tiếng nhất là Ubuntu, Debian, Fedora, OpenSUSE, elementary, Manjaro, Gentoo Linux, RedHat và Linux Mint.
Next 02 History Linux thường được đánh giá là bảo mật hơn so với các hệ điều hành khác và mặc dù trước đây kernel của nó có nhiều lỗ hổng nhưng vấn đề này đã ngày càng ít xảy ra hơn. Nó ít bị nhiễm phần mềm độc hại hơn hệ điều hành Windows và được cập nhật rất thường xuyên. Linux cũng rất ổn định và thường mang lại hiệu suất rất cao cho end user. Tuy nhiên, nó sẽ có thể khó khăn hơn đối với những người mới bắt đầu cũng như không có nhiều hardware driver bằng Windows.
Vì Linux là mã nguồn mở và miễn phí, nó có thể được sửa đổi và phân phối thương mại hoặc phi thương mại bởi bất kỳ ai. Các hệ điều hành dựa trên Linux chạy trên máy chủ, máy tính lớn, máy tính để bàn, hệ thống nhúng như router, TV, game console, v. Hệ điều hành Android chạy trên điện thoại thông minh và máy tính bảng đều dựa trên Linux kernel và do đó, Linux có thể xem là hệ điều hành được cài đặt rộng rãi nhất. Linux là một hệ điều hành giống như Windows, iOS, Android hoặc macOS.
Hệ điều hành là phần mềm quản lý tất cả các tài nguyên phần cứng được liên kết với máy tính của chúng ta, nói cách khác một hệ điều hành quản lý toàn bộ giao tiếp giữa phần mềm và phần cứng. Ngoài ra, còn tồn tại nhiều bản phân phối (distro) khác nhau. Nó giống như những phiên bản của hệ điều hành Windows vậy. Next 03 Philosophy Linux tuân theo 5 nguyên tắc cốt lõi: Everything is a file: ví dụ như tệp /etc/passwd là một file lưu trữ tất cả người dùng đã đăng ký trên hệ thống.
Small, single-purpose programs: Linux cung cấp những công cụ để làm tốt một việc, điều này giúp cho việc sử dụng hiệu quả tài nguyên hệ thống và các chương cũng trở nên dễ hiểu. Ability to chain programs together to perform complex tasks: Tích hợp và kết hợp các công cụ khác nhau để thực hiện những tác vụ lớn và phức tạp. Avoid captive user interfaces: Linux được thiết kế để hoạt động chủ yếu với shell ( hoặc terminal), cho phép người dùng kiểm soát hệ điều hành tốt hơn. Configuration data stored in a text file: Tất cả các tệp cấu hình (configuration files) cho các dịch vụ chạy trên hệ điều hành Linux được lưu trữ trong một hoặc nhiều tệp văn bản (text file).
Next 04 Components Bootloader: Một đoạn code chạy để hướng dẫn quá trình khởi động hệ điều hành. Ubuntu sử dụng GRUB Bootloader. OS Kernel: Kernel là thành phần chính của hệ điều hành, quản lý tài nguyên cho I/O device ở cấp độ phần cứng. Daemons: Các service chạy ẩn dưới nền trong Linux gọi là "daemon".
Trong Unix, tên của daemon thường kết thúc bằng chữ cái "d". Một số ví dụ thường gặp có thể kể đến như inetd, httpd, mysqld, nfsd, sshd, containerd. OS Shell: operating system shell là giao diện câu lệnh giữa hệ điều hành và người dùng. Giao diện này cho phép người dùng ra lệnh cho hệ điều hành phải làm gì.
Các ngôn ngữ shell được sử dụng phổ biến là Bash, Tcsh/Csh, Ksh, Zsh và Fish. Graphics server: Cung cấp graphical sub-system (server) gọi là "X" hoặc "X-server", cho phép các chương trình đồ họa chạy local hoặc remote trên hệ thống X-window. Window Manager: là một graphical user interface (GUI), có nhiều tùy chọn bao gồm GNOME, KDE, MATE và Cinnamon. Utilities: là các chương trình thực hiện những chức năng cụ thể cho người dùng hoặc chương trình khác.
Next 05 Linux Architecture Hệ điều hành Linux có thể được chia thành các lớp từ dưới lên theo góc độ tương tác với người dùng như sau: Hardware layer: Các thiết bị ngoại vi (peripherals) như RAM, ổ cứng, CPU. Kernel layer: lõi của hệ điều hành Linux, có chức năng ảo hóa (virtualize) và kiểm soát các tài nguyên (resource) phần cứng (hardware) như CPU, phân bổ bộ nhớ, truy cập dữ liệu. Kernel cung cấp cho mỗi quy trình virtual resource của riêng nó và ngăn chặn, giảm thiểu xung đột với các quy trình khác. Shell layer: Giao diện câu lệnh - command-line interface (CLI) để người dùng nhập câu lệnh thực thi các chức năng của kernel.
System Utility: Cung cấp cho người dùng tất cả các chức năng của hệ điều hành. Next 06 File System Hierarchy Hệ điều hành Linux được cấu trúc theo dạng cây phân cấp (tree-like hierarchy), theo document của Filesystem Hierarchy Standard (FHS). Cấu trúc tiêu chuẩn của Linux từ top-level directory như sau: Next 07 File System Hierarchy / : top-level directory, root filesystem, chứa tất cả các file cần thiết để boot hệ điều hành trước khi filesystem khác được mount cũng như các file cần thiết để boot các filesystem khác. Sau khi khởi động, tất cả các filesystem khác được mount dưới dạng subdirectory của root.
/bin : chứa các lệnh nhị phân thiết yếu. /boot : bao gồm static bootloader, thực thi kernel và các file cần thiết để khởi động hệ điều hành Linux. /dev : chứa device file để truy cập vào hardware device được gắn vào hệ thống. /etc : các tệp cấu hình (configuration file) của local system.
Các configuration file của ứng dụng đã cài đặt cũng có thể được lưu ở đây. /home : mỗi user của system sẽ có một subdirectory để lưu trữ tại đây. /lib : các shared library file cần thiết để boot system. Next 08 File System Hierarchy /media : các media device ngoài có thể tháo rời như USB được mount tại đây.
/mnt : nơi mount tạm thời cho các filesystem thông thường. /opt : optional file của các công cụ bên thứ ba có thể được lưu tại đây. /root : giống /home nhưng dành cho root user. /sbin : chứa các tệp thực thi quản trị hệ thống (binary system file) /tmp : hệ điều hành, các chương trình lưu trữ các tệp tạm thời (temporary file).
Thường bị xóa khi khởi động hệ thống và có thể bị xóa vào những thời điểm khác mà không có bất kỳ cảnh báo nào. /usr : chứa các tệp thực thi, library, man (manual) file. /var : chứa các tệp dữ liệu (data file) như logfile, email in-boxes, web app files, cron file. *tệp thực thi trên hệ điều hành Linux giống như các file đuôi ".exe" trên hệ điều hành Windows.
Next Nguyen Minh Hung Minhung Introduction to Shell #LinuxFundamentals #Introduction #Part2 01 Introduction to Shell Một trong những điều quan trọng là phải học cách sử dụng Linux shell vì có nhiều server chạy Linux. Chúng thường được sử dụng vì Linux ít bị lỗi hơn so với các Windows server. Ví dụ như web server thường dùng Linux (Linux distro). Biết cách sử dụng hệ điều hành để kiểm soát một cách hiệu quả đòi hỏi phải hiểu và nắm vững phần thiết yếu của Linux, đó là Shell.
Giao diện khi sử dụng Linux distro là Parrot OS: Linux terminal, còn được gọi là shell hay command line, cung cấp giao diện input/output (I/O) dạng text giữa user và Linux kernel của system. Thuật ngữ console cũng có thể hay gặp nhưng sẽ không ở dạng cửa sổ mà là toàn bộ screen ở text mode. Trong cửa sổ terminal, các câu lệnh có thể được thực thi để điều khiển hệ thống. Ngắn gọn, một terminal đóng vai trò là giao diện cho trình thông dịch shell.
Next 02 Terminal Emulators Terminal emulator thường được sử dụng cho việc này, đây là phần mềm mô phỏng chức năng của một terminal. Nó cho phép sử dụng các chương trình dạng text trên một giao diện đồ họa - graphical user interface (GUI). Có nhiều terminal emulator khác nhau như GNOME Terminal, XFCE4 Terminal, XTerm. Ngoài ra còn có command-line interface (CLI) với những terminal bổ sung bên trong một terminal, được gọi là multiplexer.
Có thể kể đến những multiplexer như Tmux, GNU Screen, Konsole hay Terminator. Các terminal emulator và multiplexer là tiện ích mở rộng (extension) cho terminal, giúp chia nhỏ terminal trong một cửa sổ, làm việc trên nhiều directory, tạo các không gian làm việc (workspace). multiplexer Timux Next 03 Shell Shell được sử dụng phổ biến nhất trong Linux là Bourne- Again Shell (BASH) và là một phần của dự án GNU. Mọi thứ chúng ta làm thông qua GUI, đều có thể làm với shell.
Shell đem đến nhiều khả năng hơn để tương tác với các chương trình và quy trình (process) để lấy thông tin nhanh hơn. Bên cạnh đó, nhiều process có thể dễ dàng được tự động hóa với các tệp chứa các câu lệnh (script) giúp công việc thủ công trở nên dễ dàng hơn rất nhiều. Bên cạnh Bash, còn có nhiều shell khác như Tcsh/Csh, Ksh, Zsh, Fish shell. Bourne-Again Shell (BASH) Next Nguyen Minh Hung Minhung Prompt Description #LinuxFundamentals #TheShell #Part3 01 Dấu nhắc lệnh (bash prompt) theo mặc định, bao gồm các thông tin như username, hostname và directory đang làm việc hiện tại.
Định dạng có thể trông giống như thế này: Home directory của user được ký hiệu bằng dấu <~> và là directory mặc định khi đăng nhập. Ký hiệu dollar <$>, trong trường hợp này là viết tắt của tên user. Ngay sau khi chúng ta đăng nhập bằng quyền root, ký tự này sẽ chuyển thành ký hiệu hash <#> và trông như sau: Next 02 Tuy nhiên, khi chúng ta tải lên và chạy shell trên một hệ thống mục tiêu, có thể sẽ không nhìn thấy username, hostname và directory hiện tại. Điều này có thể là do PS1 variable trong môi trường không được cài đặt chính xác.
Trong trường hợp này, chúng ta sẽ thấy các prompt như sau: Unprivilege - User Shell Prompt (Không có đặc quyền) Privileged - Root Shell Prompt (Có đặc quyền) Việc chúng ta thấy ở đây giống như khi ta làm việc trên GUI của Windows. Chúng ta đăng nhập với một user trên máy tính và biết mình đang ở thư mục nào khi điều hướng.