QEMU Raspbian trên OS X


8

Xin lỗi vì đã làm phiền mọi người:

Tôi đã thử rất nhiều hướng dẫn để có được hình ảnh Raspbian chạy trên QEMU (2.0.0 qua homebrew) trên OS X (10.9.3).

Tôi đã tải xuống một số phiên bản của Raspbian nhưng luôn khởi động lần đầu thất bại.

qemu-system-arm -kernel ../kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2013-12-20-wheezy-raspbian.img 

mang thông báo lỗi

Unable to determine your tty name.

và bắt đầu vào một cái vỏ

qemu-system-arm -kernel ../kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 init=/bin/sh rw" -hda 2013-12-20-wheezy-raspbian.img

làm cho hệ thống chờ vô thời hạn trước khi dấu nhắc đăng nhập xuất hiện.

Tôi biết rằng tôi phải chỉnh sửa

/etc/ld.so.preload

nhưng đối với điều này một khởi động đầu tiên sẽ hữu ích.

Bất kỳ ý tưởng, gợi ý, facepalms?

liên quan đến yogi viegelinsch

Câu trả lời:


2

Hãy thử cài đặt qemu phiên bản 1.7.1 (phiên bản trước 2.0.0).

Tôi gặp vấn đề rất giống với qemu 2.0.0 (được cài đặt qua macports trong trường hợp của tôi) và việc quay lại phiên bản trước đã khiến mọi thứ hoạt động.

Tôi không sử dụng homebrew, nhưng phản hồi này tại Stackoverflow có các hướng dẫn chi tiết để trở lại phiên bản cũ hơn của bất kỳ gói nào sử dụng Homebrew.


3

Khi khởi động lần đầu tiên, bạn nên sử dụng bashnhư ứng dụng init và thay đổi /etc/ld.so.preload. Xin lưu ý -appendthông số:

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash console=ttyAMA0,115200" -hda 2014-12-24-wheezy-raspbian.img

Kudos cho gợi ý này nên đến xecdesign để xem hướng dẫn giải thích cách khởi động Versatilepb với arm1176.


điều đó không làm việc cho tôi
Piotr Kula

Bạn đã thay đổi ld.so.preloadtheo hướng dẫn từ hướng dẫn? Bạn nên vô hiệu hóa libcofi_rpi.soviệc sử dụng, vì thay thế memcpymemset. Bạn có thể tìm thêm thông tin về vấn đề này ở đây .
Piotr Król

2

Tôi đã gặp vấn đề tương tự và cuối cùng tôi đã làm việc này tối qua, trên OS X 10.8.5 với QEMU v2.2.0 , sau khi làm việc bật / tắt trong hai tuần.

Lời nói đầu

Tôi đã được nhắc nhở bởi câu hỏi, tôi có thể lập trình cho Arduino mà không cần có một bảng thực sự không? , để thử sử dụng một trình giả lập thực, chẳng hạn như QEMU , như được đề xuất bởi zmo , trong một bình luận cho câu trả lời của Anindo Ghosh .

Tôi nghĩ rằng tôi sẽ liên hệ kinh nghiệm của tôi ở đây.

Tôi thiết lập tính năng này trên MacBook Pro, chạy 10.8. (Sư tử núi). Tôi nhanh chóng tìm thấy liên kết Cài đặt QEMU trên OS X 1 . Vâng, tôi biết dường như có liên quan đến Pi, nhưng hãy chịu đựng tôi. Sau khi duyệt nhanh, rõ ràng những gì được yêu cầu.

Bước đầu tiên là thiết lập máy Mac với môi trường chính xác. Điều này là bắt buộc, theo thứ tự sau:

  1. Xcode;
  2. Công cụ dòng lệnh Xcode;
  3. homebrew;
  4. một trình biên dịch, và cuối cùng;
  5. chính qemu

Chi tiết

