IoTLabs

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

Series: Raspberry Pi OS – Bài 16: Các thư mục quan trọng trên Raspberry Pi OS mà bạn nên biết

Khi mới dùng Raspberry Pi OS, rất nhiều người bị rối vì không biết nên tìm file ở đâu: cấu hình boot nằm chỗ nào, app cá nhân nên đặt ở đâu, log ở đâu, file cấu hình hệ thống ở đâu. Hiểu được vài thư mục cốt lõi sẽ giúp bạn dùng Raspberry Pi tự tin hơn rất nhiều, đặc biệt khi làm headless, debug service, sửa cấu hình, hoặc triển khai project thật. Với Raspberry Pi OS hiện nay, một chi tiết rất quan trọng là file config.txt chuẩn nằm ở /boot/firmware/config.txt, không còn nên mặc định nghĩ là /boot/config.txt như nhiều bài cũ nữa.

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 cấu trúc thư mục cơ bản của Raspberry Pi OS
  • biết thư mục nào dành cho file cá nhân, thư mục nào dành cho file hệ thống
  • biết nơi thường gặp của file boot, file cấu hình, log và ứng dụng
  • biết chỗ nên đặt project của mình để dễ quản lý
  • tránh được việc sửa nhầm file ở sai vị trí
  • có một “bản đồ hệ thống” đủ dùng cho các bài tiếp theo

Hiểu nhanh về cấu trúc filesystem trên Linux

Raspberry Pi OS là Linux, nên mọi thứ nằm trong một cây thư mục thống nhất bắt đầu từ thư mục gốc là:

/

Trên Linux, đây gọi là root filesystem. Cộng đồng Raspberry Pi cũng giải thích rằng toàn bộ thiết bị lưu trữ và mount point đều xuất hiện bên dưới /, còn các vùng như boot partition hay USB drive chỉ là những điểm được mount vào trong cây thư mục này.

1. / — thư mục gốc của toàn hệ thống

Dấu / là điểm bắt đầu của toàn bộ filesystem. Từ đây, bạn sẽ đi xuống các thư mục như:

  • /home
  • /etc
  • /var
  • /usr
  • /boot
  • /boot/firmware

Người mới rất hay nhầm giữa “root directory” (/) và “root user” (root). Đây là hai khái niệm khác nhau. Root directory là thư mục gốc của hệ thống; còn root user là tài khoản quản trị cao nhất. Trong thực tế, user thường không nên đặt file cá nhân trực tiếp vào /.

2. /home — nơi ở của user

Đây là thư mục rất quan trọng với người dùng hằng ngày. Mỗi user thường có một thư mục riêng bên trong /home.

Ví dụ:

/home/quan
/home/pi

Trên Raspberry Pi và Linux nói chung, thư mục home là nơi phù hợp để bạn đặt:

  • source code cá nhân
  • script
  • tài liệu
  • file tải về
  • cấu hình mức user

Trên forum Raspberry Pi, giải thích rất rõ rằng home directory của một user là nơi user đó có toàn quyền sử dụng, trong khi user thường không nên ghi linh tinh vào /.

3. /home/<user> — nơi nên đặt project của bạn

Nếu bạn đang học Raspberry Pi, đây thường là nơi hợp lý nhất để đặt project cá nhân.

Ví dụ:

/home/quan/projects
/home/quan/iot-labs
/home/quan/python-apps

Lý do đơn giản là:

  • dễ quản lý
  • ít đụng chạm file hệ thống
  • user của bạn thường có quyền ghi đầy đủ
  • thuận tiện khi dùng Git, editor, SSH

Với người mới, đây là nơi nên ưu tiên dùng trước khi nghĩ tới các vị trí phức tạp hơn như /opt hoặc /usr/local. Raspberry Pi community cũng thường coi /home/<user> là vị trí mặc định hợp lý cho file người dùng.

4. /boot/firmware — nơi chứa file boot quan trọng

Đây là một trong những thư mục quan trọng nhất trên Raspberry Pi OS mới. Tài liệu chính thức của Raspberry Pi xác nhận config.txt hiện được tìm tại:

/boot/firmware/config.txt

raspi-config cũng chỉnh vào đường dẫn này cùng các file cấu hình liên quan. Raspberry Pi cũng lưu ý rõ rằng trước Bookworm, nhiều người quen với /boot/, nên đây là điểm rất dễ nhầm khi đọc tutorial cũ.

Trong thư mục này, bạn sẽ thường gặp:

  • config.txt
  • các file boot liên quan
  • một số cấu hình firmware/bootloader tùy model

5. /boot/firmware/config.txt — file cấu hình boot rất quan trọng

Dù đây là một file chứ không phải thư mục, nó xứng đáng được nhớ riêng. Raspberry Pi documentation mô tả config.txt là file được firmware đọc rất sớm trong quá trình boot, trước khi Linux chạy đầy đủ. Các thay đổi trong file này chỉ có hiệu lực sau khi reboot.

Bạn sẽ gặp file này khi:

  • bật overlay phần cứng
  • chỉnh dtparam
  • xử lý một số cấu hình display/camera
  • debug boot behavior

Với người mới, nên nhớ vị trí của nó trước, còn chỉnh tay thì nên làm cẩn thận.

6. /etc — nơi chứa cấu hình hệ thống

/etc là nơi chứa rất nhiều file cấu hình ở mức hệ thống. Trên Raspberry Pi OS, bạn sẽ thường đụng tới thư mục này khi:

  • cấu hình service
  • kiểm tra user và nhóm
  • sửa network config theo một số workflow
  • xem file cấu hình của các package đã cài

Đây là vùng dành cho hệ thống, không phải chỗ lý tưởng để đặt source code cá nhân hay tài liệu học tập. Trên forum Raspberry Pi, khi bàn về chỗ để config cho phần mềm tự viết, nhiều người cũng phân biệt rõ rằng /etc là khu vực cấu hình hệ thống, còn local app có thể dùng hướng khác như /usr/local/etc hoặc thư mục riêng của app tùy trường hợp.

Một số file nổi tiếng bạn có thể nghe đến trong tương lai:

  • /etc/passwd
  • /etc/hostname
  • /etc/fstab
  • file cấu hình của nhiều service

7. /var — nơi chứa dữ liệu thay đổi theo thời gian

/var thường là nơi dành cho dữ liệu “biến động” của hệ thống, như log, cache, queue, state, spool và các dữ liệu runtime khác. Nếu bạn bắt đầu làm việc với service, log hoặc package manager, bạn sẽ sớm gặp nhóm thư mục này.

Một thư mục rất đáng nhớ là:

/var/log

vì đây là nơi nhiều chương trình truyền thống ghi log dạng file. Ngoài ra, với systemd journal, bạn cũng có thể gặp:

/var/log/journal

nếu journal được cấu hình lưu persistent. Tài liệu journald.conf cho biết hành vi lưu trữ journal phụ thuộc vào cấu hình Storage=.

8. /var/log — nơi nên nhớ khi debug

Dù trong các bài trước bạn đã học journalctl, thư mục /var/log vẫn rất đáng nhớ vì nhiều phần mềm vẫn ghi log hoặc file liên quan tại đây. Khi debug trên Raspberry Pi, bạn thường sẽ nghĩ đến hai hướng:

  • dùng journalctl
  • kiểm tra thêm các file dưới /var/log

Đây là thư mục quan trọng khi hệ thống chạy lâu dài hoặc có nhiều service khác nhau.

9. /usr — nơi chứa phần lớn chương trình và dữ liệu đi kèm

/usr thường chứa:

  • binary
  • library
  • dữ liệu đi kèm của package
  • tài nguyên dùng chung của hệ thống

Bạn không cần nhớ hết cấu trúc của nó ngay từ đầu, nhưng nên hiểu rằng phần lớn software cài qua APT sẽ rải nội dung vào các khu vực bên dưới /usr theo chuẩn của package manager, chứ không phải mọi thứ nằm trong home directory của bạn. Raspberry Pi documentation về APT và package management ngầm phản ánh mô hình này khi quản lý software ở cấp hệ thống.

Một số nhánh thường nghe thấy:

  • /usr/bin
  • /usr/lib
  • /usr/share

10. /usr/local — nơi hợp lý hơn cho phần mềm tự cài thủ công

Nếu bạn có phần mềm tự viết hoặc cài thêm ngoài package chuẩn, /usr/local là một hướng hợp lý hơn /usr. Trên forum Raspberry Pi, khi thảo luận về “đặt config file ở đâu”, có ý kiến khuyên rằng config cho local software nên đi dưới /usr/local/etc thay vì trộn bừa vào /etc hoặc các vị trí hệ thống khác.

Bạn chưa cần dùng ngay thư mục này ở mức mới học, nhưng nên biết nó tồn tại vì sau này khi app của bạn “nghiêm túc” hơn, đây là khu vực đáng cân nhắc.

11. /opt — nơi hay dùng cho ứng dụng cài riêng theo thư mục độc lập

