I. Mở đầu
Đa phần mọi người đều làm quen với Windows từ lâu (bắt đầu với Windows 98, Windows XP, Windows Vista, Windows 7 v.v). Hầu hết các khái niệm của hệ điều hành Windows đều có thể áp dụng tượng tự cho Linux (nhân hệ điều hành, driver, tiến trình, hệ thống tập tin, boot loader v.v). Khi chuyển đổi sang Linux, bạn sẽ hiểu được sâu hơn về thành phần và cách hoạt động của một hệ điều hành.
Sau đây, mình xin liệt kê một số khái niệm thường gặp khi thực hiện chuyển đổi Windows sang Linux nhằm giúp các bạn hiểu cơ bản về những điểm giống và khác biệt giữa Windows và Linux.
II. Yêu cầu phần cứng
Microsoft giới thiệu một HĐH có tên Windows vào 20 tháng 11 năm 1985 như một phiên bản giao diện đồ họa của MS-DOS và nó nhanh chóng chiếm lĩnh 90% thị phần máy tính cá nhân trên toàn thế giới, vượt qua cả Mac OS. Từ đó đến nay, Microsoft đã cho ra mắt 14 phiên bản chính thức của Windows, với mỗi phiên bản mới gồm các cập nhật tính năng mới và vá lỗi. Điều này tất nhiên đã dẫn đến việc gia tăng về yêu cầu phần cứng: CPU, RAM, Ổ đĩa tối thiểu và khuyến nghị để chạy Windows. Ở thời điểm hiện tại, để cài đặt phiên bản mới nhất Windows 11 bạn cần tối thiểu 1 CPU 64bit (phổ biến hiện nay 64bit), RAM 4GB (phổ biến hiện này >= 4GB), ổ đĩa 64GB (phổ biến hiện nay >= 250GB). Điều này có nghĩa là kể từ 11, Windows sẽ không chạy trên các phần cứng cũ với kiến trúc CPU 32bit, RAM dưới 4GB và ổ đĩa dưới 64GB. Cụ thể hơn, Windows 11 trở về sau sẽ không hỗ trợ phần cứng bao gồm: các dòng CPU Intel & AMD 32bit sản xuất trước năm 2005, các thanh RAM chuẩn DDR sản xuất trước 2003, ổ đĩa dưới 64GB sản xuất cho các thiết bị không phải laptop/desktop. Điều này hoàn toàn hợp lý vì mục đích sử dụng chính của Windows là dành cho các máy tính cá nhân, chứ không phải các thiết bị nhúng, router, switch, điện thoại, server, v.v có cấu hình thấp.
Ngược lại, Linux được phát hành lần đầu năm 1991, 6 năm muộn hơn so với Windows. Thị phần máy tính cá nhân của Linux chỉ chiếm khoảng 2,3% chủ yếu là từ việc bán Chrome book chạy ChromeOS cho các trường học khối 12 ở Mỹ. Bù lại, Linux chiếm lĩnh thị trường máy chủ, mainframe, siêu máy tính, thiết bị nhúng và cả thiết bị di động. Android có họ hàng thân thiết với Linux với cấu tạo gồm phần nhân Linux, Java API Framework, thư viện C/C++ native, Android Runtime, HAL. Android chạy được trên các thiết bị di động nhờ tính nhỏ gọn và tận dựng hiệu quả phần cứng giới hạn của thiết bị. Arch Linux, 1 distro Linux nổi tiếng nhỏ gọn và loại bỏ hầu hết phần mềm không cần thiết, chỉ chiếm vỏn vẹn 512MB RAM và 2GB ổ đĩa. Debian, một distro Linux nổi tiếng và lâu đời, vừa release phiên bản thứ 12 gần đây với kiến trúc 32bit (i386). Rõ ràng, các hệ điều hành nhân Linux luôn hướng đến việc hỗ trợ thiết bị có cấu hình thấp như các thiết bị nhúng, router, switch, server thậm chí là xe hơi, ti vi, tủ lạnh thông minh.
III. Cách khởi động
Windows và Linux đều có phần mềm boot của riêng mình: BOOTMGR (Boot Manager) cho Windows và GRUB (GRand Unified Bootloader) cho Linux. Hai hệ điều hành đều sử dụng một phân vùng đĩa riêng (gọi là boot partition) trên HDD hoặc SSD để lưu trữ các tập tin của nhân hệ điều hành và boot loader. Khi bạn ấn nút nguồn trên máy tính, nguồn điện sẽ được cấp cho phần cứng. Bo mạch chủ sẽ khởi động BIOS, chạy POST (Power On Self Test) để kiểm tra các thiết bị ngoại vi và sau đó chạy boot loader, hiển thị danh sách các nhân hệ điều hành có thể boot được.
BOOTMGR và GRUB đều được sử dụng để boot hệ điều hành. Tuy nhiên, GRUB có khả năng làm việc được với đa dạng các hệ điều hành (Linux, Solaris, BSD, v.v) trong khi BOOTMGR chỉ giới hạn với Windows. Do đó, nếu bạn muốn sử dụng song song cả Linux và Windows (dual boot Linux và Windows) thì nên sử dụng GRUB làm bootloader thay cho BOOTMGR. Lời khuyên cá nhân: nếu bạn mới bắt đầu làm quen với Linux có thể thử dualboot Linux và Windows để trải nghiệm mà không cần gỡ bỏ hoàn toàn Windows.
Mỗi lựa chọn trong GRUB bootloader có thể là: 1 phiên bản kernel Linux khác, 1 phiên bản kernel Linux ở chế độ phục hồi hoặc 1 bản phân phối Linux khác (vd Ubuntu, FreeBSD, Debian, CentOS) hoặc Windows, BSD. Bạn có thể ấn phím E để chỉnh sửa câu lệnh sẽ được chạy khi chọn lựa chọn hiện tại trong menu GRUB (bao gồm các tham số cho nhân hệ điều hành).
Lưu ý quan trọng: luôn cài đặt Windows trước rồi mới cài đặt GRUB và Linux sau. Vì khi cài đặt Windows, Windows Boot Manager sẽ boot thẳng vào Windows. Ngược lại, khi cài đặt Linux sau Windows, bộ cài đặt của Linux biết cách làm việc với Windows có sẵn trên máy tính. GRUB sẽ thay đổi kích thước phân vùng của Linux và tạo một bootloader gồm có 1 lựa chọn để boot vào Windows Boot Manager. Hiện tại GRUB hỗ trợ nhiều loại hệ thống tập tin như ext4, xfs, DOS FAT16, DOS FAT32, v.v.
GRUB có 2 phiên bản 1 - chỉ phổ biến ở các bản phân phối Linux cũ (vd như CentOS 5) và 2 - sử dụng bởi đa số các bản phân phối Linux hiện nay. GRUB 1 lưu tập tin cấu hình ở đường dẫn /boot/grub
, bao gồm các file .lst
chứa các thông tin các lựa chọn trong GRUB boot menu như title (tên lựa chọn trong GRUB menu), root (ổ đĩa cứng và phân vùng gốc chứa /boot), kernel (đường dẫn đến tập tin nhân hệ điều hành) và initrd (đường dẫn đến ramdisk khởi động). Ví dụ về 1 lựa chọn trong GRUB menu: trường root chỉ định các file của GRUB nằm ở phân vùng đầu tiên của ổ cứng đầu tiên (hd là ổ cứng theo cách đặt tên của GRUB), title chỉ định tên hệ điều hành Arch Linux, kernel chỉ định đường dẫn đến file nhân hệ điều hành là /vmlinuz-linux
, root chỉ định gốc hệ thống tập tin nằm ở phân vùng thứ 2 của ổ đĩa cứng thứ nhất (sd là ổ cứng theo cách đặt tên của kernel), initrd chỉ định file chứa hệ thống tập tin tạm thời được nạp vào ram khi kernel khởi động.
default=0
timeout=5
title Arch Linux Stock Kernel
root (hd0,0)
kernel /vmlinuz-linux root=/dev/sda2 ro
initrd /initramfs-linux.img
IV. Tiến trình và dịch vụ
Tiến trình và dịch vụ có nhiều điểm tương đồng nên ở đây sẽ không phân biệt rõ ràng 2 khái niệm này. Một tiến trình có thể là dịch vụ và ngược lại. Sau khi nhân hệ điều hành load vào RAM, nó bắt đầu tương tác với phần cứng thông qua firmware (driver) của nhà sản xuất được cài đặt trên phần cứng. Theo thứ tự, tiến trình đầu tiên của hệ điều hành được chạy (process ntoskrnl.exe trên Windows và process init trên Linux), tiếp theo đó là các dịch vụ hệ thống (windows update, đồng bộ thời gian, web server, mail server, dns server, dhcp server, v.v) và các process của người dùng.
Tiến trình có thể nhận các loại tín hiệu từ hệ điều hành (SIG KILL, SIG TERM, SIG INT, SIG CONT, SIG TRAP, v.v) và chuyển đổi trạng thái (Sleep, Running, Stopped, Zombie). Một tiến trình được định danh duy nhất bằng PID và sở hữu bởi người dùng đã khởi chạy nó (UID). Toàn bộ tiến trình của Linux được tổ chức dưới dạng cây, 1 tiến trình cha có thể chứa nhiều tiến trình con. Với Windows, các tiến trình KHÔNG có quan hệ cha - con. Với Linux, các tiến trình có quan hệ cha con. Khi bạn ấn tổ hợp phím "huỷ" (Control C - gửi SIG TERM) đến một tiến trình cha, process init (PID = 1) sẽ thừa kế các tiến trình con của tiến trình cha bị huỷ đó. Các bản phần phối hệ điều hành dựa trên Linux hiện đại đều sử dụng một loại hệ thống quản lí dịch vụ (vd SystemD, SystemV, Upstart, v.v) để tiến hành khởi động, quản lý cài đặt, theo dõi trạng thái, ghi nhật ký của các dịch vụ chạy trên hệ thống.
V. Tương tác người dùng
Người dùng có thể tương tác với hệ điều hành Linux thông qua giao diện đồ hoạ tương tự như Windows hoặc dòng lệnh (khuyến nghị). Tất nhiên là môi trường giao diện đồ họa của Linux chưa thể sánh bằng Windows hay MacOS về số lượng tính năng. Nhưng với người dùng đã quen việc sử dụng môi trường đồ hoạ để tương tác với hệ điều hành và không muốn sử dụng dòng lệnh, một số môi trường desktop dành cho Linux có thể kể đến là:
...Và rất nhiều môi trường desktop khác để bạn thoả sức tuỳ biến. Cá nhân mình sử dụng GNOME khá là nhiều, cho nên mình sẽ chia sẻ một số tính năng của GNOME tương đồng với Windows: cửa sổ truy cập hệ thống tập tin (nautilus), tạo các đường dẫn tắt (link), gắn các hệ thống tập tin mạng (NFS), cửa sổ cài đặt (settings màn hình, hiển thị, máy in, chuột, bàn phím, nguồn điện v.v), thanh tác vụ (activities - tương tự như Windows taskbar), quản lý đĩa (disks), v.v Thực sự thì môi trường desktop này cung cấp hầu hết giao diện người dùng cho các tính năng tối thiểu để người dùng có thể sử dụng Linux mà không phải đụng đến dòng lệnh.
VI. Cách cài đặt phần mềm
Nếu như cài đặt phần mềm trên Windows, bạn phải tìm đến trang web có chứa các file thực thi hoặc file cài đặt, file nén, v.v sau đó download về rồi thực hiện các bước cài đặt thì với Linux, bạn có thể cài đặt phần mềm chỉ bằng cách gõ 1 dòng lệnh duy nhất và ấn Enter. Đó là bởi vì đa số các phần mềm phổ biến đều có sẵn trên Linux thông qua các trình quản lý gói (package manager) trên các kho chứa (repositories). Các kho chứa này đơn giản là các server trên Internet có chứa danh sách đường link đến trang download phần mềm mà bạn cần. Bạn không cần phải nhớ URL của website để download Java, Python, Chrome, VirtualBox, Sublime Text, Node.js, GIMP, VLC v.v vì đã có trình quản lý gói giúp bạn làm việc ấy.
Các trình quản lý gói còn giúp giải quyết các xung đột về phiên bản (ví dụ như cài đặt phiên bản mới hơn cho một phần mềm cũ hiện tại), cài đặt các phần mềm bắt buộc phải có trước khi cài đặt phần mềm đó và dọn dẹp bộ nhớ đệm tải xuống chứa các phần mềm đã cài đặt. Trải nghiệm cài đặt phần mềm trên Linux thực sự vượt xa hẳn Windows về tốc độ, tuy nhiên điều này đòi hỏi người sử dụng phải có lượng kiến thức nhất định về cách cài đặt phần mềm bằng giao diện trước khi sử dụng dòng lệnh. Ngoài ra, việc cài đặt các bản cập nhật trên Linux là không bắt buộc và hoàn toàn tùy thuộc vào quyết định của người sử dụng. Không có chuyện bỗng dưng bạn khởi động máy tính lên và hệ điều hành tự động cài đặt cập nhật như ở Windows. Bên dưới là hình ảnh minh hoạ quá trình cài đặt Apache2 Web Server trên Ubuntu
VII. Chi phí và bản quyền
Sử dụng Linux sẽ tiết kiệm chi phí bản quyền hơn so với Windows, dĩ nhiên là trừ các bản phân phối có trả phí như Red Hat Enterprise Linux hay Suse Linux Enterprise System. Chi phí tiết kiệm này tỉ lệ thuận với số lượng người dùng của bạn, càng nhiều người dùng có nghĩa là càng tiết kiệm được chi phí. Ở thời điểm viết bài, bản quyền Windows Server Standard từ 2012 trở về sau có giá thị trường ít nhất trên 500.000 vnđ, cho nên việc sử dụng Linux miễn phí sẽ giúp doanh nghiệp vừa và nhỏ tiết kiệm được chi phí đầu tư mua phần cứng ban đầu. Với doanh nghiệp đã có sẵn các phần cứng cũ, hiệu suất của Linux hơn hẳn so với Windows, giúp tận dụng tối đa phần cứng cũ và giảm đáng kể chi phí vận hành.
Linux được phát hành bằng giấy phép công cộng GNU (GNU General Public License, viết tắt GNU GPL) là giấy phép phần mềm tự do được sử dụng rộng rãi, đảm bảo cho người dùng cuối tự do chạy, nghiên cứu, sửa đổi và chia sẻ phần mềm. Giấy phép ban đầu được viết bởi Richard Stallman của Quỹ Phần mềm Tự do (FSF) cho Dự án GNU, và cấp cho người sử dụng Linux. Giấy phép GPL phiên bản 2 gồm 12 điều khoản, phiên bản 3 gồm 17 điều khoản. Với GPL, người dùng có thể:
- Tự do chạy chương trình, cho bất cứ mục đích nào.
- Tự do tìm hiểu cách hoạt động của chương trình, và tự do sửa đổi nó. (Quyền truy cập mã nguồn là điều kiện tiên quyết cho quyền tự do này.)
- Tự do tái phân phối bản sao.
- Tự do cải tiến chương trình, và phát hành những gì cải tiến ra công cộng. (Quyền truy cập mã nguồn là điều kiện tiên quyết cho quyền tự do này.)
So sánh với thoả thuận giấy phép người dùng cuối của phần mềm thương mại thường không cho người dùng cuối quyền nào trừ quyền sử dụng phần mềm và luôn hạn chế kỹ thuật phân tích ngược (reverse engineering). Các giấy phép như BSD, MIT, Apache... thường không có quy định gì về phần mềm phái sinh nên xảy ra việc phần mềm phái sinh bị biến thành phần mềm độc quyền - người sử dụng bị hạn chế quyền với phần mềm phái sinh. Để đảm bảo các quyền sửa đổi, sao chép, phân phối lại với phần mềm phái sinh vẫn được trao cho người sử dụng thì Richard Stallman đã làm ra giấy phép GPL trong đó yêu cầu phần mềm phái sinh cũng phải là phần mềm GPL.
Kết bài
Tóm lại, Linux có nhiều điểm tương đồng với Windows vì cùng chung cái gốc họ hệ điều hành tương tự như Unix. Song Linux cũng có nhiều điểm khác biệt đáng chú ý như đã liệt kê ở trên. Việc hiểu biết về những điểm giống và khác nhau này trước khi thực hiện chuyển đổi từ Windows sang Linux sẽ giúp bạn thích nghi và làm việc hiệu quả với Linux.