LINUX.ORG.RU
ФорумAdmin

initrd, nash: что за f*ck?!


0

0

Привет.

Вчера сутки имел интим с серваком, так и не понял, что за. Вкратце задача заключалась в переезде на новый raid-массив и контроллер. Прицепил к своему компу (i875) контроллер (SRCU31a), проинитил массив, поставил мандрык 10 (единственный известный мне дистр, который с лёту подхватывает интеловские raid`ы), загрузился без проблем.

Скачал ядро 2.4.32 (пока не доверяю 2.6, на дистре стоит 2.6.3 - может, разубедит кто?), скомпилял, поставил. Ядро грузится, до инита не доходит. Посмотрел опции лила - ага, devfs=mount. Скомпилял с поддержкой devfs, сделал initrd - шуршит, молотит, красота.

Переткнул массив с контроллером на сервер (i7500cw2) - и оппппа! Непосредственно перед инитом вываливается "mkrootdev: failed to create inode: 17" и всё. Висеть не висит, инит не грузит... Тут я впервые увидел nash, ее linuxrc и вообще осознал, что я НЕ ПОНИМАЮ, что это за хрень и зачем она нужна. Ну и почему она не работает, тоже не понял.

Внимание, вопрос: нафига нужен devfs, зачем ядро не может грузиться по старинке, напрямую цепляя init, а нуждается в initrd, хитровыколупнутым методом перемонтирующем все файловые системы, как наперсточник на рынке, и как можно (и можно ли) избежать этой ашыпки? Все драйвера вкомпилены в ядро, так что мне этот initrd нафик не сдался, всю жизнь без него работал.

Пока, проebookавшись с 19 вечера до 04.30 ночи (перекопав этот initrd, linuxrc, /dev и т.д.) не добился ничего понятного, оставил машину работать на 2.6.3 и поехал спать. Сижу вот боюсь, бо слышал про проблемы 2.6 и интеловских raid`ов...

Посоветуйте, плз, знатоки!

Спасибо,
я.


> поставил мандрык 10 (единственный известный мне дистр, который с лёту подхватывает интеловские raid`ы)

Нет понятия "интеловского рейда" :-) Есть AMI/LSI Logic megaraid и всякие софтовые недоубожества

> Скачал ядро 2.4.32 (пока не доверяю 2.6, на дистре стоит 2.6.3 - может, разубедит кто?)

Клиника.

> Внимание, вопрос: нафига нужен devfs, зачем ядро не может грузиться по старинке, напрямую цепляя init, а нуждается в initrd, хитровыколупнутым методом перемонтирующем все файловые системы

Ты в курсе, что есть например megaraid2 и megaraid, между собой несовместные, при этом второй позволяет рулить железкой через софт (линуксово-жабский), поставляемый с серером? А в курсе, что вместе они не живут, некоторым железкам нужен новый драйвер, а некоторым старый? А initrd позволяет не вшивать в ядро драйверы, нужные для rootfs mount, и грузить их по ходу дела.

> оставил машину работать на 2.6.3 и поехал спать.

Подыми его до 2.6.14.2 и все будет путем. Весной пустили двуглавую железку на 2.6.11, за полгода ни одного нарекания. Контроллер, кстати, megaraid в интеловской сборке :-)

И напоследок - ты в курсе, что initrd от многих дистрибутивов на 2.6 жестоко не совместим с 2.4 как из-за отсутствия в последнем sysfs и неработоспособности udev, а devfs давно выкинули из 2.6 - да и в 2.4 он был experimental?

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

no-dashi:

1. Сам не свищу - и другим не советую - о том, чего не знаю.
http://intel.com/support/motherboards/server/srcu31a/ - не супер-гипер, но я и не самбу на миллион клиентов на нем держу. Всего лишь веб-мыл-днс, и один-единственный бзик - REDUNDANCY.

Или ты имел в виду, что U31 можно поднять под иными, нежели gdth, дровами? Тогда с этого места и поподробнее.

2. Спасиб. Так и думал.

3. В курсе. Я собрал ядро себе, под свои железки, как делаю всегда.

4. Были нарекания на связку 2.6.13+ и gdth, потому и боюсь 2.6. Последняя (СОВСЕМ последняя) версия gdth сделана для 2.4.

5. Жестоко? Тогда бы этот дистр ВООБЩЕ не поднялся ни на одной машине. Ты вопрос перечитай, коллега :)

Удач,
я.

billy
() автор топика
Ответ на: комментарий от billy

Ладно. Я сдаюсь. Расскажите мне, как грузится система на 2.6?!! Раньше (до 2.4) ядро просто цепляло init, есть там initrd, нету, цепляло - И ВСЕ! Если не могло найти инита - вываливалось с соответствующим воплем.

А сейчас?! Или это конкретный глюк конкретно десятого мандрыка?

billy
() автор топика
Ответ на: комментарий от billy

> Расскажите мне, как грузится система на 2.6?!

Также, как 2.4 - загружается ядро и разжимается initrd.img

Последний монтируется как некоторая (заострять детали не будем :-)) фс.

Затем запускается linuxrc или его аналог, который подтягивает драйверы, инициализирует устройства, загружает драйверы ФС, перемонтирует корневую ФС и только затем поднимает init с корневой фс. Грабли возможны в разные моменты времени - например, драйвер может инициализировать девайсы асинхронно, или требовать опции при загрузке, или еще чего.

Если ты считаешь, что тебе initrd не нужен - просто убери его из конфигурации загрузчика.

P.S.: а что говорит lspci на твой интелевый райд? Уж не Adaptec ли это i2o raid? :-)

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Итак, подробности.

1. Про то, как работает initrd, мы в школе проходили :) Вопрос в том, ПОЧЕМУ инит не происходит БЕЗ initrd в ДАННОМ случае! Последнее сообщение - 144k unused kernel memory freed - и всё, сушите весла. Ни kernel panic, ни-че-го. Сидим ждем у моря погоды. Даже не висит машина - можно понажимать кнопки, можно три педали - перегружается. В то же время 2.6 грузится спокойно. В то же время ТО ЖЕ САМОЕ 2.4 грузится с ТОГО ЖЕ массива, воткнутого с тем же контроллером, но в другой комп!!!

2. Убирал, натюрлих. Те же яйцы, только в профиль. Мне кажется, этот linuxrc делает какую-то devfs, без которой не происходит инит, вот в чем грабли. Как можно обойти эту devfs, чтоб грузиться по-людски?

3. Это не adaptec i2o. Это gdth, я ж говорил. По i2o работал старый контроллер SRCU21, причем пахал 5 лет без сучка и задоринки. Была мысль и этот подцепить по i2o, но знатоки посоветовали gdth как более шуструю альтернативу: вся затея с заменой контроллера происходит именно по причине жуткого тормозилова старого массива.

Вот полный lspci:
00:00.0 Host bridge: Intel Corp. E7500 Memory Controller Hub (rev 03)
00:00.1 Class ff00: Intel Corp. E7000 Series Host RASUM Controller (rev 03)
00:02.0 PCI bridge: Intel Corp. E7000 Series Hub Interface B PCI-to-PCI Bridge (rev 03)
00:1e.0 PCI bridge: Intel Corp. 82801BA/CA/DB/EB PCI Bridge (rev 42)
00:1f.0 ISA bridge: Intel Corp. 82801CA LPC Interface Controller (rev 02)
00:1f.1 IDE interface: Intel Corp. 82801CA Ultra ATA Storage Controller (rev 02)
00:1f.3 SMBus: Intel Corp. 82801CA/CAM SMBus Controller (rev 02)
01:1c.0 PIC: Intel Corp. 82870P2 P64H2 I/OxAPIC (rev 04)
01:1d.0 PCI bridge: Intel Corp. 82870P2 P64H2 Hub PCI Bridge (rev 04)
01:1e.0 PIC: Intel Corp. 82870P2 P64H2 I/OxAPIC (rev 04)
01:1f.0 PCI bridge: Intel Corp. 82870P2 P64H2 Hub PCI Bridge (rev 04)
02:01.0 Ethernet controller: Intel Corp. 82545EM Gigabit Ethernet Controller (Copper) (rev 04)
03:01.0 RAID bus controller: Intel Corp. RAID Controller
04:03.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27)

billy
() автор топика
Ответ на: комментарий от billy

Ладно, по шагам:

if (Сервер уже работал?)
   if (Если уже работал, на каком ядре)
        if (Если на 2.6)
             то с чего ты решил, что он
             под 2.4 когда-либо вообще мог работать?
        else
             Если работал на 2.4 - ты просто ядро криво собрал

:-)

no-dashi ★★★★★
()
Ответ на: комментарий от billy

Just FYI: 2.6.14.2 стартанула без пинка и очень шустро молотит.

Только драйвер gdth, нехороший человек, ругнулся на старте следующими словами:
<code>
Nov 21 16:40:23 mail kernel: GDT-HA: Storage RAID Controller Driver. Version: 3.04
Nov 21 16:40:23 mail kernel: GDT-HA: Found 1 PCI Storage RAID Controllers
Nov 21 16:40:23 mail kernel: Configuring GDT-PCI HA at 3/1 IRQ 48
Nov 21 16:40:23 mail kernel: GDT-HA 0: Name: SRCU31
Nov 21 16:40:23 mail kernel: scsi0 : SRCU31
Nov 21 16:40:23 mail kernel: Vendor: Intel Model: Host Drive #00 Rev:
Nov 21 16:40:23 mail kernel: Type: Direct-Access ANSI SCSI revision: 02
Nov 21 16:40:23 mail kernel: SCSI device sda: 286471080 512-byte hdwr sectors (146673 MB)
Nov 21 16:40:23 mail kernel: sda: got wrong page
Nov 21 16:40:23 mail kernel: sda: assuming drive cache: write through
Nov 21 16:40:23 mail kernel: SCSI device sda: 286471080 512-byte hdwr sectors (146673 MB)
Nov 21 16:40:23 mail kernel: sda: got wrong page
Nov 21 16:40:23 mail kernel: sda: assuming drive cache: write through
Nov 21 16:40:23 mail kernel: sda: sda1 sda2 < sda5 sda6 sda7 >
Nov 21 16:40:23 mail kernel: Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
Nov 21 16:40:23 mail kernel: Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0, type 0
</code>

И родная storage console не может найтить контроллер...

А так всё ок.

billy
() автор топика
Ответ на: комментарий от billy

Ежли кому интересно.

Автор драйвера ответил, что сказевая подсистема 2.6.14.2 ворчит на драйвер, т.к. он не поддерживает запрос на наличие write-back кэша, хотя кэш есть и работает без проблем. В следующей версии будет пофиксено.

Storage console свежей версии скачивается с сайта vortex.de.

Вуаля.

billy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.