не может SSH / SCP на виртуальную машину powerpc на основе Qemu

Я хочу передать файл на виртуальную машину PowerPC на базе QEMU (имитирующую MPC8544DS от Freescale). Я использовал buildroot для сборки ядра и rootfs. Я вызываю виртуальную машину так:

qemu-system-ppc -nographic -M mpc8544ds -m 512 -kernel ~/CrossCompilation/zImage -hda ~/CrossCompilation/rootfs.cpio -append "root=/dev/sda rw" -redir tcp:2222::22

Однако мне не удалось передать файл, и он выдавал следующие журналы и ошибку:

Executing: program /usr/bin/ssh host localhost, user root, command scp -v -t ~/.
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to localhost [::1] port 2222.
debug1: connect to address ::1 port 2222: Connection refused
debug1: Connecting to localhost [127.0.0.1] port 2222.
debug1: Connection established.
debug1: identity file ~/.ssh/id_rsa type -1
debug1: identity file ~/.ssh/id_rsa-cert type -1
debug1: identity file ~/.ssh/id_dsa type -1
debug1: identity file ~/.ssh/id_dsa-cert type -1
debug1: identity file ~/.ssh/id_ecdsa type -1
debug1: identity file ~/.ssh/id_ecdsa-cert type -1
ssh_exchange_identification: Connection closed by remote host
lost connection

Я предположил, что, поскольку моя виртуальная машина, похоже, не имеет физического сетевого адаптера, работа в сети будет невозможна. Поэтому я вызываю QEMU так:

/qemu-system-ppc -nographic -M mpc8544ds -m 512 -kernel ~/CrossCompilation/zImage -hda ~/CrossCompilation/rootfs.cpio -netdev user,id=network0 -device e1000,netdev=network0 -append "root=/dev/sda rw" -redir tcp:2222::22

Пока не повезло. Фактически, это даже не добавляет никакого нового физического адаптера Ethernet (как я думал). Единственный «живой» адаптер, как и раньше, - это адаптер обратной петли.

ifconfig
lo    Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Раньше у меня создалось впечатление, что, возможно, это происходит, поскольку на виртуальной машине не работает ssh deamon, поэтому я добавил Dropbear в список целевых пакетов, и он запускается во время загрузки виртуальной машины (он отображается как часть журнала запуска) . Тем не менее, он терпит неудачу с той же ошибкой. Очевидно, это не кажется виновным.

Я не уверен, связано ли это с настройкой сети на моей виртуальной машине или, возможно, что-то нужно добавить в rootfs (busybox).

Жду, чтобы услышать.


person HighOnMeat    schedule 26.11.2014    source источник
comment
Подведен ли сетевой интерфейс к вашей виртуальной машине? Используйте ifconfig -a вместо ifconfig. По умолчанию отображается только eth0, и я думаю, вы вместо этого назвали свой сетевой интерфейс network0.   -  person Arnout    schedule 05.12.2014
comment
На самом деле я сделал это, и он показал довольно много адаптеров, но показывает только адаптер обратной петли. Я пробовал играть с файлом interfaces, добавляя ручную запись для eth0. Но, по-видимому, сама виртуальная машина не имеет настоящего eth0.   -  person HighOnMeat    schedule 06.12.2014
comment
Действительно, он называется по-другому. Однако я не знаю, как это называется. Может, список интерфейсов выложить?   -  person Arnout    schedule 08.12.2014
comment
вы пробовали -net nic -net tap? Это создаст tapX на хосте, который вы можете настроить с помощью _3 _...   -  person F. Hauri    schedule 12.04.2015
comment
Ой, да, теперь я вижу этот интерфейс. Так можно ли сказать ssh подключиться к порту 2222 через этот новый tap0 iface? Если да, то как это сделать?   -  person HighOnMeat    schedule 12.04.2015
comment
Я назначил ему IP-адрес 10.1.2.3/24. Интерфейс показывает UP и RUNNING на хосте. Однако, когда я пытаюсь подключиться к нему с хоста, обнаруживается, что в соединении отказано. Мой гость использует dropbear sshd (если это важно)   -  person HighOnMeat    schedule 12.04.2015


Ответы (2)


Если у вас нет сетевого адаптера, лучше всего смонтировать общий диск. На этой странице есть информация о создании и изменении дисков с системой ARM1176JZF-S:

http://xecdesign.com/working-with-qemu/

person Steve Tauber    schedule 03.12.2014
comment
Что ж .. спасибо за ссылку, хотя она ничего не говорит о межсетевом взаимодействии между хостами и гостями .. - person HighOnMeat; 03.12.2014
comment
Вам нужно создать диск на главном компьютере, добавить файлы, затем размонтировать его, а затем смонтировать на виртуальной машине. - person Steve Tauber; 04.12.2014
comment
Я создал новый образ диска и смонтировал его. Затем я скопировал в него двоичный файл своего модуля, а затем отключил его. Я добавил дополнительный диск к виртуальной машине qemu, включив -hdb 'name of disk' в вызов командной строки. Однако я нигде не вижу его смонтированного. Я также не вижу его нигде в каталоге /dev. Я считаю, что он должен отображаться как /dev/hdb или /dev/sdb. Я здесь? Что могло пойти не так? - person HighOnMeat; 13.12.2014

Проверено на Buildroot 2016.05, QEMU 2.5.0 x86_64, хосте Ubuntu 16.04

Я не занимаюсь PPC, но это тоже должно сработать. Дай мне знать, если нет.

Начните с qemu_x86_64_defconfig и включите пакет openssh.

Запустите QEMU с:

qemu-system-x86_64 \
  -M pc \
  -append root=/dev/vda \
  -drive file=output/images/rootfs.ext2,if=virtio,format=raw \
  -enable-kvm \
  -kernel output/images/bzImage \
  -m 512 \
  -net nic,model=virtio \
  -net user,hostfwd=tcp::2222-:22

Затем по гостю:

vi /etc/ssh/sshd_config

Измените следующие настройки:

PermitRootLogin yes
PermitEmptyPassword yes

И перезапустите сервер:

/etc/init.d/50sshd restart

Поскольку этот файл существует, sshd запускается по умолчанию.

Затем с хоста:

ssh root@localhost -p 2222

В случае сбоя также проверьте логи сервера на гостевой системе:

less /var/log/messages

Затем в последней системе вы должны автоматизировать создание этого файла журнала с помощью BR2_ROOTFS_OVERLAY или BR2_ROOTFS_POST_BUILD_SCRIPT: https://buildroot.org/downloads/manual/manual.html#rootfs-custom

person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 02.09.2016