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.
next prev parent 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