У меня есть доступ к установке Ubuntu 16.04, который способен работать определенную бинарную (это некоторая версия LPMUD , скомпилированных с неизвестными параметрами), но Я не могу запустить один и тот же двоичный файл на другой установке Ubuntu 16.04 - на второй системе двоичный провал с ошибкой сегментации.
Я не очень заинтересован в том, чтобы сделать точную копию первой системы - я хотел бы знать, что именно нужно для двоичного для бега, поэтому я могу создать минимальную установку Ubuntu, которая может запустить двоичную.
Что будет лучшим подходом? Я думал о извлечении списка установленных пакетов (с использованием списка APT
) и каталог ) и / etc
, повторный установку пакетов во второй системе и копированием / ETC
каталог.
Я знаю, что есть много причин, почему двоичный файл может SegFault в другую систему, но я хотел бы попробовать некоторые менее интенсивные подходы к данным, прежде чем пытаться сузить окружающую среду с битовой копии Отказ
Это разумный подход? У кого-нибудь есть идея, как улучшить шансы на успех?
Редактировать - больше информации о бинарном:
$ file driver
driver: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, stripped
$ ldd driver
statically linked
$ gdb driver
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
"/mud/bin/driver": not in executable format: File format not recognized
Попытка отладки с 32-битной версией GDB приносит аналогичные результаты:
$ gdb driver
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
"/mud/bin/driver": not in executable format: File format not recognized
(gdb) show configuration
This GDB was configured as follows:
configure --host=i686-linux-gnu --target=i686-linux-gnu
--with-auto-load-dir=$debugdir:$datadir/auto-load
--with-auto-load-safe-path=$debugdir:$datadir/auto-load
--with-expat
--with-gdb-datadir=/usr/share/gdb (relocatable)
--with-jit-reader-dir=/usr/lib/gdb (relocatable)
--without-libunwind-ia64
--with-lzma
--with-python=/usr (relocatable)
--without-guile
--with-separate-debug-dir=/usr/lib/debug (relocatable)
--with-system-gdbinit=/etc/gdb/gdbinit
--with-babeltrace
("Relocatable" means the directory can be moved with the GDB installation
tree, and GDB will still find it.)
(gdb)
$ strace -o ./log ./driver ; cat ./log
execve("./driver", ["./driver"], [/* 9 vars */]) = 0
brk(NULL) = 0x8952000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xf7f89000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
set_thread_area({entry_number:-1, base_addr:0xf7f89a80, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 (entry_number:12)
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x4} ---
+++ killed by SIGSEGV (core dumped) +++
-121--891618- Совершенно новый Ubuntu Установка:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
SSH.Service
не может запуститься из-за порта 22 уже в использовании:
$ sudo service ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Thu 2021-02-04 14:10:27 CST; 11min ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 2041 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Process: 2042 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=255/EXCEPTION)
Main PID: 2042 (code=exited, status=255/EXCEPTION)
Feb 04 14:10:27 ubu20a systemd[1]: Starting OpenBSD Secure Shell server...
Feb 04 14:10:27 ubu20a sshd[2042]: error: Bind to port 22 on 0.0.0.0 failed: Address already in use.
Feb 04 14:10:27 ubu20a sshd[2042]: error: Bind to port 22 on :: failed: Address already in use.
Feb 04 14:10:27 ubu20a sshd[2042]: fatal: Cannot bind any address.
Feb 04 14:10:27 ubu20a systemd[1]: ssh.service: Main process exited, code=exited, status=255/EXCEPTION
Feb 04 14:10:27 ubu20a systemd[1]: ssh.service: Failed with result 'exit-code'.
Feb 04 14:10:27 ubu20a systemd[1]: Failed to start OpenBSD Secure Shell server.
только что я вижу слушающуюся по порту 22 1 / init
:
$ sudo netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 101 34051 556/systemd-resolve
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 0 37066 745/cupsd
tcp6 0 0 :::22 :::* LISTEN 0 34718 1/init
udp 0 0 0.0.0.0:5353 0.0.0.0:* 115 37068 743/avahi-daemon: r
udp 0 0 0.0.0.0:52172 0.0.0.0:* 115 37070 743/avahi-daemon: r
udp 0 0 127.0.0.53:53 0.0.0.0:* 101 34047 556/systemd-resolve
udp 0 0 0.0.0.0:631 0.0.0.0:* 0 39715 822/cups-browsed
udp6 0 0 :::5353 :::* 115 37069 743/avahi-daemon: r
udp6 0 0 :::39012 :::* 115 37071 743/avahi-daemon: r
В то время как I может get SSH.Service
для запуска на альтернативный порт (например, порт 2020), который я хотел бы понять и исправьте (если возможно), эта текущая проблема с портом 22.
Примечания :
RTFM
, то ссылка на который FMTR
будет оценен немного долго для комментариев ...
Я взял @ предложение Steeldriver и провел предложенные SystemCTL
Call:
$ systemctl -all list-sockets
LISTEN UNITS ACTIVATES
... snip ...
/run/udev/control systemd-udevd-control.socket systemd-udevd.service
/run/uuidd/request uuidd.socket uuidd.service
[::]:22 tinysshd.socket tinysshd@0.service
audit 1 systemd-journald-audit.socket systemd-journald.service
kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
представляет интерес 3-я строка вверх со дна ... что-то называемое Tinysshd
Прослушивание в порту 22.
Я не мог найти никакого объяснения для чего Tinysshd
делает (т. Е. Не появляется Чтобы быть системой требуемой службой), поэтому я удалил Tinysshd
и смог успешно запустить службу SSH
:
$ sudo service ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-02-04 15:14:34 CST; 3s ago
Docs: man:sshd(8)
man:sshd_config(5)
Process: 3887 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 3888 (sshd)
Tasks: 1 (limit: 7032)
Memory: 1.3M
CGroup: /system.slice/ssh.service
└─3888 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
Feb 04 15:14:34 ubu20a systemd[1]: Starting OpenBSD Secure Shell server...
Feb 04 15:14:34 ubu20a sshd[3888]: Server listening on 0.0.0.0 port 22.
Feb 04 15:14:34 ubu20a sshd[3888]: Server listening on :: port 22.
Feb 04 15:14:34 ubu20a systemd[1]: Started OpenBSD Secure Shell server.
Я также могу увидеть SSHD
, слушающий порт 22:
$ sudo netstat -tulpen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
...snip ...
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 66119 3888/sshd: /usr/sbi
tcp6 0 0 :::22 :::* LISTEN 0 66121 3888/sshd: /usr/sbi
... snip ...
Другая мысль, как у меня была такая же проблема. Когда я включил SSH на моем маршруте, он автоматически взял порт 22 для SSH на маршрутизатор, и это не было меняе. Я никогда не мог бы сделать SSH на компьютерную работу, пока я не осознал, сделаю портовой триггер, чтобы другой порт сказал, например, 2222 пошел на 22 локального этого компьютера и вуаля, у меня был SSH.
Попробуйте определить, какой порт приложения выделяет порт через эту команду:
sudo lsof -i -P -n | grep LISTEN
и сделать дизайн, что делать дальше