Make-initrd development discussion
 help / color / mirror / Atom feed
From: Leonid Krivoshein <klark.devel@gmail.com>
To: make-initrd@lists.altlinux.org
Subject: Re: [make-initrd] udhcpc script в фиче network
Date: Wed, 22 Sep 2021 15:06:37 +0300
Message-ID: <8d262440-d8fc-c174-3293-1964e3440617@gmail.com> (raw)
In-Reply-To: <20210922114132.yaobsgcz7vrkjgbq@example.org>


22.09.2021 14:41, Alexey Gladkov пишет:
> On Wed, Sep 22, 2021 at 01:56:11PM +0300, Leonid Krivoshein wrote:
>> 22.09.2021 13:09, Alexey Gladkov пишет:
>>> On Mon, Sep 20, 2021 at 12:50:33AM +0300, Leonid Krivoshein wrote:
>>>> Вопрос в том, как заставить
>>>> снова запуститься network-up и как отлаживать это хозяйство в rdshell,
>>>> учитывая, что с ним сеть не конфигурируется.
>>> Зачем его перезапускать ?
>>>
>>> network-up в цикле проверяет все ли /sys/class/net/*, которые имеют
>>> конфигурацию, перешли в состояние online.
>>>
>>> Если в процессе ожидания появится новая конфигурация, то она также
>>> подхватится.
>> Тогда как сделать так, чтобы появилась новая конфигурация?
>>
>> Вот ничего из 4х переменных пользователь не передал через /proc/cmdline.
>> Допустим, я сделал диалог, в котором он настраивает сеть руками. Как новые
>> настройки должны попасть в фичу network, чтобы она их применила?
> Без параметра в /proc/cmdline мне кажется всё-таки не обойтись до тех пор
> пока не открыли телепатию.
>
> Можно добавить параметр network=ask и при его присутствии можно спрашивать
> о конфигурации у пользователя.
>
> Код для конфигурации интерфейса есть тут:
>
> features/network/data/lib/initrd/cmdline.d/network

У меня вчера всё же получилось добиться желаемого, вот фрагмент:

# No network settings
if [ "${IP:-0}" = 0 ] &&
         [ "${ROUTE:-0}" = 0 ] &&
         [ "${IFNAME:-0}" = 0 ] &&
         [ "${NAMESERVER:-0}" = 0 ]
then
         msg="network settings not defined in /proc/cmdline"

         if [ -n "${RDSHELL-}" ]; then
                 [ -z "$NOASKUSER" ] ||
                         fatal "$msg, dialogs are disabled"
                 message "$msg"
                 msg="N${msg:1}. Try with the option 'ip=dhcp4' after 
reboot."
                 IM_errmsg "$msg $BC_RBMSG"
                 bc_reboot
         fi

         message "$msg"

         ( echo 'export IP="1"'
           echo 'export ROUTE="0"'
           echo 'export IFNAME="0"'
           echo 'export NAMESERVER="0"'
           echo 'export IP0="dhcp4"'
         ) >> /.initrd/initenv

         ( # shellcheck disable=SC2012
           for netdev in $(ls /sys/class/net/) lo; do
                 [ "$netdev" != lo ] ||
                         continue
                 [ -r "/sys/class/net/$netdev/flags" ] ||
                         continue
                 ACTION="add" INTERFACE="$netdev" 
/lib/uevent/filters/network
           done

           /lib/initrd/cmdline.d/network
         ) >/dev/null 2>&1 &
fi

Это упрощённый вариант без диалогов. Если не указать ничего в 
/proc/cmdline, пытаемся найти интерфейсы и сконфигурировать их по 
DHCPv4. Код работает нормально, но есть один сторонний эффект. Не могу 
объяснить причину. При загрузке больших ISO-шников с mirror.yandex.ru по 
http всё ОК. При загрузке их же по ftp, первое обращение с получением 
размера файла проходит успешно, а на втором обращении (непосредственно 
скачивание образа) curl возвращает 7. Если тут же запустить скачивание 
повторно (нажать в форме ENTER, не меняя адресов), скачивание со второй 
попытки проходит успешно. Этого стороннего эффекта не возникает, если в 
/proc/cmdline добавить ip=dhcp4, я это воспроизводил многократно. Т.е. 
мой код, хоть и работает, не совсем правильно, ошибка точно связана с 
этим фрагментом.


-- 
Best regards,
Leonid Krivoshein.



  reply	other threads:[~2021-09-22 12:06 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-17 20:48 Leonid Krivoshein
2021-09-17 22:08 ` Alexey Gladkov
2021-09-19 21:50   ` Leonid Krivoshein
2021-09-21 22:51     ` Leonid Krivoshein
2021-09-22  0:16       ` Leonid Krivoshein
2021-09-22 10:01       ` Alexey Gladkov
2021-09-22 10:09     ` Alexey Gladkov
2021-09-22 10:56       ` Leonid Krivoshein
2021-09-22 11:41         ` Alexey Gladkov
2021-09-22 12:06           ` Leonid Krivoshein [this message]
2021-09-22 13:08             ` Alexey Gladkov
2021-09-22 14:46                 ` Alexey Gladkov
2021-09-22 16:12                   ` Leonid Krivoshein
2021-09-22 19:03                     ` Alexey Gladkov
2021-09-22 22:06                       ` Leonid Krivoshein
2021-09-23  0:45                         ` Alexey Gladkov
2021-09-23  2:31                           ` Антон Мидюков
2021-09-23  8:59                             ` Alexey Gladkov
2021-09-23 20:40                               ` Leonid Krivoshein
2021-09-23 21:15                                 ` Alexey Gladkov
2021-09-23 21:55                                   ` Arseny Maslennikov
2021-09-23 22:41                                     ` Alexey Gladkov
2021-09-23 22:51                                       ` Leonid Krivoshein
2021-09-23 22:56                                   ` Leonid Krivoshein
2021-09-23 23:31                                     ` Alexey Gladkov
2021-09-23  2:40                           ` Leonid Krivoshein
2021-09-23 11:38                             ` Alexey Gladkov
2021-09-24 17:31                               ` Leonid Krivoshein
2021-09-24 18:35                                 ` Leonid Krivoshein
2021-09-24 19:00                                 ` Alexey Gladkov
2021-09-24 20:09                                   ` Leonid Krivoshein
2024-03-07 19:18   ` Leonid Krivoshein
2024-03-12 17:42     ` Alexey Gladkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8d262440-d8fc-c174-3293-1964e3440617@gmail.com \
    --to=klark.devel@gmail.com \
    --cc=make-initrd@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Make-initrd development discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \
		make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com
	public-inbox-index make-initrd

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.make-initrd


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git