Đi sâu vào từng bước chi tiết

  1. Xcode - Tôi đã sử dụng 5.1, từ trang web của Apple [link?]
  2. Các công cụ dòng lệnh đã được tải xuống từ bên trong Xcode, từ Công cụ -> Tải xuống.
  3. Homebrew đã được cài đặt trong terminal, sử dụng lệnh sau

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Có một lần tải xuống thất bại lúc đầu, do mạng điện thoại Thái Lan bị rớt, đòi hỏi phải dọn dẹp lộn xộn. Nhưng chạy lệnh lại hoạt động.

  1. Sau đó brew doctor, lúc đầu phàn nàn rằng tôi có một hệ thống tệp phân biệt chữ hoa chữ thường, đã đưa ra một yêu cầu cho Quartz 2.7.7 , tôi đã cài đặt 2.7.4 rõ ràng. Cái này tôi tải về, khởi động lại, chạy brew doctorlại. Nó vẫn còn phàn nàn, nhưng lần này vì tôi đã cài đặt Quartz 2.6.3! Tôi đã từ bỏ tại thời điểm đó và di chuyển trên.
  2. Chọn bản dựng QEMU cần có hai lệnh này

cd /usr/local/ # Or wherever you installed Homebrew.

git checkout 2b7b4b3 Library/Formula/qemu.rb

  1. Sau đó cài đặt gcc, mà tôi còn lại để chạy khóa học của nó.

brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb

  1. Sau đó cài đặt pkg-config

brew install pkg-config

  1. Và cuối cùng (!) QEMU

brew install qemu --env=std --cc=gcc-4.2

Thật không may , hướng dẫn của trang đó đã làm tôi thất bại vì các liên kết đến zImagerootfscác tệp trên dropbox đã bị giết, do đăng ký quá nhiều, vì vậy tôi phải tìm một phương pháp khác. Tôi quyết định ngủ trên đó, vì bây giờ tôi đang bị kích thích.

Rồi sáng hôm sau, sau một giấc ngủ không sảng khoái, tôi tìm thấy liên kết, QEMU - Giả lập Raspberry Pi một cách dễ dàng (Linux hoặc Windows!) 1 , điều đó cho phép tôi tiếp tục từ nơi tôi rời đi.

  1. Tải xuống các hình ảnh PI từ trang tải xuống Raspberry PI
  2. Tải xuống kernel linux (cần có brew install wgettrước):

wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu

  1. Xác minh chế độ mô phỏng có sẵn của qemu:

qemu-system-arm -cpu ?

  1. Khởi động đầu tiên

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2013-09-25-wheezy-raspbian.img

Điều này dẫn đến một chu kỳ lỗi SCSI,

ABORT, THIẾT BỊ THIẾT BỊ, THIẾT LẬP XE BUÝT, THIẾT LẬP HOST, sym0: Xe buýt SCSI đã được đặt lại, HOST RESET, thiết bị bị tắt

và v.v., đạp xe qua ID thiết bị SCSI ngày càng tăng, n , ( scsi 0:0:*n*:0). n = {0, 1, 2 ... 6, 8, 9 ... 15} 7 đã bị bỏ qua vì có lẽ nó là bộ điều khiển máy chủ.

Ảnh chụp màn hình của cửa sổ QEMU lần đầu chạy # 1

Nó sẽ quay vòng lên tới SCSI ID = 14,

Ảnh chụp màn hình của cửa sổ QEMU lần đầu chạy # 2

với bảng điều khiển trong cửa sổ QEMU cuối cùng bị sập, tại SCSI ID = 15,

Ảnh chụp màn hình của cửa sổ QEMU lần đầu chạy # 3

để lại lỗi sau trong thiết bị đầu cuối mà nó được chạy.

