Почему дистрибутивы (, например. Arch )использует ОБА initramfs и root={smth}?

В исходной попытке было две проблемы:

[ldl@ServerA ~]$ sudo ssh -N -f -L 222:43.24.24.29:22 admin@10.10.10.1

При этом SSH запускается от имени root, поэтому ограничение на прослушивание только локальных портов с номерами >=1024 не применяется. Но поскольку вы не указали bind_address, клиент SSH следовал настройке по умолчанию GatewayPorts на стороне клиента -, которая предназначена для прослушивания только на локальном хосте, и поэтому вам не удалось подключиться к нему со своего ПК.

Кроме того, вы указали удаленный конец туннеля как 43.24.24.29 :22, поэтому, даже если бы вы могли использовать туннель, он просто подключился бы обратно к серверу A sshd.

Чтобы это исправить:

[ldl@ServerA ~]$ sudo ssh -N -f -L "*:222:localhost:22" admin@10.10.10.1

Дополнительная часть *:указывает клиенту SSH разрешать подключения к туннелю с любого IP-адреса, а не только с локального хоста. Добавлены двойные кавычки, чтобы оболочка не выполняла подстановочные знаки для звездочки. И назначение туннеля «localhost :22» применяется на удаленном конце этого SSH-соединения, которое уже будет на сервере B.

Затем вы сможете сделать это на своем ПК:

aircrafts-MBP:~ ldl$ ssh root@43.24.24.29 -p 222
...possibly a SSH host key warning and/or a password prompt...
[root@ServerB ~]#

Если нет необходимости специально использовать порт 222,использование номера порта больше 1023 устранит необходимость в sudo.

[ldl@ServerA ~]$ ssh -N -f -L "*:2222:localhost:22" admin@10.10.10.1

aircrafts-MBP:~ ldl$ ssh root@43.24.24.29 -p 2222
...possibly a SSH host key warning and/or a password prompt...
[root@ServerB ~]#

Есть и другой способ снять шкуру с этой кошки. Вы можете сделать это на своем ПК:

aircrafts-MBP:~ ldl$ ssh -L 2222:10.10.10.1:22 ldl@43.23.23.39
[ldl@ServerA ~]$

... чтобы получить пригодную для использования оболочку на сервере A, а также перенаправить на сервер B.

А затем в другом окне терминала:

aircrafts-MBP:~ ldl$ ssh -p 2222 root@localhost
...possibly a SSH host key warning and/or a password prompt...
[root@ServerB ~]#

В этом наборе -первый сеанс SSH на ПК устанавливает прослушивающий прокси-сервер в протоколе TCP/2222 на ПК, перенаправляет весь трафик на сервер A, а затем устанавливает «обычное» TCP-соединение с сервера A на порт. 22 сервера ServerB для передачи трафика, поступающего на порт прослушивания клиента. Но поскольку второй сеанс с использованием прокси-сервера также является сеансом SSH, переход с ПК на сервер A будет осуществляться по SSH -внутри -SSH, а с сервера A на сервер B будет просто по SSH.

1
20.04.2021, 22:41
1 ответ

I thought the goal of initramfs is to boot a root partition and chroot into it.

Не совсем, нет. Насколько я помню из истории Linux, предшественник initramfs (initrd )был смонтирован и /linuxrcзапускался, а затем выход(см. устаревший механизм смены корня). Тогда ядро ​​возьмет на себя ответственность за монтирование root. Позже работа по монтированию root и повороту в него была передана initramfs и /init, которая не завершается.

Это показывает, что initramfs — это гораздо больше, чем просто монтирование и chroot.

Линус Торвальдс назвал initramfs двумя причинами:

  • «упростить для людей настройку исходной системы без приходится возиться с кодом ядра или даже использовать другую последовательность загрузки."

  • «Многие вещи гораздо проще сделать в пользовательском пространстве, потому что пользовательское пространство имеет защиту, «бесконечный стек» и в целом намного лучше инфраструктура (т.е. легче отлаживать и т. д. )."


But I can't understand why do distro developers use initramfs if there is ALWAYS a root={smth} flag.

Я бы подумал об initramfs как об одной скомпилированной программе. Конечно, технически это файловая система, содержащая скрипты и двоичные файлы, но обычно она не содержит (большой )конфигурации. Некоторые параметры лучше предоставить пользователю для изменения во время выполнения, а не жестко -кодировать их.

Это позволяет вам изменить запуск вашей системы в вашем загрузчике (, например, :grub )без необходимости повторной -компиляции части вашей системы. В grub это так же просто, как нажать e в пункте меню.

Initramfs имеет доступ к параметрам ядра через /proc/cmdline. Таким образом, даже через /root, возможно, изначально предполагалось, что это конфигурация ядра, но она живет как конфигурация initramfs.

1
28.04.2021, 22:51

Теги

Похожие вопросы