IoTLabs

Nghiên cứu, Sáng tạo và Thử nghiệm

Series: Raspberry Pi OS – Bài 7: Hiểu config.txt và các cấu hình hệ thống quan trọng

Phần 2 — Quản lý hệ điều hành và công cụ nền tảng

Sau khi đã làm quen với raspi-config, bạn sẽ sớm gặp một file rất quan trọng trên Raspberry Pi: config.txt. Đây là file cấu hình mức thấp của hệ thống, được Raspberry Pi dùng từ rất sớm trong quá trình khởi động. Tài liệu chính thức mô tả rằng Raspberry Pi không dùng BIOS kiểu PC thông thường; thay vào đó, thiết bị dùng file config.txt, và GPU sẽ đọc file này trước khi Arm CPU và Linux khởi tạo. Trên Raspberry Pi OS hiện nay, hệ thống tìm file này trong phân vùng boot tại /boot/firmware/config.txt.

Mục tiêu sau bài học

Sau khi hoàn thành bài này, bạn nên đạt được các mục tiêu sau:

  • hiểu config.txt là gì và vì sao nó quan trọng
  • biết file config.txt nằm ở đâu trên Raspberry Pi OS hiện nay
  • hiểu mối liên hệ giữa raspi-configconfig.txt
  • biết những nhóm cấu hình nào thường gặp và đáng quan tâm
  • phân biệt được cấu hình còn phù hợp với Raspberry Pi OS mới và cấu hình đã mang tính legacy
  • biết khi nào nên sửa config.txt và khi nào không nên đụng vào

config.txt là gì?

config.txt là file cấu hình boot của Raspberry Pi. Bạn có thể xem nó như một nơi chứa các thiết lập phần cứng và khởi động mà firmware đọc rất sớm, trước cả khi hệ điều hành Linux chạy đầy đủ. Vì vậy, đây không phải là một file “Linux app settings” thông thường, mà là file có tác động trực tiếp đến cách Raspberry Pi khởi động và cấu hình phần cứng nền.

Điều này giải thích vì sao config.txt có sức mạnh khá lớn. Chỉ vài dòng thêm hoặc bớt trong file này có thể ảnh hưởng tới:

  • boot behavior
  • giao diện phần cứng
  • overlay phần cứng
  • camera hoặc display detection
  • một số hành vi firmware

config.txt nằm ở đâu?

Với Raspberry Pi OS hiện nay, vị trí cần nhớ là:

/boot/firmware/config.txt

Tài liệu chính thức ghi rất rõ điều này, đồng thời cũng lưu ý rằng trước Raspberry Pi OS Bookworm, phân vùng boot thường được đặt tại /boot/. Nghĩa là nếu bạn đọc các bài cũ, bạn sẽ thường thấy người ta hướng dẫn sửa /boot/config.txt, nhưng với các bản Raspberry Pi OS mới thì đường dẫn chuẩn cần nhớ là /boot/firmware/config.txt.

Vì sao nhiều hướng dẫn cũ làm bạn bị nhầm?

Lý do rất đơn giản: nhiều bài viết trên mạng được viết từ thời Bullseye hoặc cũ hơn. Raspberry Pi documentation đã nêu rõ sự thay đổi vị trí file kể từ Bookworm. Ngoài ra, thảo luận trên Raspberry Pi Forums cũng xác nhận rằng từ khi Raspberry Pi OS Bookworm ra mắt, config.txt thực tế nằm ở /boot/firmware/config.txt; còn /boot/config.txt ở các bản mới chỉ còn vai trò chuyển hướng hoặc placeholder trong một số trường hợp, không nên xem là file chính để sửa nữa.

Vì vậy, nếu bạn đang dùng Raspberry Pi OS mới, hãy nhớ một quy tắc ngắn:

  • bài cũ nói /boot/config.txt
  • thực tế mới nên kiểm tra /boot/firmware/config.txt

raspi-configconfig.txt liên quan gì với nhau?

Tài liệu configuration chính thức của Raspberry Pi ghi rõ rằng raspi-config giúp bạn cấu hình Raspberry Pi, và các thay đổi từ raspi-config sẽ sửa /boot/firmware/config.txt cùng các file cấu hình khác.

Điều đó có nghĩa là:

  • raspi-config là giao diện menu dễ dùng
  • config.txt là một trong các file nền phía sau
  • khi bạn bật một số interface hoặc đổi một số tùy chọn trong raspi-config, rất có thể file config.txt đã bị chỉnh tương ứng

Với người mới, đây là cách hiểu rất quan trọng. Bạn không nên nghĩ raspi-configconfig.txt là hai thế giới tách rời. Thực tế, nhiều trường hợp raspi-config chỉ là cách an toàn hơn để chỉnh đúng file cấu hình phía dưới.

