Giả lập Raspberry Pi trên OS X và Ubuntu

Giả lập Raspberry Pi

Tại sao phải giả lập Raspberry Pi?

Nếu bạn muốn chạy một đoạn code/ứng dụng trên Raspberry Pi mà không muốn lúc nào cũng phải vác kè kè một em bên cạnh thì bạn nên thử giải pháp giả lập Raspberry Pi ngay trên desktop/laptop.

Việc phát triển ứng dụng/testing với một Raspberry Pi ảo cũng có phần tiện lợi hơn khi bạn không còn phải làm tùm lum thứ như:

  • Cấp nguồn Raspberry Pi.
  • Setup wifi/ethernet, ip tĩnh/động, kết nối máy tính vào cùng mạng LAN, dò tìm IP…
  • Nếu cần tương tác trên môi trường Graphic thì bạn còn phải kết nối với màn hình…

Trong khi đó bạn chỉ cần 1 câu lệnh start Raspberry Pi ảo và 1 câu lệnh ssh vào con Raspberry Pi ảo đó là bạn đã có thể tự do vọc vạch các kiểu bạn muốn. Và hơn nữa, bạn muốn có bao nhiêu con Raspberry Pi cũng được, tùy thuộc vào laptop/desktop của bạn “chơi” được tới mức nào.

Một vài ứng dụng bạn có thể làm với con Raspberry Pi ảo:

  • Chạy thử code python
  • Build code C/C++/Golang thành file bin. Những file bin này có thể chạy tốt trên các con Raspberry Pi thật.
  • Customize image cho Raspberry Pi (tối ưu hóa, thêm xóa sửa, tạo image mẫu…). Và nếu bạn burn những image đã customize này lên những con Raspberry Pi thật thì chúng vẫn chạy tốt.

Giả lập Raspberry Pi với QEMU

Sau một thời gian mày mò tìm kiếm thì cách giả lập Raspberry Pi trên các máy ảo quen thuộc như VMware, Virtualbox, Parallels… thì mình phát hiện ra QEMU. QEMU, VMware và Virtualbox đều giống nhau ở chỗ giúp ta mô phỏng một máy tính trên một máy tính khác nhưng VMware, Virtualbox lại không thể giả lập được bộ vi xử lý ARM (CPU của Raspberry Pi). Với một cơ chế khác biệt, QEMU lại có thể hỗ trợ giả lập nhiều loại Processor: ARM, PowerPC, x86…

Nếu bạn muốn nhanh chóng giả lập Raspberry Pi mà không cần tuỳ chỉnh gì thì có thể thực hiện theo cách 1. Còn nếu bạn muốn tìm hiểu chút xíu để có thể custom một image Raspberry Pi gốc cho trình giả lập QEMU thì hãy chuyển đến cách 2.

Cách 1: Mì ăn liền

Bạn cần làm 3 việc sau:

  • Cài đặt Qemu.
  • Downoad Raspberry Pi image và Kernel.
  • Chạy lệnh.

Cài đặt QEMU

Trên MAC OSX:

Trên Ubuntu:

Download Raspbian image & Kernel

Khi download về, bạn nhớ unzip và bỏ chúng vào cùng thư mục.

Chạy giả lập Raspberry Pi

cd đến folder chứa kernel và image, và chạy lệnh sau:

Xong!

Ngay khi bạn chạy lệnh trên, một cửa số giao diện của QEMU sẽ mở tra. Chờ khoảng 1 phút để con Raspberry Pi ảo của bạn khởi động xong, bạn sẽ thấy trên màn hình thế này:

Giao diện QEMU

Trên giao diện terminal bạn dùng để start QEMU và trên cửa sổ QEMU đều cho phép bạn login vào con Raspberry Pi ảo này. Ngoài ra bạn còn một lựa chọn khác đó là ssh vào Raspberry Pi ảo với dòng lệnh sau:

Đăng nhập vào Raspberry Pi giả lập

Tài khoản login mặc định ban đầu của Raspberry Pi:

user: pi

password: raspberry