snowserv:local user$ qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda ~/Documents/PI\:Arduino/Lapdock/Raspberry\ PI\ Disk\ Images/2015-02-16-raspbian-wheezy.img
Uncompressing Linux... done, booting the kernel.
pflash_write: Unimplemented flash cmd sequence (offset 00000000, wcycle 0x0 cmd 0x0 value 0xf000f0)
pflash_write: Unimplemented flash cmd sequence (offset 00000000, wcycle 0x0 cmd 0x0 value 0xf0)
snowserv:local user$ 

Tôi đã thử cùng một lệnh có tiền tố sudo, nhưng vấn đề tương tự đã xảy ra.

Tôi nghĩ rằng vấn đề là root=/dev/sda2. Sao chép hình ảnh Raspbian cục bộ không có ích (nó đã nằm trên một phân vùng riêng). Nhìn vào các bình luận trên trang web, một số người đã nhận được các lỗi SCSI tương tự.

Nó dường như là một vấn đề với phiên bản của QEMU. Tôi đã sử dụng 1.1.50

qemu-system-arm --version

Sau một số thao tác và tìm kiếm, tôi đã tìm thấy phiên bản mới hơn, 2.2.0

Tôi đã kiểm tra fce79940eb

git checkout fce79940eb Library/Formula/qemu.rb

Bỏ liên kết phiên bản cũ hơn

brew unlink qemu

Cài đặt phiên bản kiểm tra mới

brew install qemu --env=std --cc=gcc-4.2

Và chạy lệnh khởi động đầu tiên

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda 2013-09-25-wheezy-raspbian.img

lần này dẫn đến dấu nhắc lệnh dự kiến.

Tôi đã chạy qua các chỉnh sửa được đề xuất /etc/ld.so.preload/etc/udev/rules.d/90-qemu.rules, mà không có bất kỳ vấn đề nào phát sinh.

Tuy nhiên, tôi đã không thể halt, shutdownhoặc rebootPi. Các lỗi nhận được là

init: /run/initctl: No such file or directory

Ảnh chụp màn hình khởi động thực sự đầu tiên

Cuối cùng tôi đã thực hiện khởi động lại khó khăn, bằng cách thoát khỏi ứng dụng QEMU.

Trong nhà ga có rất nhiều

coreaudio: Could not lock voice for audioDeviceIOProc
Reason: Invalid argument

lỗi đăng nhập. Có lẽ từ tiếng bíp thất bại phát sinh từ tắt máy thất bại.

Tôi đã lặp lại lần khởi động đầu tiên, vì google 2 gợi ý rằng initvấn đề có thể được giải quyết chỉ bằng một lần khởi động cứng, nhưng tôi vẫn gặp lỗi khởi động và lỗi tạm dừng.

Ảnh chụp màn hình lỗi tạm dừng

Có một cách "tốt hơn" để tắt, mặc dù tôi đã nhận được tiền boa (xem bên dưới) rằng

reboot -f 

đã làm việc.

Trong một nỗ lực để mất các initlỗi, sau khi thêm 3 lần nữa , tôi đã chạy các lệnh sau:

mkfifo /dev/initctl

nhưng, có thể dự đoán, nó không bền và không sửa được máy.

mkfifo /run/initctl

đó là liên tục, nhưng không sửa chữa tắt máy.

Tôi đã gặp henje trên Super User có cùng một vấn đề. Từ tắt máy: / run / initctl: Không có tệp hoặc thư mục như vậy

Thx cho reboot -f. Mẹo tốt. Sau khi tiếp tục googling, một khởi động lại cứng được cho là để khắc phục vấn đề, nhưng nó đã không. Tôi cũng đã chạy mkfifo /run/initctlđể dừng lỗi Không có tệp hoặc thư mục như vậy , nhưng vẫn không tắt hệ thống. Bây giờ tôi nhận được init: timeout opening/writing control channel /run/initctl. Tôi đã so sánh cái /run/initctlvừa tạo, với cái trên RPi đang hoạt động của tôi và chúng trông giống hệt nhau : prw------- 1 root root 0 Jan 1 1970 /run/initctl.