Khi nào bạn sẽ phải đụng tới config.txt?

Không phải ngày nào bạn cũng cần mở file này. Nhưng bạn thường sẽ đụng tới nó trong các trường hợp như:

  • thêm dtoverlay cho phần cứng
  • thêm dtparam cho một số interface
  • xử lý một số cấu hình camera, display, hoặc phần cứng đặc biệt
  • làm việc với bo mạch hoặc module cần firmware-level configuration
  • debug boot behavior ở mức thấp hơn

Nếu nhu cầu của bạn chỉ là đổi hostname, bật SSH, đổi timezone, bật I2C/SPI/UART theo kiểu thông dụng, thì thường raspi-config là đủ. Còn nếu bạn bắt đầu dùng hardware overlays hoặc điều chỉnh sâu hơn, lúc đó config.txt mới trở nên quan trọng hơn.

Cấu trúc cơ bản của config.txt

config.txt là một file text. Nó thường chứa:

  • comment
  • các dòng cấu hình kiểu key=value
  • các dòng dtoverlay=...
  • các dòng dtparam=...
  • đôi khi có các conditional section như [all], [pi4], [cm4] trong một số cấu hình

Ví dụ đơn giản:

# Enable I2C
dtparam=i2c_arm=on

# Enable SPI
dtparam=spi=on

# Example overlay
dtoverlay=vc4-kms-v3d

Trên forum và tài liệu chính thức, Raspberry Pi cũng mô tả các dòng cấu hình theo kiểu option nhận giá trị integer hoặc string, còn comment bắt đầu bằng # sẽ bị bỏ qua.

dtparamdtoverlay là gì?

Đây là hai khái niệm rất hay gặp.

dtparam

dtparam dùng để bật hoặc tinh chỉnh các tham số device tree có sẵn. Ví dụ:

dtparam=i2c_arm=on
dtparam=spi=on

Kiểu này thường dùng khi bạn muốn bật các interface phần cứng phổ biến.

dtoverlay

dtoverlay dùng để nạp một overlay cho phần cứng cụ thể. Đây là cách rất thường gặp khi bạn gắn thêm module hoặc bo mạch cần được kernel nhận diện theo cấu hình riêng.

Ví dụ dạng chung:

dtoverlay=<overlay-name>

Các thảo luận gần đây trên Raspberry Pi Forums cũng cho thấy dtoverlay vẫn là cách thực tế để bật các module phần cứng bổ sung trong config.txt.

Hiểu ngắn gọn:

  • dtparam = bật/chỉnh tham số
  • dtoverlay = nạp cấu hình phần cứng bổ sung

Những cấu hình quan trọng mà người mới nên biết

Người mới chưa cần thuộc quá nhiều option. Chỉ cần biết các nhóm quan trọng sau là đã đủ dùng khá lâu.

1. Hardware interface settings

Đây là nhóm liên quan đến I2C, SPI, UART và các interface phần cứng khác.

Ví dụ:

dtparam=i2c_arm=on
dtparam=spi=on

Các cấu hình này rất hữu ích cho maker và người học IoT, đặc biệt khi làm việc với cảm biến, màn hình nhỏ, ADC, RFID, GPS hoặc MCU ngoài.

2. Device overlays

Khi bạn dùng camera, HAT, module âm thanh, module màn hình, relay board đặc biệt, hoặc một phần cứng nào đó yêu cầu overlay, bạn sẽ thường thêm dtoverlay=... vào config.txt.

3. Boot-related low-level settings

Một số hành vi boot hoặc phần cứng nền có thể được điều khiển từ config.txt. Nhưng đây cũng là vùng dễ gây lỗi nếu sửa bừa.

4. Detection-related settings

Một số option như camera_auto_detect, display_auto_detect cũng được thảo luận trong tài liệu và forum kỹ thuật như các cấu hình hợp lệ trong config.txt.

Những gì đã “legacy” và không nên tin mù

Đây là phần rất quan trọng.

Raspberry Pi có hẳn một trang tài liệu riêng cho Legacy config.txt options, và trang đó nói rất rõ rằng các option legacy này không còn được Raspberry Pi OS Bookworm dùng đến và không còn được hỗ trợ chính thức nữa. Chúng chủ yếu liên quan đến phần mềm cũ, driver đồ họa cũ, các thiết lập đã deprecated, hoặc các trường hợp rất đặc biệt.

Điều này có nghĩa là nếu bạn copy một đoạn config.txt rất cũ từ blog nào đó, có khả năng:

  • nó không còn tác dụng
  • nó chỉ áp dụng cho OS cũ
  • nó có thể khiến bạn mất thời gian debug vì tưởng “đã set rồi mà sao không chạy”

