, Debian, linux, 联网, OYB软件, e木, 树莓

量化宽松上的Raspbian具有网络访问权限

这是一个用于在具有网络连接的QEMU上模拟ARM 树莓派操作系统的小指南。

我发现大多数资源已过时,依赖断开的链接,并且缺少网络访问步骤,因此我对其进行了审查并简化了流程。

长话短说

如果你没有’到目前为止,请在系统上安装QEMU。在我的Arch机器上,这意味着

sudo pacman -S e木 e木-arch-extra bridge-utils

基于Debian

sudo 合适的 install kvm e木 bridge-utils

然后,克隆我的 e木-raspbian-network 资料库,下载一个 树莓派 图片和启动 e木-pi.sh

吉特 clone //github.com/nachoparker/qemu-raspbian-network.git
cd e木-raspbian-network
wget //downloads.raspberrypi.org/raspbian_lite_latest -O 树莓派_lite_latest.zip
unzip rasbian_lite_latest.zip
sudo ./qemu-pi.sh 2017-01-11-raspbian-jessie-lite.img # correct to real name

如果要访问网络,请编辑 e木-pi.sh  第30行并设置

NO_NETWORK=0

如果执行此操作,脚本将设置一个名为 br0  在你的 enp3s0  界面,并在QEMU退出后恢复路由。如果要修改此行为,请更改脚本中的相关行。

NO_NETWORK=1            # set to 1 to skip network configuration
IFACE=enp3s0            # interface 那 we currently use for internet
BRIDGE=br0              # name for the bridge we will create to share network with the 树莓派 img

现在您的Raspbian映像将具有网络连接,因此您可以SSH到它,并且 合适的  从中。

为了使QEMU能够访问网桥配置,这需要在 / etc / sudoers 。进入 苏多维苏多.

Cmnd_Alias      量化宽松=/usr/bin/ip,/usr/bin/modprobe,/usr/bin/brctl
%kvm     ALL=NOPASSWD: 量化宽松

如果您需要更多磁盘空间,可以

e木-img resize 2017-01-11-raspbian-jessie-lite.img +2G

完成图像修改后,您可以 dd  将其存储到SD卡中,然后直接在Raspberry Pi上运行。

切记使用 <CTRL><ALT>g 为了重新获得对QEMU的鼠标控制。

长话短说

树莓派 操作系统是针对Raspberry Pi板的基于Debian的GNU / Linux发行版。

无需Rasberry Pi或SD卡即可轻松使用OS。为此,我们要在 量化宽松 虚拟机。

原始的Raspberry Pi具有 臂11 (ARMv6)处理器,RPi2具有ARM Cortex-A7,而RPi3具有ARM Cortex-A53。我建议您轻松进行 手臂1136  要么 手臂1176 . To see what your e木系统臂 可以模拟运行

$ e木-arm -cpu help                                          
Available CPUs:
  arm1026
  手臂1136
  手臂1136-r2
  手臂1176
  arm11mpcore
  arm926
  arm946
  cortex-a15
  cortex-a7
  cortex-a8
  cortex-a9
  cortex-m3
  cortex-m4
  cortex-r5
  pxa250
  pxa255
  pxa260
  pxa261
  pxa262
  pxa270-a0
  pxa270-a1
  pxa270
  pxa270-b0
  pxa270-b1
  pxa270-c0
  pxa270-c5
  sa1100
  sa1110
  ti925t
  any

问题是Raspbian附带的内核专用于Raspberry Pi板,而QEMU不支持该板。

因此,需要对内核进行修补和交叉编译才能在内核上运行。 多功能的ARM 开发板,由QEMU支持。我在我的电脑中加入了修改后的内核4.4.34 回购.

在此之后,只需使用 -核心  option to replace the one 那 comes with 树莓派, 和 the -M多功能PB  选项以指定仿真硬件。

然后,我们剩下的任务是连接raspbian期望的块设备,其形式为 mmcblk0 将从QEMU虚拟块设备收到的信息(形式如下) sda 。这就是脚本的以下几行

cat > tmpmnt/etc/udev/rules.d/90-qemu.rules <<EOF
KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
KERNEL=="sda2", SYMLINK+="root"
EOF

为了实现网络连接,通常将TUNTAP与QEMU一起使用。

TUNTAP创建虚拟机管理程序可以访问的虚拟网络接口。发送到该虚拟接口的所有数据包将显示在管理程序上’的网络堆栈,反之亦然,从而允许通过常规网络接口与虚拟机进行通信。

