Embedded Linux

Headless Raspberry Pi with SSH

Hoàn cảnh của bạn

Bạn vừa tậu được một em RPi cấu hình siêu khủng, nhưng bạn lại không có Monitor, cũng chẳng có Router, tất cả những gì còn lại của bạn là: 1 con Laptop ghẻ và một niềm tin sắt đá. Làm sao để chơi với em RPi vừa mua trong hoàn cảnh thiếu thốn này bây giờ???

Tôi có cách

Giải pháp: Headless RPi with SSH
Các bước cài đặt như sau:

1. Enable SSH on RPi

Sau khi đã ghi image Raspbian vào thẻ microSD, bạn truy cập vào thẻ nhớ (trên cái laptop ghẻ của bạn), và mở file cmdline.txt ra, bạn sẽ thấy một dòng thế này:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Đừng quan tâm và đụng chạm đến những cái có sẵn này (nghịch lung tung thì em RPi của bạn sẽ không boot lên được đâu), tiến đến cuối dòng và thêm địa chỉ IP mà bạn muốn dùng cho RPi (ở đây mình dùng ip=192.168.0.100):

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait ip=192.168.0.100

À khoan đã, mặc định thì SSH không được enable trên Raspbian, và một điều trớ trêu là nếu chúng ta không truy cập được vào RPi thì chúng ta không thể enable SSH.

May sao ai đó đã nghĩ ra một mẹo khá đơn giản, chỉ cần tạo một file trống tên là ssh trong thẻ nhớ boot là Raspbian đã biết phải enable SSH cho chúng ta.

learn_raspberry_pi_sshfile

Xong rồi chúng ta eject thẻ nhớ cẩn thận và nhét nó vào em RPi (chưa có bật nguồn vội làm gì).

2. Cài đặt địa chỉ IP cho con Laptop ghẻ và cài đặt PuTTY

Bạn vào Open Network and Sharing Center, mục Change adapter settings và double-click vào cái Local Area Connection n mà bạn có, của mình là “Local Area Connection 3”, tại sao là số 3 thì mình éo biết.

Làm đúng như trên, bạn sẽ vào một cửa sổ như sau:
LAN3status
Click vào Properties và double-click vào Internet Protocol Version 4 (TCP/IPv4), bạn sẽ mở ra cái này:

 

Đây chính là địa chỉ IP mình cài đặt cho con Laptop ghẻ của mình, các bạn có thể thay đổi địa chỉ tùy ý, miễn là nó nằm trong một network class với địa chỉ IP của RPi đã cài đặt phía trên (network class là gì thì mình éo trả lời đâu, tự googling đi).

Tới bước này chúng ta đã có: IP RPi 192.168.0.100, IP Laptop ghẻ 192.168.0.99 cùng thuộc network 192.168.0.0

OK >> OK >> Close để kết thúc cài đặt.
Bước tiếp theo, chúng ta sẽ cài đặt PuTTY cho Windows

PuTTY is an SSH and telnet client, developed originally by Simon Tatham for the Windows platform. PuTTY is open source software that is available with source code and is developed and supported by a group of volunteers.

Các bạn có thể download PuTTY tại link này.
Sau khi đã cài đặt xong, mở PuTTY lên và vào mục Session, tại phần Host Name (or IP address) chúng ta sẽ điền IP của RPi vào (như ở trên là 192.168.0.100), Port 22, tại phần Saved Sessions, chúng ta điền một cái tên nào đó (“Raspberry Pi 1” chẳng hạn) và click Save. Xong xuôi, các bạn có thể double-click vào cái “Raspberry Pi 1” đó để truy cập vào  em RPi.

putty

Lúc này, nếu may mắn, chúng ta đã có thể truy cập vào em RPi như thế này đây:

 

Lúc này bạn đã truy cập được vào em RPi. Tiếp theo chúng ta sẽ cài đặt static IP address cho RPi một cách chuẩn hơn, làm theo hướng dẫn này nhé. (các bạn có thể sử dụng lại địa chỉ IP có trong file cmdline.txt hoặc một địa chỉ mới, miễn là cùng lớp mạng với cái Laptop ghẻ của bạn là được, nhớ dùng địa chỉ IP này cho SSH).

Rồi bước cuối cùng, các bạn mở file cmdline.txt với lệnh sau:
$ sudo nano /boot/cmdline.txt
và xóa cái dòng “ip=192.168.0.100” đi nhé, Ctrl+X >> Y >> Enter để save lại.

Hỏi: Tại sao phải xóa cái dòng ip đó?
Đáp: Giả sử bạn đã mua được một cái màn hình độ phân giải fullHD, bạn éo cần SSH để sử dụng RPi nữa. Bạn cắm cable HDMI vào em RPi, bạn háo hức đăng nhập vào RPi, nhưng trên màn hình chỉ có “3 quả dâu”, bạn chờ mãi, bạn sẽ ngớ ngẩn rút nguồn rồi cắm lại, nhưng vô ích thôi, RPi chỉ dừng lại ở đó . Lý do là trong file cmdline.txt có dòng “ip=x.x.x.x”, Raspbian sẽ không start-up nếu bạn chưa kết nối RPi với một network nào đó. Giải pháp lúc này là: dùng cable mạng kết nối RPi với chiếc Laptop ghẻ của bạn và RPi sẽ khởi động bình thường với cái màn hình fullHD hoặc tháo thẻ nhớ RPi ra, cắm vào máy tính để edit lại file cmdline.txt

Kết luận

Vậy là bạn đã có thể nghịch phá em RPi với chi phí thấp nhất (không màn hình, bàn phím, chuột, Router). Nhưng chưa đủ, RPi vẫn chưa được kết nối Internet, xem bài viết này nhé.

Reference:
[1] https://pihw.wordpress.com/guides/direct-network-connection/in-a-nut-shell-direct-network-connection/
[2] https://www.raspberrypi.org/forums/viewtopic.php?t=24993
[3] https://elinux.org/RPi_cmdline.txt

One thought on “Headless Raspberry Pi with SSH

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s