nixp.ru v3.0

26 мая 2017,
пятница,
23:57:06 MSK

DevOps с компанией «Флант»
Аватар пользователя DimkaS
DimkaS написал 2 сентября 2007 года в 23:21 (1291 просмотр) Ведет себя как мужчина; открыл 84 темы в форуме, оставил 922 комментария на сайте.

Установил Etch на новую систему. Вылезла непонятная проблема с сетевухами:

box:~# ifconfig eth0 up
eth0: ERROR while getting interface flags: No such device
box:~# ifconfig eth1 up
eth1: ERROR while getting interface flags: No such device
из dmesg:
forcedeth: using HIGHDMA
0000:00:07.0: Invalid Mac address detected: 51:e4:0b:66:19:00
Please complain to your hardware vendor. Switching to a random MAC.
eth0: forcedeth.c: subsystem: 01849:03ef bound to 0000:00:07.0
eth1: RealTek RTL8139 at 0xe800, 00:e0:4c:10:47:6a, IRQ 50
eth1:  Identified 8139 chip type 'RTL-8100B/8139D'

Сначала я решил, что проблема со встроенной сетевухой (eth0). Мак-адрес написан задом наперёд, по сравнению с тем, что у меня в конфиге dhcp-сервера. Устанавливал систему через tftp-boot и сетевуха отлично работала. Тогда я вставил Realtek (eth1), который до сегодняшнего дня отлично работал на машинке с Debian Testing. Та же фигня. Не могу понять, почему так происходит?

Судя по тому, что проблемы с обоими сетевухами, дело не в них, а в системе. Может LVM быть к этому причастен?

<font color=«blue»>Описание мамки</font>

DimkaS

Методом перебора удалось выяснить, что на самом деле сетевухам соответствовали устройства eth5 и eth7. После удаления реалтека и перезагрузки встроенная сетевуха стала eth8, т.к. udev присваивал новое имя каждому устройству с новым маком, а для встроенной сетевухи мак генерится заново при перезагрузке. Попытался решить проблему заменой случайной части мак-адреса звёздочками в правиле udev, но после перезагрузки интерфейс всё равно не поднимается, хотя и определяется уже как eth0.

Всё же интересно, почему мак задом наперёд прочитан?

Genie

?

DimkaS
Genie
?

Не совсем.

Погуглив на тему кривого мака выяснил, что это косяк драйвера forcedeth, в новой версии всё исправлено. Собрал свежее 2.6.22.6, установил, запустил mkinitrd, а он ругается, что ядро собрано без LVM. Я опять в гугл, он говорит, initrd выпендривается, если LVM в ядре, а не модулем. Пересобрал ядро с LVM в модуле. Снова запустил mkinitrd. Он выдал несколько строчек вида File descriptor 3 left open, сообщил, что нашёл все тома и таки создал initrd. Далее, я добавил свежее ядро в /boot/grub/menu.list и перезагрузился. Ядро начало грузиться, но потом посыпались сообщения вида devfs not found, а затем настал kernel-panic по причине /devfs/mapper not found. Т.е. несмотря на наличие LVM в initrd корневая ФС не видится.

Что делать?

Жёсткий разбит так: boot, swap LVM, на котором одна группа из двух томов / и home.

Genie

ммм? devfs? с чего бы это?

вроде бы должен быть udev, или я что-то перепутал?

ну и касательно mapper, как оно у тебя, типа такого?

zegrep -i '^[^#].*_DM(_|$)' /proc/config.gz
CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m
CONFIG_DM_MULTIPATH_EMC=m
CONFIG_DM_MULTIPATH_RDAC=m
CONFIG_DM_DELAY=m

и вообще, debug в опции ядра, и вывод на чём паникует.

кроме того, возьми-ка конфиг от ядра из Etch и пересобери с ним. ничего особо не меняя

DimkaS

Вот я тоже не могу понять, при чём тут devfs.

CONFIG_BLK_DEV_DM=m
# CONFIG_DM_DEBUG is not set
# CONFIG_DM_CRYPT is not set
# CONFIG_DM_SNAPSHOT is not set
# CONFIG_DM_MIRROR is not set
# CONFIG_DM_ZERO is not set
# CONFIG_DM_MULTIPATH is not set
# CONFIG_DM_DELAY is not set

Что это значит?

кроме того, возьми-ка конфиг от ядра из Etch и пересобери с ним. ничего особо не меняя

Точно! сейчас попробую.

Genie
Что это значит?

чего-то меня не туда проглючило, хотя это тоже полезно. у тебя дополнительные фичи dev_mapper на разрешены… полезны иногда

но сам dev_mapper у тебя сконфигурирован…

кроме того, смотри, есть ли у тебя поддержка твоего RAID:

$ zegrep -i 'MD_' /proc/config.gz
CONFIG_MD_LINEAR=m
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID10=m
CONFIG_MD_RAID456=m
CONFIG_MD_RAID5_RESHAPE=y
CONFIG_MD_MULTIPATH=m
CONFIG_MD_FAULTY=m
DimkaS

Что-то не очень получилось. Вывод такой:

initrd-tools 0.1.84.2
mount: unknown filesystem type: 'devfs'
device-mapper: ioctl:4.11.0-ioctl (2006-10-12) initialized: dm-devel@redhat.com
mkdir: cannon create directory '/devfs/grp1': Read-only filesystem
mount: unknown filesystem type: 'devfs'
     Volume group "grp1" not found
