Создание псевдонима к петлевому интерфейсу с произвольным именем

Проверьте владельца и полномочия /var/lib/mysql/my_db моя непосредственная мысль - то, что учетная запись пользователя, выполняющая mysql демона, не имеет верных полномочий удалить папку.

Вы могли уничтожить mysqld и запустите его, поскольку корень затем пытается удалить базу данных для тестирования.

2
27.05.2013, 10:31
1 ответ

Может быть более простой путь. Но если компиляция Вашего собственного ядра является опцией, Вы могли создать драйвер на основе существующего петлевого драйвера, изменить имя (строка 193 в той версии) и загрузить модуль. У Вас был бы второй петлевой интерфейс с именем, которое Вы хотите.

Править: Чтобы быть точнее, я означаю добавлять другой петлевой драйвер, не заменяя существующий. После копирования drivers/net/loopback.c к drivers/net/loopback2.c, примените следующий патч (сделанный сверху 3,8):

diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 335db78..cba692f 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -13,7 +13,7 @@ obj-$(CONFIG_MACVLAN) += macvlan.o
 obj-$(CONFIG_MACVTAP) += macvtap.o
 obj-$(CONFIG_MII) += mii.o
 obj-$(CONFIG_MDIO) += mdio.o
-obj-$(CONFIG_NET) += Space.o loopback.o
+obj-$(CONFIG_NET) += Space.o loopback.o loopback2.o
 obj-$(CONFIG_NETCONSOLE) += netconsole.o
 obj-$(CONFIG_PHYLIB) += phy/
 obj-$(CONFIG_RIONET) += rionet.o
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 9ef07d0..ed9d82d 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -2718,6 +2718,7 @@ static inline bool netif_supports_nofcs(struct net_device *dev)
 }

 extern struct pernet_operations __net_initdata loopback_net_ops;
+extern struct pernet_operations __net_initdata loopback2_net_ops;

 /* Logging, debugging and troubleshooting/diagnostic helpers. */

diff --git a/net/core/dev.c b/net/core/dev.c
index f64e439..7c1cffb 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -6834,6 +6834,9 @@ static int __init net_dev_init(void)
        if (register_pernet_device(&loopback_net_ops))
                goto out;

+       if (register_pernet_device(&loopback2_net_ops))
+               goto out;
+
        if (register_pernet_device(&default_device_ops))
                goto out;

Я понимаю, что просто загрузка модуля не будет достаточна, поскольку это изменяет код в net/core/dev.c. У Вас также будет установка исправленным ядром.

1
27.01.2020, 22:23
  • 1
    Интересный подход. Конечно, один я открыт для исследования. Прочтение источника, тем не менее, поднимает один вопрос. Это конкретно указывает, что там только когда-либо позволяется быть одним устройством закольцовывания на сетевое пространство имен. Не будет существующий lo и мое новое предложили столкновение eth0 в корневом пространстве имен? Или Вы рекомендуете напрямую заменять lo недавно скомпилированным драйвером? И, если так, который будет иметь отрицательные последствия для существующих приложений в системе? –  phobos51594 25.04.2013, 20:10
  • 2
    Спасибо за принятие, но я не уверен, что подход работал бы, Вы могли прокомментировать здесь, если это делает? –  Frederik Deweerdt 26.04.2013, 04:14
  • 3
    Конечно. Я думаю, что подход имеет заслугу, мое единственное беспокойство регистрирует два устройства закольцовывания в том же пространстве имен. Я могу создавать другое пространство имен, которое выставляется стопке приложения и работе вокруг ограничения тот путь. Конечно, займет время, поэтому к сожалению, результаты не могут прибыть быстро. Следующий раз –  phobos51594 26.04.2013, 20:59

Теги

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