LINUX.ORG.RU

Поменять местами инициализацию контроллеров

 


0

1

Собираю файлопомоку и мне не хватает портов на матери, по этому используется дополнительный sata контроллер. Проблема в том, что его диски начали лезть первыми, т.е. до его установки диски с матери были sda, sdb; подключил первый диск через него - получил его диск sda, диски с интегрированного контроллера - sdb, sdc.

Ничего не отвалилось, потому что везде используются персистентные имена. Но мне самому удобнее помнить, что диски с интегрированного контроллера идут первыми. Можно попробовать написать udev правило, которое вытащит их первыми, но оно вроде пишется по vendor, т.е. будет привязано к самим дискам и его придётся переписывать если они сдохнут и их придётся менять.

Хотелось бы понять, а есть ли способ заставить ядро Linux просто начать опрашивать первым интегрированный контроллер, а не тот, что в PCI-E слоте торчит?

★★★★★
Ответ на: комментарий от mky

А там разве не один и тот же модуль управляет всеми sata-контроллерами? И как можно задать порядок их загрузки?

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

Посмотрите ″lspci -k″. Ну, а порядок загрузки, допустим, не засовывать в initrd модуль-драйвер дискретного контроллера.

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

Буду посмотреть. Уже нагуглил кое-что на тему очерёдности. Только боюсь это окажется один и тот же модуль...

atrus ★★★★★
() автор топика

А если диск сдохнет и не распознается системой, то, вроде как, ничего не поможет. Имена /dev/sdX выдаются по порядку, по мере обнаружения дисков, менять через udev их нельзя, только symlink'и создавать.

И всё аналогично, если диск при инициализации протормозит, а потом «очнётся» и возникнет после определения системой второго контроллера. Насколько я знаю, невозможно сделать, чтобы под контроллер резервировалось несколько sdX имён (по кол-ву портов).

Можно, конечно, тупо написать скрипт который будет делать дичь наподобие:

mknod /dev/sda b 8 16
но это шиза, потому что внутри /sys/block имя устройства от этого не поменяется.

mky ★★★★★
()

Можно попробовать написать udev правило

Не можно, на имена SCSI-устройств ты повлиять не можешь таким образом.

anonymous
()

Но мне самому удобнее помнить, что диски с интегрированного контроллера идут первыми

ln -s /dev/disk/by-path/… /dev/disk0
ln -s /dev/disk/by-path/… /dev/disk1
…
gremlin_the_red ★★★★★
()
Ответ на: комментарий от torvn77

Шёл 2020год, а Ъ соснольщиков всё упиралось в скорость набора.

anonymous
()
Ответ на: комментарий от mky

Во всяком случае ты через /sys не заddшишь не тот диск.

legolegs ★★★★★
()
Ответ на: комментарий от mky

А если диск сдохнет и не распознается системой, то, вроде как, ничего не поможет.

Если диск сдохнет - я его поменяю. И посажу на тот же порт.

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

Можно написать скрипт,и поместить в initramfs, в этом скрипте прописать удаление sd устройств, а потом включить сканирование устройств на ATA портах в нужной последовательности.

Как написал @mky.

Этот скрипт должен отработать перед монтированием корня.

anonymous
()

В общем, как и ожидалось, драйвер у них одинаковый - ahci, так что малой кровью ничего не добиться. Наверное советы с кастомными скриптами в initramfs можно воплотить в жизнь, но это займёт время.

По этому решил обойтись симлинками, создаваемыми через udev.

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

Я не настолько ренегатен, мне хватит и папки /main или /blkdv

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.