umount: /dev: not mounted
umount: devfs: not mounted
mount: unknown filesystem type: 'devfs'
umount: devfs: not mounted
pivot_root: No such file or directory
/sbin/init: 432: cannot open dev/console: No such file
Kernel panic - not syncing: Attempted to kill init!

Конфиг такой:

dimka@box:~$ egrep -i '^[^#].*_DM(_|$)' /boot/config-2.6.22.6
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_MIRROR=m
CONFIG_DM_ZERO=m
CONFIG_DM_MULTIPATH=m

fstab

# /etc/fstab: static file system information.
#
#                
proc            /proc           proc    defaults        0       0
/dev/mapper/grp1-sys /               ext3    defaults,errors=remount-ro 0       1
/dev/hda1       /boot           ext3    defaults        0       2
/dev/mapper/grp1-home /home           ext3    defaults        0       2
/dev/hda2       none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0

menu.list (частично)

## ## End Default Options ##
title           Debian GNU/Linux, kernel 2.6.18-5-k7
root            (hd0,0)
kernel          /vmlinuz-2.6.18-5-k7 root=/dev/mapper/grp1-sys ro
initrd          /initrd.img-2.6.18-5-k7
savedefault
title           Debian GNU/Linux, kernel 2.6.18-5-k7 (single-user mode)
root            (hd0,0)
kernel          /vmlinuz-2.6.18-5-k7 root=/dev/mapper/grp1-sys ro single
initrd          /initrd.img-2.6.18-5-k7
savedefault
### END DEBIAN AUTOMAGIC KERNELS LIST
title           Debian GNU/Linux, kernel 2.6.22.6
root            (hd0,0)
kernel          /vmlinuz-2.6.22.6 root=/dev/mapper/grp1-sys ro
initrd          /initrd.img-2.6.22.6
savedefault

initrd делал командой mkinitrd -o /boot/initrd.img-2.6.22.6 2.6.22.6

Вот. Где я ошибся?

Genie

1) я не могу найти в последних ядрах упоминания о devfs вообще. то есть, где-то после 2.6.18 его выкинули, как и обещались.

утилиты lvm, которые в etch, похоже не могут работать без поддержки devfs.

хотя, должен заметить, что 2.6.21, стоящее у меня на десктопе, работает с lvm (но lvm не используется для /)

попробуй обновить соответствующие утилиты.

2) есть подозрение, что у тебя винты переехали с hd* на sd* — не за счёт эмуляции scsi, а за счёт драйвера libata/pata_amd.

поэтому смотри внимательно вывод сообщений ядра

3) добавь в fstab:

sysfs           /sys            sysfs   defaults        0       0
metal

А нужен ли тебе initrd? Попробуй все файлухи необходимые при загрузке и lvm включить в ядро.

DimkaS

Genie

1) Обновлять пока нечего — у меня и так testing. Причём, родное 2.6.18-5 без проблем работает. Я делал oldconfig, выбирая дефолтные ответы для новых опций. Безрезультатно.

2) Проверял. Определяется именно как hda.

3) Добавил, но результата нету.

metal

попробую вечерком

Genie

cat /proc/mounts

DimkaS
cat /proc/mounts



dimka@box:~$ cat /proc/mounts
rootfs / rootfs rw 0 0
none /sys sysfs rw 0 0
none /proc proc rw 0 0
udev /dev tmpfs rw 0 0
/dev/mapper/grp1-sys / ext3 rw,data=ordered 0 0
/dev/mapper/grp1-sys /dev/.static/dev ext3 rw,data=ordered 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid 0 0
usbfs /proc/bus/usb usbfs rw,nosuid,nodev,noexec 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec 0 0
/dev/hda1 /boot ext3 rw,data=ordered 0 0
/dev/mapper/grp1-home /home ext3 rw,data=ordered 0 0

В принципе, на 2.6.22.6 можно пока забить — всё и так работает, только для корректного определения интерфейса пришлось поправить правило udev:

# PCI device 0x10de:0x03ef (forcedeth)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:00:6c:*:*:*", NAME="eth0"

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

Genie

поковырявшись в системе на ноуте и на десктопе, обнаружить mkinitrd у себя не смог. при создании образа ядра у меня используется mkinitramfs.

поэтому, попробуй создать initrd этой утилитой. ну или

$ update-initramfs -c -k 2.6.22.6
DimkaS
Genie
попробуй создать initrd этой утилитой. ну или

$ update-initramfs -c -k 2.6.22.6

Ты гений! =) надо было только старый initrd убрать. И всё заработало! =)

Огромное спасибо!

dimka@box:~$ uname -a
Linux box 2.6.22.6 #12 SMP Tue Sep 4 23:28:38 MSD 2007 i686 GNU/Linux
dimka@box:~$ mount |grep mapper
/dev/mapper/grp1-sys on / type ext3 (rw,errors=remount-ro)
/dev/mapper/grp1-home on /home type ext3 (rw)
Genie
DimkaS
Ты гений! =)


спасибо на добром слове ;)

DimkaS
надо было только старый initrd убрать.


или man почитать, -u использовать

DimkaS
И всё заработало! =)


замечательно :)

а что насчёт сетевой карточки, ради которой и затевалось сие обновление?

DimkaS
Огромное спасибо!


приходите ешё ;)

DimkaS
или man почитать, -u использовать

Пробовал. Говорит, не я создавал, не мне и удалять. Пришлось руками.

а что насчёт сетевой карточки, ради которой и затевалось сие обновление?

Как я и говорил, в forcedeth.c версии 0.6 проблема решена, мак нормально читается.

приходите ешё ;)

Не сомневайся =)