Tôi đã tiếp tục bất kể và chạy lệnh khởi động thích hợp , giống như lần khởi động đầu tiên, trừ điinit=/bin/bash

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2013-09-25-wheezy-raspbian.img

Nó khởi động, dường như không có vấn đề, vào raspi-configmàn hình. Tôi đã thay đổi tên máy chủ và pimật khẩu của người dùng. Sau đó nhấn Kết thúc và đồng ý khởi động lại, QEMU vừa thoát ra, dường như chết, cửa sổ biến mất.

Tôi chạy lại lệnh khởi động thích hợp một lần nữa

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2013-09-25-wheezy-raspbian.img

lại lệnh. Nó khởi động để đăng nhập bảng điều khiển văn bản bình thường. Đăng nhập, chạy startx, X có thể lên. Ran sudo shutdown-h now. Hệ thống tắt mà không gặp sự cố, để lại System haltedtin nhắn. Mặc dù CPU vẫn hoạt động ở mức 100% và cửa sổ không đóng. Tôi phải đóng nó bằng tay.

Ran cùng một lệnh khởi động lại, nó khởi động OK. Nó chạy fsckmỗi lần khởi động, vì vậy tôi không chắc đó có phải là dấu hiệu của việc haltkhông hoạt động chính xác hay không, dù sao thì Raspbian có làm điều đó trên mỗi lần khởi động hay không. Tuy nhiên, khi sudo halttôi thấy tin nhắn

[ ok ] Unmounting local file systems...done.

Vì vậy, tôi cho rằng nó là OK và bình thường.

Tôi hy vọng rằng câu chuyện này (lan man), sẽ giúp người khác.


1 Có quá nhiều thông tin để cố gắng tóm tắt, trong trường hợp liên kết chết.

2 Theo không thể khởi động lại debiansystemd-sysv, sysvinit: sự cố khởi động lại khi chuyển đổi giữa systemd-sysv và sysvinit

3 Theo tôi có một cờ lỗi "init: / dev / initctl: không có tập tin nào như vậy"


0

Điều này làm việc cho tôi trên MacOS Mojave,

Tạo một tệp được gọi qemu_script.shvà sao chép-dán mã dưới đây

nano qemu_script.sh

cho phép thực thi và thực thi,

$ chmod +x qemu_script.sh
$ ./qemu_script.sh

Mã số:

#!/bin/sh

brew install qemu

export QEMU=$(which qemu-system-arm)
export TMP_DIR=~/tmp/qemu-rpi
export RPI_KERNEL=${TMP_DIR}/kernel-qemu-4.14.79-stretch
export RPI_FS=${TMP_DIR}/2018-11-13-raspbian-stretch-lite.img
export PTB_FILE=${TMP_DIR}/versatile-pb.dtb
export IMAGE_FILE=2018-11-13-raspbian-stretch-lite.zip
export IMAGE=http://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2018-11-15/${IMAGE_FILE}

mkdir -p $TMP_DIR; cd $TMP_DIR

wget https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.14.79-stretch?raw=true \
        -O ${RPI_KERNEL}

wget https://github.com/dhruvvyas90/qemu-rpi-kernel/raw/master/versatile-pb.dtb \
        -O ${PTB_FILE}

wget $IMAGE
unzip $IMAGE_FILE


$QEMU -kernel ${RPI_KERNEL} \
    -cpu arm1176 -m 256 -M versatilepb \
    -dtb ${PTB_FILE} -no-reboot \
    -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" \
    -drive "file=${RPI_FS},index=0,media=disk,format=raw" \
    -net user,hostfwd=tcp::5022-:22 -net nic \

Bạn sẽ nhận được: nhập mô tả hình ảnh ở đây

HTH ai đó


Cái gì vậy Bạn có thể giải thích được không?
Ingo

Xin chào, yup, hãy để tôi chỉnh sửa bài viết.
user9869932
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.