Cách 2: Vừa làm vừa vọc

Cài đặt QEMU

Trên MAC OSX:

Trên Ubuntu:

Download Raspbian image & Kernel

Lưu ý: Ở đây tôi sử dụng bản Raspbian Wheezy 2015-05-05, nếu bạn sử dụng các phiên bản khác, kết quả có thể khác bên dưới.

Bạn nhớ unzip và để chúng vào cùng thư mục.

Tạo giả lập Raspberry Pi

Đầu tiên là chạy lệnh này để config vài thứ:

Nếu tên image không phải là raspbian_latest.img thì bạn nhớ đổi tên image trong câu lệnh trên nhé.

Bạn sẽ thấy cửa sổ QEMU mở lên, nó chạy đến đoạn này:

Cửa sổ QEMU

Bạn đang login với quyền root rồi đấy. Giờ thì chúng ta cần config một xíu để QEMU “nhận mặt ổ cứng” của con Pi ảo. Bạn chạy 5 lệnh sau: 

Giải thích:

  • Lệnh 1: Chúng ta mở file /etc/ld.so.preload và thêm dấu # vào trước mỗi dòng
  • 3 lệnh tiếp theo: Kết quả của 3 lệnh này là file /etc/udev/rules.d/90-qemu.rules được tạo ra với nội dung như sau:
  • Lệnh cuối cùng: “tắt” raspberry

Giờ chúng ta sẽ khởi động QEMU lần 2. Lần này mình dùng lệnh sau, hơi khác lệnh lúc nãy chút xíu:

Và dùng lệnh:

để ssh vào Raspberry Pi hoặc tương tác trực tiếp từ cửa sổ QEMU. Nếu bạn đang thao tác trong cửa sổ QEMU, bạn có thể vào chế độ graphic bằng cách chạy lệnh sau:

Khi bạn đang ở trong con Pi ảo, bạn có thể thử kiểm tra dung lượng “ổ cứng” của “Raspberry Pi ảo” với lệnh

df -h

Nếu bạn muốn tăng dung lượng “ổ cứng” cho Raspberry Pi ảo thì:

  • Tắt con Pi ảo này
  • Chạy lệnh sau trong terminal
  • Khởi động lại con Pi ảo của bạn

Kinh nghiệm + đánh giá:

  • Đã thử thành công với  2015-02-16-raspbian-wheezy.img2015-05-05-raspbian-wheezy.img trên OS X YosemiteUbuntu 14.04. Nếu bạn sử dụng các image khác và trên phiên bản hệ điều hành khác thì có thể quá trình giả lập Raspberry Pi không thành công.
  • Kernel-qemu được compile cho CPU ARM1176, tương đương với Raspberry Pi A/B/A+/B+/zero/Computer-module.
  • QEMU không mô phỏng GPU. Nếu bạn thử dùng omxplayer, bạn sẽ thấy lỗi:

QEMU không hỗ trợ GPU

  • RAM cho con Raspberry Pi ảo được ấn định ở mức 256MB. Mình đã thử tìm cách nâng mức này lên nhưng vẫn chưa thành công.
  • Trong giao diện graphic, nhiều lúc thanh taskbar không hiển thị được, hiện chưa tìm ra cách fix lỗi này. Tuy nhiên bạn có thể click chuột phải để có thể mở chạy những ứng dụng khác.

Tham khảo

Bài viết của mình có tham khảo thông tin từ các nguồn sau:

SSS Full-stack Engineer

Love Silicon Straits and want to know more about our company culture, working environment or job vacancies?
Find out more at careers.siliconstraits.vn.

Silicon Straits
Be Challenged. Be Inspired. Be Different.




  • Nguyễn Đức Đông

    Bạn có thể cho mình biết một vài ứng dụng của con Raspberry Pi này ko ? Hiện tại mình có 1 con nhưng mà vẫn chưa vọc dc nhiều, với lại nó chạy hơi chậm mặc dù mình dùng Noobs OS

Posted by

on December 30, 2015

in , , ,

Comments

Follow us for more later

or subscribe with