Trong các bài trước, chúng ta đã tìm hiểu xem sẽ có những chuyện gì ở dưới mặt nước. Đúng với tinh thần “dive in”, trong bài viết này Dive in Linux phần 4, chúng ta sẽ bắt đầu ướt chân.
Lưu ý, từ “cài đặt” ở đây mang ý nghĩa cài đặt vào máy tính cá nhân (PC). Tại máy server, chúng ta ít quan tâm đến câu chuyện giao diện người dùng hay cá nhân hóa, thay vào đó chúng ta quan tâm đến các khía cạnh khác như bảo mật, ổn định và dễ dàng triển khai dịch vụ.
TL;DR
Việc sử dụng bất kỳ hệ điều hành nào trên máy PC cũng bắt đầu bằng việc cài đặt (khác với server, hầu như chúng ta chỉ cần tạo một container chứa hệ điều hành, bằng một dòng lệnh, là đã có một instance sẵn sàng hoạt động). Mục “too-long; didn’t read” này cung cấp cho bạn những thông tin bên lề về quá trình cài đặt. Bạn không cần phải thuộc nằm lòng những thông tin này mới có thể tiến hành cài đặt Linux hay bất kỳ OS nào khác, nhưng việc nắm giữ chúng sẽ giúp ích rất nhiều trong các trường hợp bạn muốn “làm khác đi” so với bình thường, hay khi gặp lỗi khởi động.
Tiến trình khởi động hệ điều hành
Phần mềm hệ điều hành không khác gì là một tập hợp các tập tin. Nếu máy tính chịu tìm đến các tập tin đó để thực thi thì hệ điều hành sẽ được khởi động và bạn sẽ nhìn thấy logo Windows, Fedora hay vân vân… Nhưng sự việc không đơn giản là copy thư mục Windows vào ổ cứng rồi cắm vào máy tính là xong, có rất nhiều các trường hợp đặc biệt mà phần cứng máy tính sẽ không lường trước được, chẳng hạn trong ổ cứng chứa nhiều thư mục chứa OS, hay chứa nhiều phân vùng mỗi phân vùng một OS, hay có nhiều ổ cứng mỗi ổ cứng chứa nhiều phân vùng trong số đó có một phân vùng chứa OS … Rất nhiều ngoại lệ không lường trước được để mà lường trước. Để giải quyết vấn đề này, nghành công nghiệp máy tính đã thiết kế nên nhiều giai đoạn khởi động, các giai đoạn sẽ được “bẻ ghi” bởi các nhân tố khác nhau. Tổng quan các bước này như sau:
BIOS
Khi bấm nút nguồn, phần mềm BIOS chứa trên bảng mạch chính của máy tính được khởi động. Nó đi tìm các ổ cứng đang kết nối, tìm xem trên đó có thông tin MBR không, các MBR đó có được xếp thứ tự từ trước không (nếu bạn từng cấu hình ưu tiên ổ cứng khởi động trong BIOS máy tính thì đó chính là thứ tự này), sau đó khởi động MBR.
MBR
MBR là một chương trình rất nhỏ được ghi vào những vòng đầu tiên trong ổ cứng. MBR cũng chứa thông tin về vị trí của các phân vùng trên ổ cứng. Do kích thước nhỏ, MBR chỉ chứa được một lượng thông tin rất hữu hạn, vì lý do này mà ổ cứng sử dụng MBR chỉ được có tối đa 4 phân vùng primary (có cố chia nhiều hơn nữa thì MBR cũng không “nhớ” được).
MBR “biết” chương trình bootloader nằm ở đâu, và MBR có nhiệm vụ khởi động chương trình đó.
Bootloader
Đây là một danh từ chung, chỉ GRUB, LILO — những bootloader để khởi động Linux, hay Windows bootloader (tác giả không biết tên). Bootloader được chứa trong thư mục /boot. Bootloader chứa thông tin về các Kernels đang được cài đặt trên ổ cứng. Bạn có thể cài đặt nhiều hệ điều hành trên cùng một ổ cứng, và bootloader biết các hệ điều hành này nằm ở đâu, nhờ đó mà bạn có thể “chọn” hệ điều hành để khởi động vào).
MBR chỉ gọi một bootloader. Nếu bootloader đó không “biết” đến OS mà bạn muốn boot, bạn sẽ không thể khởi động được OS. Điều này rất hay gặp phải khi bạn cố cài đặt nhiều hệ điều hành trên cùng một ổ cứng, vì lý do nào đó bạn không bổ sung thông tin về OS thứ hai cho bootloader, hoặc thay vào đó bạn cài đặt một bootloader thứ hai vào hệ thống, khai báo nó cho MBR, và hệ quả là vô hiệu hóa mất bootloader đang boot OS trước đó… Có rất nhiều trường hợp có thể xảy ra, nhưng giải pháp để “cứu” luôn là chọn lấy một bootloader, khai báo nó với MBR, và khai báo thông tin về tất cả các OS đang có cho bootloader này.
Kernel
Kernel được khởi động lên và bắt đầu từ lúc này thì mọi chuyện sẽ rất phức tạp — không rối rắm nhưng rất phức tạp. Tuy vậy, tóm gọn lại sẽ là hệ điều hành khởi động các tiến trình và tác vụ ngầm của nó, theo các cấu hình của nó. Sau đó hệ điều hành trao cho User khả năng đăng nhập.
Init
User cung cấp bằng chứng xác thực và hệ điều hành sẽ tìm đến thư mục chủ của user và khởi động các tiến trình cũng như tác vụ ngầm được cấu hình trong đó. Sau đó hệ điều hành đã hoàn tất khởi động và máy tính đã sẵn sàng để sử dụng.
Cách Linux sắp đặt hệ thống các tập tin của nó
Người dùng Windows hầu như đều sẽ gặp khó khăn ban đầu khi làm quen với cách tổ chức tập tin của Linux/Unix. Về cơ bản, Linux “tâm niệm” rằng cấu trúc hệ thống thư mục của nó là cố định như dưới đây, bạn không cần xem hiểu chi tiết mỗi thư mục con, chỉ cần nhìn cho biết là được:
Khi có một phân vùng ổ cứng được kết nối vào hệ thống, phân vùng đó sẽ không thể truy cập được cho đến khi có một thao tác gọi là mount được thực thi. Mount nghĩa là gắn một thiết bị với một thư mục nào đó trong cấu trúc thư mục của hệ điều hành. Sau đó thì bạn làm việc với phân vùng giống như với một thư mục bình thường thôi.
Khi cài đặt, nếu bạn muốn có khả năng về sau chỉ cài đặt lại phần nhân hệ điều hành và giữ lại thư mục /home cũ — vốn chứa cấu hình người user của bạn, bạn có thể tạo một phân vùng riêng và mount thư mục /home vào đó. Lần sau cài đặt thì chọn không format phân vùng này.
Cài đặt
Tổng quan quá trình cài đặt
Cài đặt là ghi các thông tin cần thiết vào ổ cứng máy tính, bao gồm MBR, bootloader, kernel và cấu hình user. Mỗi khi bạn muốn thay đổi khối đứng sau thì bạn cần cập nhật khối đứng trước. Bài viết này không đề cập đến cách thức để cập nhật và chỉ đặt vấn đề bạn cài mới mọi thứ.
Về cơ bản, nếu bạn đã có đầy đủ tất cả các thông tin trên rồi thì chỉ cần cứ thế ghi vào ổ cứng là được, chúng ta gọi hành động này là “phục hồi” (restore). Và thứ chứa “đầy đủ tất cả các thông tin” có thể là bản ghost, ảnh đĩa, hay bản backup, tùy cách bạn hay gọi.
Nếu bạn có một ổ cứng khác chứa một hệ điều hành đơn giản mà có khả năng tạo ra “các thông tin cần thiết” theo ý bạn muốn và ghi vào một ổ cứng bạn chỉ định, chúng ta gọi đó là cài đặt hệ điều hành.
Thông thường để cài đặt một bản phân phối Linux thường cần qua các bước sau:
- Tạo một thiết bị chứa trình cài đặt
- Khởi động vào thiết bị chứa trình cài đặt
- Trình cài đặt sẽ tìm cách xác nhận rằng bạn đang có thể giao tiếp với nó, bằng cách cho bạn chọn ngôn ngữ giao tiếp, layout bàn phím…
- Trình cài đặt sẽ hỏi bạn về ổ cứng đích mà bạn muốn cài đặt, quy cách phân vùng cho ổ cứng đó, cũng như mount point của mỗi phân vùng.
- Trình cài đặt sẽ hỏi bạn các cấu hình cơ bản cho hệ điều hành mới, như ngôn ngữ, múi giờ, môi trường làm việc, các chương trình bổ sung, danh sách khác kho phần mềm được kích hoạt, v.v…
- Trình cài đặt sẽ hỏi bạn để tạo ra user cho bạn
- Trình cài đặt sẽ giúp bạn bổ sung mô tả về hệ điều hành mới cài đặt xong vào bootloader, và sau đó khởi động lại hệ thống. Lúc này nếu bạn chọn khởi động đúng ổ cứng, chuỗi phản ứng MBR > bootloader > kernel > user sẽ xảy ra và bạn sẽ đứng trước màn hình login.
Chuẩn bị phương tiện cài đặt
Mọi bản phân phối đều cung cấp chỉ dẫn để bạn tạo phương tiện cài đặt, tựu trung lại thì có hai cách phổ biến:
- Tải tập tin ISO chứa trình cài đặt và ghi vào đĩa CD/DVD sau đó boot bằng đĩa này
- Tải tập tin .ISO, ghi nó vào một USB Flashdisk cùng với MBR + bootloader, sau đó boot bằng thiết bị này.
Tập tin ISO cũng có thể có nhiều loại, có thể kể đến như:
- Bản cài đặt chuẩn
- Bản cài đặt “rất đầy đủ”, với rất nhiều tùy chọn để cài đặt thêm các phần mềm đặc thù mà có thể không cần thiết với đa số người dùng
- Bản cài đặt “Net”, bản này hầu như chỉ chứa trình cài đặt, còn mọi tập tin cần thiết để ghi vào máy tính sẽ được tải về từ internet trong lúc cài đặt. Bản cài đặt này rất thích hợp cho những máy tính với đường truyền internet mạnh bởi thời gian cài đặt hầu như là như nhau khi so sánh giữa cài đặt offline và Net, nhưng thời gian tạo USB Flashdisk thì ngắn hơn rất nhiều nhờ dung lượng file ISO nhỏ (300~400MB).
Về cách để tạo ra một USB Flashdisk có khả năng boot, một số phần mềm sau đây sẽ hữu dụng:
- Universal USB Installer nếu bạn đang sử dụng HDH Windows trong lúc tạo tạo USB boot
- UNetbootin nếu bạn đang sử dụng Linux/MacOS
- Về cơ bản, tất cả những gì mà các công cụ trên làm là cấu hình MBR và bootloader, sau đó copy nội dung trong file ISO vào trong thiết bị. Nếu bạn biết câu lệnh cmd nào có thể làm được những việc trên, bạn hoàn toàn có thể tự làm
Bởi quá trình tạo USB boot cần phải ghi đè MBR — tức là “format” lại toàn bộ một ổ cứng, do đó bạn chắc chắn cần quyền root hay Administrator, trên Windows hãy click chuột phải vào file exe và chọn “Run as Administrator”, trên Linux/Unix hãy cung cấp password sudo khi được hỏi.
Khởi động tiến trình cài đặt
Bạn đưa thiết bị boot trình cài đặt vào máy, chắc chắn rằng BIOS của bạn chọn boot bằng thiết bị này, sau đó chọn menu cài đặt là được.
Đồng thuận cách giao tiếp với trình cài đặt
Mô tả ngôn ngữ, location và layout bàn phím cho trình cài đặt.
Cấu hình cho hệ điều hành mới
Bạn sẽ được yêu cầu đặt host-name và domain-name cho máy tính mới. Nếu bạn không biết phải làm gì với hai thông tin này thì cứ hiểu đơn giản là tên máy tính hiển thị trong terminal sau này của bạn sẽ có dạng hostname@domainame, hãy chọn tên bạn thấy thỏa mãn, lúc nào cũng sửa được.
Một số bản phân phối cho phép bạn đặt mật khẩu cho user root, một số bản phân phối khác thì hoàn toàn ngăn cản bạn truy cập bằng user root mà thay vào đó đưa user của bạn vào group sudoer ngay sau khi cài đặt.
Bạn cũng sẽ được yêu cầu mô tả locale cho hệ điều hành mới, thông tin này sẽ quyết định cách mà hệ điều hành thể hiện số má, ngày giờ, cũng như cài đặt sẵn cho bạn bộ gõ.
Mô tả quy cách phân vùng
Đây là bước làm nản lòng người dùng nhất khi cài đặt một bản phân phối Linux. Thật ra rất đơn giản, bất kỳ tùy chọn “sử dụng toàn bộ ổ cứng” nào cũng sẽ hoạt động tốt, bất kể là nó dụng toàn bộ ổ cứng như một phân vùng duy nhất hay là chia riêng một số phân vùng riêng cho các mount point /home hay /boot. Bạn đơn giản là nên sử dụng một trong các tùy chọn này. Điểm trừ duy nhất là bạn phải backup các tập tin quan trọng cẩn thận, bởi ổ cứng sẽ mất hết dữ liệu cũ. Lời khuyên là nên sử dụng các dịch vụ cloud để backup.
Các lỗi thường gặp
Không có wifi khi cài đặt
Một số drive cho card mạng wireless là phần mềm non-free, và do đó các tập tin cài đặt không thể chứa sẵn chúng được do vấn đề giấy phép. Giải pháp là bạn tự đi tìm và bổ sung vào USB boot trước khi khởi động máy tính.
Bạn có thể tải một số drive dạng này ở đây. Bạn cần copy file ucode cần thiết vào thư mục /lib/firmware nằm trong USB boot.
Không có wifi sau khi cài đặt
Nguyên nhân tương tự như trên, nhưng nếu bạn có thể làm thế nào đó để có được kết nối internet (cắm dây mạng chẳng hạn) thì thường update hệ điều hành sẽ giải quyết được vấn đề. Nếu không thể, bạn hãy dùng một máy tính khác, search với từ khóa manual nstall non free firmware on …, hay non free firmware from usb sau đó download thủ công firmware và copy vào đúng chỗ được hướng dẫn.
Máy quá nhiệt và sau đó treo
Lỗi này xảy ra sau khi cài đặt xong, thường do drive card đồ họa ngoại vi không tương thích, dẫn đến hệ điều hành mất khả năng kiểm soát xung nhịp theo nhiệt độ. Giải pháp triệt để nhất là đừng sử dụng card đồ họa rời, nếu BIOS của bạn có khả năng tắt card đồ họa rời, hãy làm điều đó, nếu không được, hãy thử sử dụng bumbebee để chuyển sang sử dụng onboard graphic card, hoặc sử dụng các altenative drive do cộng đồng phát triển thay vì sử dụng drive cài đặt sẵn.
Dưới đây là một số đường dẫn mà bạn có thể tham khảo:
https://askubuntu.com/questions/453926/how-to-solve-overheating-problem
https://askubuntu.com/questions/1021488/ubuntu-lags-and-overheats-my-laptop-drives-fans-to-max
Những việc cần làm sau khi cài đặt
Cập nhật sau cài đặt
Câu lệnh có thể sẽ khác đi nếu bạn sử dụng package manage khác mà không phải apt.
su -
sudo apt update
sudo apt upgrade
Lấy quyền sử dụng lệnh sudo
Bạn thường xuyên sẽ cần đến câu lệnh này. Hãy thử gõ lệnh sudo ls, nếu bạn bị từ chối thực thi thì nghĩa là user của bạn chưa có quyền sử dụng lệnh này.
Cách giải quyết thường là bổ sung user của bạn vào một group có quyền sử dụng lệnh sudo, lưu ý thay $username trong các câu lệnh dưới đây thành username của bạn:
apt-get install sudo
usermod -a -G sudo $username
reboot
Tweak
Hãy thử tìm các chương trình giúp cấu hình giao diện, font chữ, cửa sổ… trong System Preference và tùy biến cho phù hợp hới mô hình làm việc của bạn.
Cài đặt các gói non-free
Một số font thường gặp không được cung cấp mặc định. Để cài đặt chúng cần phải cho phép trình apt tải và cài đặt các gói phần mềm non-free cũng như contribution. Trước tiên, dùng trình gedit để mở file /etc/apt/sources.list :
sudo gedit /etc/apt/sources.list
Mở các kênh non-free và contrib bằng cách bỏ dấu comment:
Save lại, sau đó chạy các lệnh sau để cài đặt gói msttfcore-fonts
sudo apt-get update
sudo apt-get install msttcorefonts
Bộ gõ tiếng việt
Khi bạn gõ phím, Linux không nhận tín hiệu này trực tiếp mà thông qua một chương trình gọi là input iystem, bạn gõ 2 ký tự a, input system dấu giếm chuyện đó và thay vào đó gửi ký tự â` đến lớp dưới, cơ bản là thế.
Có hai input system phổ biến là ibus và fcitx. Ở đây hướng dẫn bạn cài đặt và sử dụng fcitx thay thế cho input system ibus mặc định trên hầu hết các bản phân phối.
Bạn cài đặt fcitx trước, sau đoạn này thì chưa có gì đặc biệt xảy ra cả:
sudo apt-get install fcitx-unikey
Bạn chuyển đổi input system của hệ thống sang fcitx, sau đó đăng xuất và đăng nhập lại, lúc này thì tất cả các bộ gõ bạn đã cài đặt vào ibus (nếu có) sẽ bất hoạt:
im-config -n fcitx
Bạn cũng sẽ thấy biểu tượng của fcitx trên menu hệ thống, lúc này thì mở lên và chọn sử dụng Unikey nữa thôi.
Kết
Bạn chắc chắn đã có trình duyệt để sử dụng. Hãy tận dụng nó để giải quyết mọi vấn đề. Ở bài sau chúng ta sẽ tìm hiểu về cá nhân hóa, cũng như thiết kế môi trường để làm việc (không phải việc văn phòng, mà là công việc phát triển phần mềm).
Author: Nguyễn Bình Sơn