Một ví dụ điển hình là nhiều thiết lập video kiểu cũ. Các thảo luận gần đây trên Raspberry Pi Forums nhấn mạnh rằng với các bản Bullseye, Bookworm và Trixie dùng KMS video driver, nhiều legacy video settings trong config.txt sẽ không còn tác dụng nữa.

Vì sao nhiều thiết lập display trong config.txt không còn hiệu quả như trước?

Raspberry Pi OS hiện đại dùng KMS driver cho đồ họa trong nhiều tình huống phổ biến. Vì vậy, không phải mọi thiết lập màn hình kiểu cũ trong config.txt vẫn còn tác dụng. Trên forum, các kỹ sư và moderator Raspberry Pi đã nhiều lần giải thích rằng các thiết lập video legacy trong config.txt có thể bị KMS bỏ qua, và trong một số trường hợp việc chỉnh độ phân giải cần chuyển sang kernel command line hoặc cách cấu hình khác.

Bài học rút ra là:

  • không phải mọi thứ “liên quan màn hình” đều nên chỉnh trong config.txt
  • cần xem option đó có còn phù hợp với Raspberry Pi OS mới hay không
  • nếu gặp bài hướng dẫn cũ, phải kiểm tra lại với tài liệu hiện hành

Có nên sửa config.txt bằng tay không?

Có, nhưng chỉ khi bạn biết mình đang làm gì.

Bạn có thể sửa bằng editor như:

sudo nano /boot/firmware/config.txt

Nhưng trước khi sửa, rất nên backup:

sudo cp /boot/firmware/config.txt /boot/firmware/config.txt.bak

Vì đây là file cấu hình boot mức thấp, sửa sai có thể làm phần cứng hoạt động không đúng, hoặc làm bạn khó phân biệt lỗi đến từ đâu. Tài liệu chính thức cũng nhấn mạnh tầm quan trọng đặc biệt của file này trong chuỗi khởi động.

Khi nào nên ưu tiên raspi-config hơn là sửa tay?

Bạn nên ưu tiên raspi-config nếu việc cần làm là:

  • bật SSH
  • bật I2C, SPI, Serial theo cách thông dụng
  • chỉnh locale, timezone, keyboard
  • đổi hostname
  • chỉnh boot behavior ở mức cơ bản

raspi-config đã được Raspberry Pi thiết kế để sửa đúng file cấu hình phù hợp phía sau, đây thường là cách an toàn hơn cho người mới.

Những lỗi thường gặp khi sửa config.txt

1. Sửa nhầm file cũ

Nhiều người vẫn sửa /boot/config.txt theo thói quen đọc blog cũ, trong khi Raspberry Pi OS mới dùng /boot/firmware/config.txt.

2. Copy cấu hình từ bài hướng dẫn quá cũ

Nhiều option video hoặc graphics cũ đã thành legacy và có thể không còn tác dụng trên Bookworm hoặc Trixie.

3. Chỉnh quá nhiều thứ một lúc

Nếu bạn thêm quá nhiều dòng rồi hệ thống lỗi, sẽ rất khó biết dòng nào là thủ phạm.

4. Không backup trước khi sửa

Đây là lỗi rất cơ bản nhưng lại rất hay gặp.

5. Nghĩ rằng mọi cấu hình phần cứng đều nằm trong config.txt

Không đúng. Một số thứ hiện đại hơn có thể nằm ở chỗ khác, hoặc được kernel / userspace xử lý theo cách khác.

Một quy tắc an toàn khi làm việc với config.txt

Hãy dùng quy tắc này:

  • sửa ít một
  • backup trước
  • reboot rồi test
  • nếu lỗi, quay lại bản backup
  • không copy nguyên khối cấu hình cũ mà không hiểu từng dòng

Đây là cách rất thực tế để tránh việc “đụng một phát là hỏng cả buổi”.

Kết luận

config.txt là file cấu hình boot rất quan trọng của Raspberry Pi. Nó được đọc trước cả khi Linux khởi động đầy đủ, và trên Raspberry Pi OS hiện nay, file chuẩn cần nhớ là /boot/firmware/config.txt. raspi-config thường sẽ chỉnh file này và các file liên quan ở phía sau, nên người mới nên hiểu mối liên hệ giữa hai công cụ thay vì xem chúng như hai thứ tách biệt. Đồng thời, bạn cũng cần cẩn thận với các hướng dẫn cũ, vì Raspberry Pi đã xác nhận nhiều config.txt options mang tính legacy không còn được Bookworm dùng và không còn được hỗ trợ chính thức.

Bài tiếp theo

Bài 8: Quản lý user, password, quyền sudo và bảo mật cơ bản