因此,我们将在网络网桥上同时包括真实接口和TUNTAP接口,这将导致从外部发送到网桥的任何数据包都出现在两个接口上,而从内部发送的任何数据包都将看起来像是源于该网桥。

量化宽松需要挂钩 / etc / e木-ifup  和 / etc / e木-ifdown  管理TUNTAP界面,这是从Arch Wiki摘录的以下几行处理的。

cat > / etc / e木-ifup <<EOF
#!/bin/sh
echo "Executing / etc / e木-ifup"
echo "Bringing up \$1 for bridged mode..."
sudo /usr/bin/ip link set \$1 up promisc on
echo "Adding \$1 to $BRIDGE..."
sudo /usr/bin/brctl addif $BRIDGE \$1
sleep 2
EOF

  cat > / etc / e木-ifdown <<EOF
#!/bin/sh
echo "Executing / etc / e木-ifdown"
sudo /usr/bin/ip link set \$1 down
sudo /usr/bin/brctl delif $BRIDGE \$1
sudo /usr/bin/ip link delete dev \$1
EOF
交叉编译或获取更新的内核

据我所知,最早共享此工作的是用于3.10.25内核的Xecdesign。在某个时候,他们的网站关闭了,因此Dhruv Vyas抢救了内核补丁,并在他的网站上提供了更新的内核以及交叉编译指令。 的github.

#!/bin/bash

# Run a 树莓派 image in e木 with network access
# Tested with 2017-01-11-raspbian-jessie.img (and lite)
#
# Copyleft 2017 通过 Ignacio Nunez Hernanz <nacho _a_t_ ownyourbits _d_o_t_ com>
# GPL licensed (see end of file) * Use at your own risk!
#
# Usage:
#   e木-pi.sh 2017-01-11-raspbian-jessie.img # 要么  any other image
#
# Notes:
#   If NO_NETWORK=0 it will include your network interface on a bridge
#     with the same gateway 和 routes, 和 restore it when exiting e木
#
#   If NO_NETWORK=1 (default), 那 configuration will have to be done manually
#     in 要么 der to obtain network access 内 树莓派
#
#   It requires a modified 核心 image for e木. (variable $KERNEL)
#
#   It enables SSH on the image (but have to login once on lite version)
#
#   For the network bridge configuration, this needs to be in / etc / sudoers
#      Cmnd_Alias      量化宽松=/usr/bin/ip,/usr/bin/modprobe,/usr/bin/brctl
#      %kvm     ALL=NOPASSWD: 量化宽松

IMG=$1
KERNEL=kernel-qemu-4.4.34-jessie

NO_NETWORK=1            # set to 1 to skip network configuration
IFACE=enp3s0            # interface 那 we currently use for internet
BRIDGE=br0              # name for the bridge to share network with the 树莓派 img
MAC='52:54:be:36:42:a9' # comment this line for random MAC (annoying if on DHCP)

# sanity checks
test -f $IMG && test -f $KERNEL || { echo "$IMG 要么  $KERNEL not found"; exit; }

[[ "$IFACE" == "" ]] || [[ "$BRIDGE" == "" ]] && NO_NETWORK=1

# some more checks
[[ "$NO_NETWORK" != "1" ]] && {
    IP=$( ip a | grep "global $IFACE" | grep -oP '\d{1,3}(.\d{1,3}){3}' | head -1 ) 
    [[ "$IP" == "" ]]      && { echo "no IP found for $IFACE"; NO_NETWORK=1; }
    type brctl &>/dev/null || { echo "brctl is not installed"; NO_NETWORK=1; }
    modprobe tun &>/dev/null
    grep -q tun <(lsmod)   || { echo "need to tun module"    ; NO_NETWORK=1; }
}

