Mục tiêu của hướng dẫn này là giúp bạn – những người dùng mới bắt đầu – từng bước làm quen với môi trường dòng lệnh (command line) trong Linux, để rồi một ngày không xa, bạn có thể tự tin thao tác và thậm chí khiến bạn bè phải trầm trồ trước kỹ năng làm chủ Terminal của mình.
Chúng tôi sử dụng Ubuntu làm nền tảng trong loạt bài này, nhưng đừng lo: hầu hết các lệnh được đề cập đều có thể áp dụng linh hoạt cho các bản phân phối Linux phổ biến khác như Debian, Fedora, Arch, Manjaro… Trong trường hợp có sự khác biệt, tôi sẽ nêu rõ để bạn dễ dàng điều chỉnh.
Bạn sẽ được học cách thực hiện nhiều thao tác quan trọng chỉ bằng dòng lệnh – không cần đến giao diện đồ họa (GUI). Lợi ích rõ ràng? Những lệnh này chạy hoàn toàn độc lập với môi trường desktop như GNOME, KDE hay XFCE – thậm chí ngay cả khi bạn sử dụng một hệ thống tối giản không có GUI, bạn vẫn có thể vận hành mọi thứ mượt mà.
Chỉ cần có chút kiến thức nền tảng về Linux, mở Terminal lên – và bắt đầu hành trình khám phá thế giới dòng lệnh đầy thú vị!
Các tác vụ phổ biến
Tại sao phải dùng dòng lệnh? Có thể bạn bị “ép buộc” – ví dụ như driver đồ họa đột ngột ngừng hoạt động – hoặc đơn giản là bạn không muốn phụ thuộc vào công cụ riêng của từng bản phân phối như Ubuntu. Hoặc bạn đang dùng Ubuntu Server – mà đã là Server thì GUI không phải là lựa chọn lý tưởng.
Bạn không muốn rơi vào tình cảnh mất giao diện đồ họa và rồi hoang mang vì chẳng biết làm gì với dòng lệnh. Bài viết này sẽ giúp bạn vượt qua nỗi sợ đó.
Cấu hình mạng dây và không dây
Đây có lẽ là tình huống khiến người dùng mới đổ mồ hôi: bạn vừa khởi động hệ thống và phát hiện không có kết nối Internet! Làm gì bây giờ?
Câu trả lời là dùng lệnh ifconfig
. Bạn cũng nên đọc trang hướng dẫn man ifconfig
. Nhưng yên tâm, nội dung dưới đây đủ để bạn “lên mạng” nếu không gặp trường hợp phần cứng quá dị.
Trước tiên, kiểm tra card mạng có được hệ thống nhận diện hay không:
# ifconfig -a
Bạn sẽ luôn thấy ít nhất một giao diện có tên là lo, viết tắt của local (nội bộ), nhưng để có thể kết nối với mạng có dây, bạn cần thấy một giao diện dạng ethx (chẳng hạn như eth0, eth1,…). Nếu không thấy, rất có thể card mạng Ethernet của bạn chưa được nhân Linux hỗ trợ (ít nhất là tại thời điểm hiện tại) hoặc nó cần firmware bổ sung để hoạt động được. Là người dùng có hiểu biết, bạn hẳn biết mình đang dùng loại card nào, vậy nên chỉ cần tìm kiếm trên Google với từ khóa như “$loại_card Ubuntu Oneiric 11.10” hoặc tương tự, bạn sẽ dễ dàng tìm được câu trả lời xem liệu phần cứng đó có hy vọng hoạt động với Linux hay không. Trong trường hợp không tương thích, bạn có thể cân nhắc mua card mạng kết nối qua USB (phù hợp cho laptop) hoặc card PCI (thích hợp hơn cho desktop, máy chủ hoặc máy trạm). Sau khi đã có card mạng hoạt động tốt, bước tiếp theo là xác định loại kết nối bạn đang dùng và thiết lập nó. Hãy liên hệ với nhà cung cấp dịch vụ Internet (ISP), quản trị viên mạng, hoặc thậm chí là người hàng xóm rành công nghệ để biết được bạn đang dùng loại kết nối Internet nào. Chúng ta sẽ cùng bàn về các kịch bản phổ biến nhất.
Nếu bạn đang sử dụng kết nối DHCP (điều này rất phổ biến hiện nay), thì bạn gần như đã sẵn sàng mà không cần cấu hình gì thêm. DHCP là viết tắt của Dynamic Host Control Protocol, có nghĩa là hệ thống sẽ tự động nhận địa chỉ IP từ máy chủ mạng. Nếu bạn đang sử dụng Network Manager, bạn có thể kiểm tra bằng lệnh nmcli nm, và nếu nó đang hoạt động, thì bạn chẳng cần làm gì thêm. Tuy nhiên, trong phần còn lại của bài viết, chúng ta sẽ tạm gác Network Manager sang một bên để cùng khám phá phương pháp thiết lập cổ điển. Trong Ubuntu, lệnh sử dụng cho DHCP là dhclient ethx, nhưng bạn cần lưu ý rằng ở một số bản phân phối khác, người ta dùng dhcpcd thay vì dhclient. Sau khi thực hiện, khi bạn gõ lại lệnh ifconfig, bạn sẽ thấy giao diện ethx đã ở trạng thái UP và có địa chỉ IP. Bạn hoàn toàn có thể kiểm tra kết nối bằng lệnh ping đến một máy từ xa – nhưng chắc là bạn đã biết điều đó rồi. Nếu muốn thiết lập này trở nên cố định, bạn sẽ cần chỉnh sửa tập tin /etc/network/interfaces (đây là cách dành riêng cho Ubuntu/Debian):
# The loopback network interface # Do not remove! auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet dhcp
Bây giờ, khi bạn đã nắm được những kiến thức cơ bản về cách cấu hình mạng trên Linux, chúng ta sẽ cùng tìm hiểu cách thiết lập kết nối mạng với địa chỉ IP tĩnh (fixed IP). Trong trường hợp này, bạn sẽ sử dụng công cụ ifconfig, và cú pháp lệnh sẽ như sau (một lần nữa, đừng quên liên hệ với nhà cung cấp mạng của bạn để lấy các thông số cần thiết như địa chỉ IP, broadcast và gateway):
# ifconfig eth0 10.0.0.100 netmask 255.255.255.0 # route add default gw 10.0.0.1 eth0
Dòng lệnh đầu tiên sẽ thiết lập địa chỉ IP cho eth0 (đây là giao diện Ethernet có dây đầu tiên) là 10.0.0.100 với netmask là 255.255.255.0. Dòng thứ hai thiết lập default gateway (cổng mặc định) là 10.0.0.1.
Tuy nhiên, khi sử dụng IP tĩnh, bạn cần chỉ định máy chủ DNS – điều này thường không cần thiết khi dùng DHCP, vì DHCP sẽ tự động cấp DNS cho bạn.
Để thiết lập DNS, chỉ cần mở tệp /etc/resolv.conf
và thêm một dòng như sau:
nameserver x.x.x.x # if there's something wrong with your provider's DNS server, just # use 8.8.8.8, Google's free DNS
Để các thay đổi cấu hình mạng của bạn trở nên vĩnh viễn, bạn cần sửa file /etc/network/interfaces
và thay phần cấu hình của eth0 bằng đoạn sau:
auto eth0 iface eth0 inet static address 10.0.0.100 network 10.0.0.0 netmask 255.255.255.0 broadcast 10.0.0.255 gateway 10.0.0.1
Nếu bạn sử dụng kết nối PPPoE (Peer-to-Peer Protocol over Ethernet) — điều phổ biến với nhiều nhà cung cấp dịch vụ Internet (ISP) ở Mỹ và cả các nơi khác, đặc biệt là khi bạn có modem ADSL tại nhà — thì các bản phân phối dựa trên Debian như Ubuntu có một công cụ rất tiện lợi tên là pppoeconf
.
Ứng dụng này sẽ quét tìm thiết bị truy cập (access concentrator) và yêu cầu bạn nhập username/password ISP cung cấp – thế là xong. Tuy nhiên, một số nhà mạng lại khiến việc cấu hình ADSL trở nên khó khăn với người dùng hệ điều hành “không phổ biến”, nên nếu gặp rắc rối, đừng ngại gọi điện đến tổng đài hỗ trợ kỹ thuật.
Việc cấu hình mạng không dây nhìn chung đơn giản hơn mạng có dây, nhưng vẫn có một số lưu ý:
-
Giả định rằng bạn không sử dụng Network Manager (NM) – vốn là công cụ khá thông minh trong việc dò và kết nối Wi-Fi.
-
Đặc biệt nếu bạn đang dùng laptop, hãy kiểm tra xem card Wi-Fi của bạn có được hỗ trợ không bằng cách dùng lệnh
ifconfig -a
.
Nếu card hoạt động tốt, bạn sẽ thấy giao diện như wlan0
, wlp2s0
hoặc tương tự. Với mạng không dây, bạn dùng iwconfig
thay vì ifconfig
, dù cú pháp khác nhau đôi chút.
Trên máy không có Wi-Fi, bạn có thể thấy kết quả như:
lo no wireless extensions. eth0 no wireless extensions.
Đây là cách đơn giản để kiểm tra phần cứng Wi-Fi có được hỗ trợ hay không. Nếu thiết bị Wi-Fi có sẵn, bạn sẽ thấy giao diện như ath0
(thường là card Atheros), cùng thông tin như ESSID, bitrate, mode, v.v. Để quét các router Wi-Fi xung quanh, dùng:
# iwlist ath0 scan
Ví dụ kết quả sau khi quét thành công:
ath0 Scan completed : Cell 01 - Address: 00:13:46:1D:BC;0E ESSID:"xxx" Mode: Master Frequency: 2.437 GHz (Channel 6) Quality=49/94 Signal level=-46 dBm Noise level=-95 dBm Encryption key:on Bit Rate:1 Mb/s Bit Rate:2 Mb/s Bit Rate:5 Mb/s Bit Rate:6 Mb/s Bit Rate:9 Mb/s Bit Rate;11 Mb/s Bit Rate;12 Mb/s Bit Rate;18 Mb/s Bit Rate;24 Mb/s Bit Rate;36 Mb/s Bit Rate;48 Mb/s Bit Rate;54 Mb/s Extra bcn_int=100
Khi quét thấy nhiều mạng, bạn có thể kết nối trực tiếp bằng lệnh dhclient
, chỉ định tên giao diện Wi-Fi (vd: ath0
). Để chỉ định router cụ thể, dùng:
Trong mạng không dây, việc sử dụng IP tĩnh thường không cần thiết. Bạn hoàn toàn có thể dùng DHCP để nhận IP động và cấu hình qua file /etc/network/interfaces
như cách đã làm với mạng có dây.
Khởi động lại mạng
Sau khi thay đổi cấu hình mạng, bạn cần khởi động lại dịch vụ mạng để áp dụng thiết lập mới. Có hai cách:
Nếu KHÔNG sử dụng Network Manager, dùng lệnh:
# /etc/init.d networking restart
Nếu CÓ sử dụng Network Manager, dùng:
# /etc/init.d/network-manager restart
Cấu hình GRUB
Hầu hết các bản phân phối Linux (ngoại trừ một số như Gentoo và Arch) đã chuyển sang sử dụng Grub2 làm bộ nạp khởi động mặc định, bao gồm cả Ubuntu. Tuy nhiên, các thiết lập mặc định của Grub2 lại không giống nhau giữa các bản phân phối, vì vậy dưới đây là một số mẹo giúp bạn cấu hình bộ nạp khởi động theo ý muốn. Một trong những điều tôi không thích là Ubuntu mặc định ẩn menu Grub, trừ khi bạn đang dùng song song nhiều hệ điều hành. File cấu hình chính của Grub2 là /etc/default/grub
, và dòng cần chú ý là GRUB_HIDDEN_TIMEOUT=0
. Chỉ cần thêm dấu chú thích (#) trước dòng này là bạn sẽ đạt được mục đích, miễn là sau đó bạn nhớ chạy lệnh update-grub
để áp dụng thay đổi. Một cách khác là thay giá trị 0
bằng một số dương (tính bằng giây), lúc này sẽ hiển thị hình ảnh splash (không có menu), nhưng nếu bạn nhấn bất kỳ phím nào trong khoảng thời gian đó thì menu sẽ xuất hiện. Nếu để giá trị rỗng, menu sẽ hiển thị trong số giây bằng với giá trị GRUB_TIMEOUT
. Nếu bạn muốn truyền tham số cho nhân Linux, hãy chỉnh dòng GRUB_CMDLINE_LINUX
. Tuy nhiên, lưu ý rằng điều này sẽ ảnh hưởng cả chế độ khôi phục (recovery mode). Nếu bạn chỉ muốn truyền tham số cho chế độ bình thường, hãy chỉnh dòng GRUB_CMDLINE_LINUX_DEFAULT
. Nói về chế độ khôi phục, nếu bạn muốn tắt việc hiển thị dòng khởi động recovery cho từng kernel, tức là giảm một nửa số dòng kernel được Grub2 hiển thị, bạn có thể sử dụng tùy chọn boolean GRUB_DISABLE_LINUX_RECOVERY=true
.
Gợi mở và kết luận
Chúng tôi sẽ trở lại với Phần 2 trong loạt bài này, vì vẫn còn rất nhiều kiến thức hay ho và thủ thuật hấp dẫn đang chờ bạn khám phá trong thế giới Ubuntu và dòng lệnh Linux. Trong lúc chờ đợi, đừng ngại vọc vạch, thử nghiệm những gì bạn vừa học được – và đừng quên chia sẻ lại với cộng đồng nếu bạn phát hiện ra điều gì thú vị nhé!
Hy vọng bạn sẽ xây dựng được một hệ thống Linux ổn định, mạnh mẽ – chứ không phải… một phiên bản “thất thủ” vì chỉnh bootloader sai! Nhưng tôi tin rằng với tinh thần ham học hỏi, đam mê công nghệ và sự kiên nhẫn – bạn chắc chắn sẽ ngày càng làm chủ Linux tốt hơn. Đó cũng chính là lý do khiến cộng đồng Linux luôn đặc biệt và đầy cảm hứng!