1) Mục tiêu bài học
Sau bài này bạn sẽ:
- Cài Raspberry Pi OS chuẩn, boot lên chạy ổn.
- Bật SSH để quản trị từ xa (không cần cắm màn hình).
- Tối ưu cơ bản cho chạy thực tế: timezone, locale, update, swap, log.
2) Chuẩn bị
- Raspberry Pi + nguồn tốt
- microSD (hoặc SSD nếu Pi 4/5 và bạn đã chọn boot SSD)
- Laptop/PC có internet
- Cùng mạng Wi-Fi/LAN với Pi
3) Cài Raspberry Pi OS bằng Raspberry Pi Imager
- Cài Raspberry Pi Imager (Windows/macOS/Linux).
- Mở Imager:
- Choose Device: chọn đúng model Pi
- Choose OS: chọn Raspberry Pi OS Lite (64-bit) (khuyến nghị cho làm server/gateway)
- Choose Storage: chọn thẻ microSD/SSD
- Bấm biểu tượng ⚙️ (Advanced options) và thiết lập:
- ✅ Set hostname: ví dụ
iotlabs-pi - ✅ Enable SSH: chọn Use password authentication (tạm thời)
- ✅ Set username & password: ví dụ user
developer(hoặc bạn chọn) - ✅ Configure wireless LAN (nếu dùng Wi-Fi): SSID + password + chọn country
VN - ✅ Set locale settings: timezone
Asia/Bangkok(GMT+7), keyboard layout phù hợp
- Write để ghi OS vào thẻ.
Khuyến nghị: dùng OS Lite để nhẹ, ổn định, dễ chạy 24/7.
4) Boot lần đầu & SSH vào Pi
Cắm thẻ vào Pi → cấp nguồn → đợi 1–2 phút.
Cách tìm IP nhanh
- Vào router xem danh sách DHCP clients, hoặc
- Dùng mDNS:
- Thử SSH:
ssh developer@iotlabs-pi.local
- Thử SSH:
Nếu không được, dùng IP:
ssh developer@<IP_CUA_PI>
5) Thiết lập cơ bản sau khi vào được SSH
5.1 Update hệ thống
sudo apt update
sudo apt -y full-upgrade
sudo reboot
Sau reboot, SSH lại vào Pi.
6) Cấu hình timezone & locale (giờ Việt Nam)
Timezone
sudo timedatectl set-timezone Asia/Bangkok
timedatectl
Locale
sudo raspi-config
Vào:
- Localisation Options
- Locale: chọn
en_US.UTF-8(khuyến nghị cho hệ thống dev/ops) và nếu bạn muốn tiếng Việt thì bật thêmvi_VN.UTF-8 - Keyboard
- WLAN Country:
VN
- Locale: chọn
7) Bật NTP & kiểm tra giờ chuẩn
timedatectl status
Bạn nên thấy NTP service: active và time đúng GMT+7.
8) Tối ưu swap (tuỳ mục tiêu)
Khi nào nên tăng swap?
- Pi Zero 2 W / RAM thấp, có build code nhẹ, chạy vài service.
Thiết lập swap (nhẹ, an toàn)
Mở cấu hình:
sudo nano /etc/dphys-swapfile
Tìm dòng:
CONF_SWAPSIZE=100(ví dụ)
Đổi thành:- Zero 2 W:
CONF_SWAPSIZE=512 - Pi 4/5 (4GB+): thường để
100–512là đủ
Áp dụng:
sudo systemctl restart dphys-swapfile
free -h
Lưu ý: swap trên microSD có thể làm “mòn thẻ” nếu swap nhiều. Nếu bạn chạy nặng/24-7 → ưu tiên SSD.
9) Tối ưu log để tránh đầy đĩa (rất quan trọng khi chạy lâu)
Kiểm tra journald đang dùng bao nhiêu:
journalctl --disk-usage
Giới hạn dung lượng log (khuyến nghị):
sudo nano /etc/systemd/journald.conf
Bật/đặt các dòng sau (nếu có # thì bỏ #):
SystemMaxUse=200MSystemMaxFileSize=50MRuntimeMaxUse=100M
Restart:
sudo systemctl restart systemd-journald
journalctl --disk-usage
10) Tạo “baseline” tiện quản trị
10.1 Cài tool hay dùng
sudo apt -y install git curl wget unzip htop net-tools iotop ufw
10.2 Kiểm tra dung lượng và nhiệt
df -h
vcgencmd measure_temp 2>/dev/null || true
11) Checklist debug nhanh
- SSH không vào được:
- Sai Wi-Fi SSID/pass trong Imager
- Pi chưa cùng mạng
- Router chặn mDNS (
*.local) → dùng IP
- Boot lâu/treo:
- Nguồn yếu / cáp kém
- Thẻ microSD lỗi (đổi thẻ tốt hơn)
- Giờ sai:
- timezone chưa set
- NTP chưa active
12) Bài tập nâng cấp
- Đặt hostname theo chuẩn dự án (ví dụ:
iotlabs-gw-01). - Giới hạn journald để log không vượt 200MB.
- Ghi lại IP/hostname + user/pass vào nơi quản lý (password manager).