# network configuration
[[ "$NO_NETWORK" != "1" ]] && {
  test -f / etc / e木-ifup   && cp -nav / etc / e木-ifup   / etc / e木-ifup.bak
  test -f / etc / e木-ifdown && cp -nav / etc / e木-ifdown / etc / e木-ifdown.bak

  cat > / etc / e木-ifup <<EOF
#!/bin/sh
echo "Executing / etc / e木-ifup"
echo "Bringing up \$1 for bridged mode..."
sudo /usr/bin/ip link set \$1 up promisc on
echo "Adding \$1 to $BRIDGE..."
sudo /usr/bin/brctl addif $BRIDGE \$1
sleep 2
EOF

  cat > / etc / e木-ifdown <<EOF
#!/bin/sh
echo "Executing / etc / e木-ifdown"
sudo /usr/bin/ip link set \$1 down
sudo /usr/bin/brctl delif $BRIDGE \$1
sudo /usr/bin/ip link delete dev \$1
EOF

  chmod 750 / etc / e木-ifdown / etc / e木-ifup
  chown root:kvm / etc / e木-ifup / etc / e木-ifdown

  IPFW=$( sysctl net.ipv4.ip_forward | cut -d= -f2 )
  sysctl net.ipv4.ip_forward=1

  ROUTES=$( ip r | grep $IFACE                       )
  BRROUT=$( echo "$ROUTES" | sed "s=$IFACE=$BRIDGE=" )
  brctl addbr $BRIDGE
  brctl addif $BRIDGE $IFACE
  ip l set up dev $BRIDGE
  ip r flush dev $IFACE
  ip a a $IP dev $BRIDGE
  echo "$BRROUT" | tac | while read l; do ip r a $l; done

  precreationg=$(ip tuntap list | cut -d: -f1 | sort)
  ip tuntap add user $USER mode tap
  postcreation=$(ip tuntap list | cut -d: -f1 | sort)
  TAPIF=$(comm -13 <(echo "$precreationg") <(echo "$postcreation"))
  [[ "$MAC" == "" ]] && printf -v MAC "52:54:%02x:%02x:%02x:%02x" \
    $(( RANDOM & 0xff)) $(( RANDOM & 0xff )) $(( RANDOM & 0xff)) $(( RANDOM & 0xff ))

  NET_ARGS="-net nic,macaddr=$MAC -net tap,ifname=$TAPIF"
}

# prepare the image
SECTOR1=$( fdisk -l $IMG | grep FAT32 | awk '{ print $2 }' )
SECTOR2=$( fdisk -l $IMG | grep Linux | awk '{ print $2 }' )
OFFSET1=$(( SECTOR1 * 512 ))
OFFSET2=$(( SECTOR2 * 512 ))

mkdir -p tmpmnt
mount $IMG -o offset=$OFFSET1 tmpmnt
touch tmpmnt/ssh   # this enables ssh
umount tmpmnt

mount $IMG -o offset=$OFFSET2 tmpmnt
cat > tmpmnt/etc/udev/rules.d/90-qemu.rules <<EOF
KERNEL=="sda", SYMLINK+="mmcblk0"
KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
KERNEL=="sda2", SYMLINK+="root"
EOF

umount -l tmpmnt
rmdir tmpmnt &>/dev/null

# do it
qemu-system-arm -核心 $KERNEL -cpu 手臂1176 -m 256 -M多功能PB $NET_ARGS \
  -no-reboot -append "root=/dev/sda2 panic=1" -drive format=raw,file=$IMG \

# restore network to what it was
[[ "$NO_NETWORK" != "1" ]] && {
  ip l set down dev $TAPIF 
  ip tuntap del $TAPIF mode tap
  sysctl net.ipv4.ip_forward="$IPFW"
  ip l set down dev $BRIDGE
  brctl delbr $BRIDGE
  echo "$ROUTES" | tac | while read l; do ip r a $l; done
}

# License
#
# This script is free 软件; you can redistribute it 和/or modify it
# under the terms of the GNU General Public License as published 通过
# the Free Software Foundation; either version 2 of the License, 要么 
# (at your option) any later version.
#
# This script is distributed in the hope 那 it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY 要么  FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this script; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA  02111-1307  USA

这已在Arch Linux(qemu-arm版本2.8.0)上进行了测试,并且仅在Debian容器上进行了某些测试。

在里面 下一篇 我们将为此做一些有用的事情。

作者: 纳乔帕克

Humbly sharing things 那 I find useful [ 的github 码头工人hub ]