/opt thường được dùng cho những phần mềm hoặc bộ ứng dụng cài riêng, muốn nằm gọn trong một thư mục độc lập. Trong một số trao đổi cộng đồng Raspberry Pi, /opt cũng được nhắc như một lựa chọn cho local software thay vì trộn vào các vị trí hệ thống chuẩn của distro.

Ví dụ bạn có thể thấy kiểu:

/opt/myapp
/opt/iotlabs-agent

Với người mới, chưa cần ưu tiên dùng /opt sớm, nhưng nên biết đây là một lựa chọn hợp lý hơn là đặt app “ngẫu hứng” vào các nơi không rõ mục đích.

12. /tmp — nơi cho file tạm

/tmp là nơi chứa file tạm thời. Bạn có thể dùng nó cho:

  • file trung gian
  • dữ liệu test ngắn hạn
  • output không cần giữ lâu

Nhưng không nên dùng /tmp cho dữ liệu quan trọng hay project chính, vì mục tiêu của thư mục này là phục vụ dữ liệu tạm thời.

13. /root — home của root user

Đây là nơi dễ nhầm với /. Thư mục:

/root

home directory của root user, không phải thư mục gốc của hệ thống. Trên Linux và trong trao đổi cộng đồng Raspberry Pi, root user có home riêng ở /root, còn user thường sẽ có home dưới /home/<user>.

Với người mới, chỉ cần nhớ:

  • / = gốc của hệ thống
  • /root = thư mục riêng của root user

Nên đặt code, script, app của mình ở đâu?

Với đa số người học và người làm project cá nhân trên Raspberry Pi, lựa chọn tốt nhất thường là:

/home/<user>/projects

hoặc một cấu trúc tương tự trong home directory.

Ví dụ:

/home/quan/projects/raspi-labs
/home/quan/projects/mqtt-gateway
/home/quan/scripts

Cách này đơn giản, an toàn và dễ backup. Chỉ khi bạn đã hiểu rõ hơn về packaging, local deployment hoặc service layout thì mới nên cân nhắc các khu vực như /opt hoặc /usr/local.

Một bản đồ nhớ nhanh

Bạn có thể nhớ như sau:

  • / → gốc toàn hệ thống
  • /home → nơi ở của user
  • /home/<user> → nơi hợp lý cho project cá nhân
  • /boot/firmware → boot files quan trọng trên Raspberry Pi OS mới
  • /boot/firmware/config.txt → file boot config rất quan trọng
  • /etc → cấu hình hệ thống
  • /var → dữ liệu thay đổi, log, state
  • /var/log → log files
  • /usr → phần lớn chương trình và tài nguyên package
  • /usr/local → phần mềm cài local/thủ công
  • /opt → ứng dụng cài riêng theo thư mục độc lập
  • /tmp → file tạm
  • /root → home của root user

Những lỗi thường gặp

1. Sửa nhầm /boot/config.txt

Đây là lỗi rất phổ biến khi đọc tài liệu cũ. Với Raspberry Pi OS mới, file chuẩn cần nhớ là /boot/firmware/config.txt.

2. Đặt project cá nhân vào /

User thường không nên đặt file làm việc trực tiếp ở root directory. Home directory mới là nơi phù hợp hơn.

3. Nhầm giữa //root

Đây là nhầm lẫn rất cơ bản nhưng rất hay gặp.

4. Không phân biệt file hệ thống và file cá nhân

Dẫn tới sửa nhầm chỗ, backup khó, hoặc deploy lộn xộn.

5. Copy tutorial cũ mà không kiểm tra bản Raspberry Pi OS đang dùng

Đặc biệt đúng với các đường dẫn liên quan boot và cấu hình.

Checklist sau bài học

[ ] Biết / là gì
[ ] Biết /home/<user> là nơi nên đặt project cá nhân
[ ] Biết /boot/firmware/config.txt là file boot config quan trọng
[ ] Biết /etc là nơi cấu hình hệ thống
[ ] Biết /var/log là nơi thường gặp log file
[ ] Biết phân biệt /root với /

Kết luận

Bạn không cần thuộc toàn bộ cây thư mục Linux để dùng Raspberry Pi tốt hơn. Chỉ cần nhớ đúng vài vị trí cốt lõi là đã đủ giảm rất nhiều nhầm lẫn: /home/<user> cho project cá nhân, /etc cho cấu hình hệ thống, /var/log cho log, và đặc biệt /boot/firmware/config.txt cho cấu hình boot trên Raspberry Pi OS mới. Hiểu được “bản đồ” này sẽ giúp các bài tiếp theo về phần cứng, service, automation và triển khai project trở nên dễ hơn nhiều.

Bài tiếp theo

Bài 17: Bật I2C, SPI, UART trên Raspberry Pi đúng cách