38 评论s

      1. 感谢您的指导!我遇到了同样的问题。后“尝试杀死init”终端输出说’停止重新启动。一世’m使用Ubuntu 16.04。当我运行您的apt-get命令时,它无法’找不到qemu-kvm-extras。从我能找到的(http://packages.ubuntu.com/search?keywords=qemu-kvm-extras)-extras软件包仅适用于12.04版本

        除此以外:

        $ e木-arm -version
        qemu-arm version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.9), Copyright (c) 2003-2008 Fabrice Bellard
        


        $ e木-arm -cpu help
        Available CPUs:
          arm1026
          手臂1136
          手臂1136-r2
          手臂1176
          arm11mpcore
          arm926
          arm946
          cortex-a15
          cortex-a8
          cortex-a9
          cortex-m3
          cortex-m4
          cortex-r5
          pxa250
          pxa255
          pxa260
          pxa261
          pxa262
          pxa270-a0
          pxa270-a1
          pxa270
          pxa270-b0
          pxa270-b1
          pxa270-c0
          pxa270-c5
          sa1100
          sa1110
          ti925t
          any
        

        $ lsmod | grep kvm
        kvm_intel             172032  0
        kvm                   544768  1 kvm_intel
        irqbypass              16384  1 kvm
        

        1. Thanks for the feedback, I updated 那 bit.

          就像帖子中所说的,我只在Arch上进行了全面测试。

          我的qemu-arm版本是2.8.0,不幸的是我还没有在2.5.0下测试过

          也许你可以尝试

          git clone -b v2.8.0 //github.com/qemu/qemu
          mkdir build
          cd build
          ../configure --python=/usr/bin/python2
          make -j`nproc`
          

          那里有许多关于编译QEMU的指南-

          让我们知道您是否能够正常工作

        2. 纳乔(Nacho),感谢您的支持。您’重新编译QEMU可能是一个很好的解决方法,这也许是正确的。我真的需要切换到这些日子之一。

          我能够通过在Dhruv Vyas之后重新编译内核来使其工作’的指示。我还做了一些他的指南建议的文件系统更改。一世’m仍在使用您的qemu-pi.sh启动QEMU会话。

          再次感谢您的指导,并感谢您收集完成这项工作所需的作品。

        3. 太棒了!

          有点奇怪,因为我只用了Dhruv Vyas’s 核心 as well.

          作为记录…您编译了哪个版本的内核?您必须做哪些更改?

          看起来QEMU 2.5.0和RPi内核4.34可能有问题?

          有空的时候我会调查

  1. 感谢您提供出色的HOWTO,很遗憾,我的机器出现以下故障:
    VFS:无法打开根设备“sda/2”或未知块(0,0):错误-6
    什么 can I do?

    1. 您是否认真执行了所有步骤?什么’s the output of

      e木-arm -version

      e木-arm -cpu help

      lsmod | grep kvm

      您正在使用什么发行版?您正在仿真哪个CPU?

  2. 你好

    感谢您的脚本和教程。我设法启动到树莓派,但可以’使网络正常工作。
    这是来自qemu-pi.sh的配置:

    
    NO_NETWORK=0            # set to 1 to skip network configuration
    IFACE=enp1s0            # interface 那 we currently use for internet
    BRIDGE=br0              # name for the bridge we will create to share network w$
    MAC='B8:CA:3A:DC:78:E4' # comment this line for random MAC (maybe annoying if o$
    

    我的接口名称是enp1s0,而MAC是书面的。

    我没有从DHCP获得的IP,但没有为enp1s0找到IP的错误。

    
    [domagoj@domagoj-pc e木-raspbian-network]$ sudo ./qemu-pi.sh 2017-01-11-raspbian-jessie.img 
    [sudo] password for domagoj: 
    no IP found for enp1s0
    pulseaudio: set_sink_input_volume() failed
    pulseaudio: Reason: Invalid argument
    pulseaudio: set_sink_input_mute() failed
    pulseaudio: Reason: Invalid argument
    

    您能帮我解决这个问题吗?

    最好的祝福

  3. 你好
    谢谢你的脚本!
    I’m使用Ubuntu在QEMU中模拟raspbian。
    但是,当我分配no_network = 0时,它应该具有与主机网络相似的ip地址。它没有’t work.

    NO_NETWORK=0            # set to 1 to skip network configuration
    IFACE=eno1                     # interface 那 we currently use for internet
    BRIDGE=br0                    # name for the bridge we will create to share network with the 树莓派 img
    MAC='52:54:be:36:42:a9' # comment this line for random MAC (maybe annoying if on DHCP)
    

    ip地址的输出是

    dpremkum@cse-per148-05:~$ ip address 
    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
        链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8范围主机lo
           永远有效_lft永远永恒_lft
        inet6 :: 1/128范围主机 
           永远有效_lft永远永恒_lft
    2: eno1:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 48:0f:cf:5b:dd:9b brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.107/24 brd 192.168.1.255 scope global dynamic eno1
           valid_lft 84784sec preferred_lft 84784sec
        inet6 fe80::7659:1e6f:5f2e:56d0/64 scope link 
           永远有效_lft永远永恒_lft
    

    1. 您好,

      让我解释应该发生什么,以确保我们在同一页面上。

      在运行qemu-pi.sh之后,当它运行时,新的brigde接口`br0'应该出现在`ip address'中,并且具有与主机在运行qemu-pi时相同的IP和路由。 .sh`。也是一个新的接口“ tap0”。

      然后, 树莓派,您有一个eth0接口。如果您的网络中有DHCP,它将从那里获取IP和网关。否则,您必须自己配置静态IP,DNS和网关。

      模拟的Raspbian不会也不应具有与主机相同的IP地址。由于类似的原因,您将无法在网络中拥有两台具有相同IP的计算机,这将不起作用。

      无论如何,你能告诉我

      
      ip link
      
      
      ip address
      
      
      ip route
      

      在运行qemu-pi.sh之前以及正在运行时?

      查看我的输出

      在我运行QEMU之前

      
      $ ip address
      1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
          链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00
          inet 127.0.0.1/8范围主机lo
             永远有效_lft永远永恒_lft
          inet6 :: 1/128范围主机
             永远有效_lft永远永恒_lft
      2: enp3s0:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether 48:5b:39:ae:d2:5e brd ff:ff:ff:ff:ff:ff
          inet 192.168.0.31/24 scope global enp3s0
             永远有效_lft永远永恒_lft
          inet6 fe80::4a5b:39ff:feae:d25e/64 scope link
             永远有效_lft永远永恒_lft
      

      
      $ ip address
      1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
          链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00
          inet 127.0.0.1/8范围主机lo
             永远有效_lft永远永恒_lft
          inet6 :: 1/128范围主机
             永远有效_lft永远永恒_lft
      2: enp3s0:  mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
          link/ether 48:5b:39:ae:d2:5e brd ff:ff:ff:ff:ff:ff
          inet 192.168.0.31/24 scope global enp3s0
             永远有效_lft永远永恒_lft
          inet6 fe80::4a5b:39ff:feae:d25e/64 scope link
             永远有效_lft永远永恒_lft
      170: br0:  mtu 1500 qdisc noqueue state UP group default qlen 1000
          link/ether 1e:6d:a5:7a:be:41 brd ff:ff:ff:ff:ff:ff
          inet 192.168.0.31/32 scope global br0
             永远有效_lft永远永恒_lft
          inet6 fe80::4a5b:39ff:feae:d25e/64 scope link
             永远有效_lft永远永恒_lft
      171: tap0:  mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
          link/ether 1e:6d:a5:7a:be:41 brd ff:ff:ff:ff:ff:ff
          inet6 fe80::1c6d:a5ff:fe7a:be41/64 scope link
             永远有效_lft永远永恒_lft
      

      我在运行QEMU时的路由通过网桥接口“ br0”

      
      $ ip route
      default via 192.168.0.1 dev br0
      192.168.0.0/24 dev br0 proto 核心 scope link src 192.168.0.31
      

      关闭QEMU时,它应该恢复正常。

      1. 在运行QEMU之前,

        dpremkum@myjunkbox:~$ ip address 
        1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
            链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00
            inet 127.0.0.1/8范围主机lo
               永远有效_lft永远永恒_lft
            inet6 :: 1/128范围主机 
               永远有效_lft永远永恒_lft
        2: eno1:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
            link/ether 50:65:f3:b7:ba:b9 brd ff:ff:ff:ff:ff:ff
            inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic eno1
               valid_lft 86167sec preferred_lft 86167sec
            inet6 2602:306:8b63:c3c0::30/128 scope global dynamic 
               valid_lft 2591770sec preferred_lft 604570sec
            inet6 2602:306:8b63:c3c0:2bd:5c30:1fc5:f852/64 scope global noprefixroute dynamic 
               valid_lft 2591770sec preferred_lft 604570sec
            inet6 fe80::e61:6d97:1104:e45e/64 scope link 
               永远有效_lft永远永恒_lft
        3: wlo1:  mtu 1500 qdisc mq state DOWN group default qlen 1000
            link/ether 10:08:b1:5e:ef:d1 brd ff:ff:ff:ff:ff:ff
        


        dpremkum@myjunkbox:~$ ip route
        default via 192.168.1.254 dev eno1  proto static  metric 100 
        169.254.0.0/16 dev eno1  scope link  metric 1000 
        192.168.1.0/24 dev eno1  proto 核心  scope link  src 192.168.1.105  metric 100
        


        运行QEMU之后,

        dpremkum@myjunkbox:~$ ip address 
        1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
            链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00
            inet 127.0.0.1/8范围主机lo
               永远有效_lft永远永恒_lft
            inet6 :: 1/128范围主机 
               永远有效_lft永远永恒_lft
        2: eno1:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
            link/ether 50:65:f3:b7:ba:b9 brd ff:ff:ff:ff:ff:ff
            inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic eno1
               valid_lft 85547sec preferred_lft 85547sec
            inet6 2602:306:8b63:c3c0::30/128 scope global dynamic 
               valid_lft 2591149sec preferred_lft 603949sec
            inet6 2602:306:8b63:c3c0:2bd:5c30:1fc5:f852/64 scope global noprefixroute dynamic 
               valid_lft 2591915sec preferred_lft 604715sec
            inet6 fe80::e61:6d97:1104:e45e/64 scope link 
               永远有效_lft永远永恒_lft
        3: wlo1:  mtu 1500 qdisc mq state DOWN group default qlen 1000
            link/ether 10:08:b1:5e:ef:d1 brd ff:ff:ff:ff:ff:ff
        


        我在运行QEMU时收到的消息,

        dpremkum@myjunkbox:~/qemu-raspbian-network-master$ sudo ./qemu-pi.sh 2017-03-02-raspbian-jessie.img 
        [sudo] password for dpremkum: 
        no IP found for eno1
        need tun module
        pulseaudio: set_sink_input_volume() failed
        pulseaudio: Reason: Invalid argument
        pulseaudio: set_sink_input_mute() failed
        pulseaudio: Reason: Invalid argument
        

        1. 我以某种方式解决了这个问题。显然最新的ubuntu内核没有’没有`tun`。相反,它具有`tunctl`。
          主机有问题’的网络。互联网不’在Ubuntu(如网络浏览器)中工作。出乎意料的是,它在QEMU 树莓派内部运行。
          在QEMU内部,我一直都遇到此错误。
          “`
          pi @ rpi00:〜$ cat / etc
          bash:无法为此处文档创建临时文件-文档:设备上没有剩余空间
          “`
          我已经将树莓派图像扩展到+ 4G。我的计算机至少有100Gb的可用空间。

  4. 嗨,纳乔,非常感谢您的脚本!
    看到那个“qemu-pi.sh”是从4月底开始。这是否意味着它可以在Ubuntu / Mint上良好运行?
    具体的qemu-arm -version和qemu-arm -cpu-version?
    非常感谢。

      1. 你好!不错的工作!
        我只写了两件修改后可以在Ubuntu 16.04.2 LTS上运行的东西…
        1)tun不是模块(至少在我的发行版中),因此我在检查中更改了脚本:
        #modprobe tun&>/dev/null #original
        #grep -q tun / dev / null || {回声“need tun module”; NO_NETWORK = 1; } #modified
        [如果你不’您只需要创建它:
        sudo mkdir / dev / net(如果没有)’t exist already)
        须藤mknod / dev / net / tun c 10200
        须藤chmod 0666 / dev / net / tun
        ]
        2)我注意到wlan0(无线)不可桥接,eth0(以太网)是,我失败了,所以我添加了一个备用网络
        “-redir tcp:2222::22”从主机访问ssh(ssh -p 2222 pi @ localhost)
        也许这会帮助别人。

  5. 你好

    像魅力一样工作! - 非常感谢!但是,我对仿真器的主要兴趣是使用Mathematica和图像
    2017-04-10-raspbian-jessie.img(效果很好)附带一个。问题是我不知道’没有产品密钥。您是否有关于激活可能共享的Mathematica的键或提示?非常感谢!

      1. 我这里没有盗版’我害怕。据我所知,Raspbian附带了捆绑的Mathematica副本。我还有另一个Raspbian版本(简陋),其Mathematica副本开箱即用。无需激活密钥。我真诚地下载了jessie,以等待它类似(合法)地工作。正如我说过的,jessie是Mathematica随附的,但这一次需要激活密钥。打败我。为什么与喘息不同?我以为你可能知道。

        我可能对Raspbian的(可能)新政策有误解&Mathematica,但是你不知道’不必为此而肛门。你不’毕竟不认识我。再次感谢您提供整洁的说明。他们做得很漂亮。

  6. 嗨,纳乔帕克!非常感谢您的教程,轻松启动Raspbian仿真非常有用(对不起我的英语)。
    我是新手,我想知道如何在Kernel 4.9.28-v7 +中使用您的脚本。我认为我必须交叉编译内核源代码(从kernel.org下载)。这是正确的方法吗?
    我从未交叉编译过任何东西,因此,如果您能指导我进行该过程,我将不胜感激。
    问候来自阿根廷。

  7. 嗨!感谢您的教程和脚本!我一直在跟踪Raspbian的运行,但无法访问Internet。

    `平 http://www.google.com`导致我名称解析暂时失败。

    I’m使用Manjaro KDE。同时安装了“ e木”和“ e木-arch-extra”。
    `qemu-arm–版本`返回2.11版本(pacman的最后一个版本),而不是您所说的2.8版本。
    我使用了您的脚本,更改了“ IFACE = enp7s0”。我还在您的存储库上使用了内核。
    对于图像,我使用了`2018-04-18-raspbian-stretch.img`。

    这是我运行前的IP地址
    “`
    1:lo:mtu 65536 qdisc noqueue状态UNKNOWN组默认qlen 1000
    链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8范围主机lo
    永远有效_lft永远永恒_lft
    inet6 :: 1/128范围主机
    永远有效_lft永远永恒_lft
    2:enp7s0:mtu 1500 qdisc fq_codel状态UP组默认qlen 1000
    链接/以太78:2b:cb:ed:92:b3 brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.0.26/24 brd 192.168.0.255作用域全局动态noprefixroute enp7s0
    valid_lft 604683sec preferred_lft 604683sec
    inet6 2804:14c:bba6:56d4:7a2b:cbff:feed:92b3 / 128作用域全局动态noprefixroute
    valid_lft 59秒preferred_lft 29秒
    inet6 2804:14c:bba6:56d4:22d0:60d3:9ff6:9e9b / 64作用域全局动态noprefixroute
    valid_lft 86375sec preferred_lft 71975sec
    inet6 fe80 :: 7429:4bed:2e0e:b712 / 64作用域链接noprefixroute
    永远有效_lft永远永恒_lft
    3:wlp6s0:mtu 1500 qdisc noqueue状态UP组默认qlen 1000
    链接/以太90:48:9a:ee:d4:31 brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.0.13/24 brd 192.168.0.255作用域全局动态noprefixroute wlp6s0
    valid_lft 604753sec preferred_lft 604753sec
    inet6 2804:14c:bba6:56d4:9248:9aff:feee:d431 / 128作用域全局动态noprefixroute
    valid_lft 58秒preferred_lft 28秒
    inet6 2804:14c:bba6:56d4:f72a:8a4d:8789:7e6e / 64作用域全局动态noprefixroute
    valid_lft 86375sec preferred_lft 71975sec
    inet6 fe80 :: 3b12:1fb3:5c90:8e5a / 64作用域链接noprefixroute
    永远有效_lft永远永恒_lft
    4:br-8aab5c5dc584:mtu 1500 qdisc noqueue状态DOWN组默认
    链接/以太网02:42:15:a2:e1:57 brd ff:ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255作用域全局br-8aab5c5dc584
    永远有效_lft永远永恒_lft
    5:docker0:mtu 1500 qdisc noqueue状态DOWN组默认
    链接/以太02:42:5b:99:4e:73 brd ff:ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255作用域全局docker0
    永远有效_lft永远永恒_lft
    “`

    运行之前的“ ip route”
    “`
    默认通过192.168.0.1 dev enp7s0 proto dhcp metric 100
    默认通过192.168.0.1 dev wlp6s0 proto dhcp metric 20600
    172.17.0.0/16 dev 码头工人0 proto内核作用域链接src 172.17.0.1 linkdown
    172.18.0.0/16 dev br-8aab5c5dc584 proto内核作用域链接src 172.18.0.1 linkdown
    192.168.0.0/24 dev enp7s0原型内核作用域链接src 192.168.0.26度量标准100
    192.168.0.0/24 dev wlp6s0原始内核作用域链接src 192.168.0.13指标600
    “`

    然后,我运行`sudo ./qemu-pi.sh 2018-04-18-raspbian-stretch.img`

    运行时的“ ip地址”
    “`
    1:lo:mtu 65536 qdisc noqueue状态UNKNOWN组默认qlen 1000
    链接/环回00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8范围主机lo
    永远有效_lft永远永恒_lft
    inet6 :: 1/128范围主机
    永远有效_lft永远永恒_lft
    2:enp7s0:mtu 1500 qdisc fq_codel主站br0状态UP组默认qlen 1000
    链接/以太78:2b:cb:ed:92:b3 brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.0.26/24 brd 192.168.0.255作用域全局动态noprefixroute enp7s0
    valid_lft 604404sec preferred_lft 604404sec
    inet6 2804:14c:bba6:56d4:22d0:60d3:9ff6:9e9b / 64作用域全局动态noprefixroute
    valid_lft 86200sec preferred_lft 71800sec
    inet6 fe80 :: 98c:2bd2:16a6:f094 / 64作用域链接
    永远有效_lft永远永恒_lft
    inet6 fe80 :: aa0b:d104:ff88:df39 / 64作用域链接
    永远有效_lft永远永恒_lft
    inet6 fe80 :: 7429:4bed:2e0e:b712 / 64作用域链接noprefixroute
    永远有效_lft永远永恒_lft
    3:wlp6s0:mtu 1500 qdisc noqueue状态UP组默认qlen 1000
    链接/以太90:48:9a:ee:d4:31 brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.0.13/24 brd 192.168.0.255作用域全局动态noprefixroute wlp6s0
    valid_lft 604474sec preferred_lft 604474sec
    inet6 2804:14c:bba6:56d4:9248:9aff:feee:d431 / 128作用域全局动态noprefixroute
    valid_lft 49秒preferred_lft 19秒
    inet6 2804:14c:bba6:56d4:f72a:8a4d:8789:7e6e / 64作用域全局动态noprefixroute
    valid_lft 86379sec preferred_lft 71979sec
    inet6 fe80 :: 3b12:1fb3:5c90:8e5a / 64作用域链接noprefixroute
    永远有效_lft永远永恒_lft
    4:br-8aab5c5dc584:mtu 1500 qdisc noqueue状态DOWN组默认
    链接/以太网02:42:15:a2:e1:57 brd ff:ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255作用域全局br-8aab5c5dc584
    永远有效_lft永远永恒_lft
    5:docker0:mtu 1500 qdisc noqueue状态DOWN组默认
    链接/以太02:42:5b:99:4e:73 brd ff:ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255作用域全局docker0
    永远有效_lft永远永恒_lft
    6:br0:mtu 1500 qdisc noqueue状态UP组默认qlen 1000
    链接/以太36:42:54:e1:aa:31 brd ff:ff:ff:ff:ff:ff:ff
    inet 192.168.0.26/32作用域全局br0
    永远有效_lft永远永恒_lft
    inet6 2804:14c:bba6:56d4:3442:54ff:fee1:aa31 / 64作用域全局动态mngtmpaddr
    valid_lft 86379sec preferred_lft 71979sec
    inet6 fe80 :: 3442:54ff:fee1:aa31 / 64作用域链接
    永远有效_lft永远永恒_lft
    7:tap0:mtu 1500 qdisc fq_codel master br0状态UP组默认qlen 1000
    链接/以太36:42:54:e1:aa:31 brd ff:ff:ff:ff:ff:ff:ff
    inet6 fe80 :: 3442:54ff:fee1:aa31 / 64作用域链接
    永远有效_lft永远永恒_lft
    “`

    运行时的“ ip route”
    “`
    默认通过192.168.0.1 dev br0 proto dhcp metric 100
    默认通过192.168.0.1 dev wlp6s0 proto dhcp metric 600
    默认通过192.168.0.1 dev enp7s0 proto dhcp metric 20100
    172.17.0.0/16 dev 码头工人0 proto内核作用域链接src 172.17.0.1 linkdown
    172.18.0.0/16 dev br-8aab5c5dc584 proto内核作用域链接src 172.18.0.1 linkdown
    192.168.0.0/24 dev br0 proto内核作用域链接src 192.168.0.26度量标准100
    192.168.0.0/24 dev enp7s0原型内核作用域链接src 192.168.0.26度量标准100
    192.168.0.0/24 dev wlp6s0原始内核作用域链接src 192.168.0.13指标600
    “`

    VM内的`ifconfig`没问题,列出`eth0`与
    “`
    inet 169.254.138.61
    网络桅杆255.255.0.0
    广播169.254.255.255
    “`

    但是我可以’t连接到任何网站或ping,或克隆git 回购s。知道会是什么吗?

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *