второму hdd стала назначаться другая буква

раньше второму hdd назначалась sdb*, теперь же sdf*. Хотелось бы сделать по старому. Из железа ничего не убиралось и не добавлялось и приоритеты устройств не менялись в efi bios. Теперь же от sdb до sde занимают слоты картридера. Впринципе есть идея замутить это через правила udev'а, но не будет ли в этом случае путаницы при загрузке или ещё какой проблемы, ибо буквы/номера устройствам даёт ядро ещё до монтирования корневой фс. Да и вообще хотелось бы узнать почему так стало, есть подозрения что в этом виноват systemd каким-то боком
Я бы прописал в fstab. Путаницы не должно быть (в теории).
З.Ы. У самого тоже подключен картридер по usb, подобного не наблюдалось
GitHub, ArchWiki, AUR
Да и вообще хотелось бы узнать почему так стало, есть подозрения что в этом виноват systemd каким-то боком
Опять пинают systemd )))
Это стало потому что хуки fw, mmc, pata, sata, scsi, usb, virtio были слиты в один block и когда то ты не использовал хук usb
поэтому твои картридеры определялись позднее чем винты. Теперь они определяются раньше.

Да и вообще зачем тебе менять буквы? Задай разделам метки и юзай их в консоле вместо имен. а в конфигах uuid.
Я бы прописал в fstab. Путаницы не должно быть (в теории).
Путаница будет всегда! потому что определение устройств идет параллельно, кто раньше откликнулся того и лучшее место (ядерное имя) )))
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
Опять пинают systemd )))
Это стало потому что хуки fw, mmc, pata, sata, scsi, usb, virtio были слиты в один block
И правильно пинают, что называется, нутром чуют :)
Потому что в initcpio тоже используется udev, который теперь входит в systemd, а слили их всех, чтобы использовать тот же принцип, что и в systemd – загрузим сразу всё одновременно, а там хоть трава не расти.

В общем, можно юзать метки (предварительно назначив уникальные!), можно длиннючие ID, или вообще нечитаемые UUID, см
ls -lR /dev/disk/

Если хочется сделать дискам постоянные короткие имена в /dev/ , можно организовать через правила udev симлинки примерно так:
/etc/udev/rules.d/61-nickname-disk.rules
KERNEL!="sd*", GOTO="nick_end"
ACTION=="add", GOTO="check_id"
ACTION=="change", GOTO="check_id"
GOTO="nick_end"
LABEL="check_id"
ENV{ID_SERIAL}=="серийник_первого", ENV{NICK}="first", GOTO="set_name"
ENV{ID_SERIAL}=="серийник_второго", ENV{NICK}="second", GOTO="set_name"
GOTO="nick_end"
LABEL="set_name"
ENV{DEVTYPE}=="partition", SYMLINK+="$env{NICK}%n", GOTO="nick_end"
ENV{DEVTYPE}=="disk", SYMLINK+="$env{NICK}"
LABEL="nick_end"

Вместо серийник_первого и серийник_второго надо подставить настоящие серийники обоих винтов, а вместо first и second можно написать любые желаемые короткие имена, можно даже hda и hdb, всё равно они уже не используются новым драйвером ATA в ядре.

В результате ядерные имена /dev/sd* так и останутся в беспорядке, но новые там же в /dev/ будут постоянными.

Посмотреть серийники можно в /dev/disk/by-id/
Если откинуть ata- в начале и -part* в конце, то посередине будет как раз серийник.
Или можно запустить команду
udevadm info --query=all --name=sda | grep ID_SERIAL=
и она выдаст для sda
E: ID_SERIAL=серийник

P.S.
Чтобы это правило применялось с самого начала, то бишь в initcpio, надо прописать в /etc/mkinitcpio.conf :
FILES="/etc/udev/rules.d/61-nickname-disk.rules"
и пересобрать initcpio, то бишь сделать
mkinitcpio -p linux
если у вас стандартное ядро.
Потому что в initcpio тоже используется udev, который теперь входит в systemd, а слили их всех, чтобы использовать тот же принцип, что и в systemd – загрузим сразу всё одновременно, а там хоть трава не расти.
Вообще то, насколько я знаю, удав раньше появился чем системд, так что основной принцип был унаследован от удава.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
т.е я так понимаю универсального решения данной проблемы нет? А может можно как-то заблочить usb в initrd до момента полной загрузки?
SmiGes
А может можно как-то заблочить usb в initrd до момента полной загрузки?
Можно. Найти в старой версии mkinitcpio старый хук sata (у вас же SATA-винчестеры?) и поставить его вместо нового хука block.
А можно обойтись дёшево и сердито – найти конкретные модули, необходимые для вашего конкретного (S)ATA-контроллера и указать их вручную, без хука.

т.е я так понимаю универсального решения данной проблемы нет?
Универсального – нет.
Если у вас винчестеры подключены к одному контроллеру, они будут нумероваться в порядке инициализации внутри драйвера, то есть как правило стабильно. А если к разным – здравствуй костыли для альтернативного именования.
Natrio
SmiGes
А может можно как-то заблочить usb в initrd до момента полной загрузки?
Можно. Найти в старой версии mkinitcpio старый хук sata (у вас же SATA-винчестеры?) и поставить его вместо нового хука block.
А можно обойтись дёшево и сердито – найти конкретные модули, необходимые для вашего конкретного (S)ATA-контроллера и указать их вручную, без хука.

т.е я так понимаю универсального решения данной проблемы нет?
Универсального – нет.
Если у вас винчестеры подключены к одному контроллеру, они будут нумероваться в порядке инициализации внутри драйвера, то есть как правило стабильно. А если к разным – здравствуй костыли для альтернативного именования.
а как узнать какие модули нужны моему контроллеру? И потом как их указать в mkinitcpio.conf ?
я вот так попробывал поискать список возможных. в правильном ли направлении я иду?
smiges 19:37 [0]/lib/modules/3.7.4-1-ARCH/kernel$ find -iname '*sata*'
./drivers/ata/sata_sx4.ko.gz
./drivers/ata/sata_sil.ko.gz
./drivers/ata/sata_sis.ko.gz
./drivers/ata/sata_via.ko.gz
./drivers/ata/sata_sil24.ko.gz
./drivers/ata/sata_nv.ko.gz
./drivers/ata/sata_highbank.ko.gz
./drivers/ata/sata_inic162x.ko.gz
./drivers/ata/sata_svw.ko.gz
./drivers/ata/sata_vsc.ko.gz
./drivers/ata/sata_promise.ko.gz
./drivers/ata/sata_uli.ko.gz
./drivers/ata/sata_mv.ko.gz
./drivers/ata/sata_qstor.ko.gz
smiges 19:39 [0]/lib/modules/3.7.4-1-ARCH/kernel$
и ещё
smiges 19:41 [0]~$ sudo hwdetect --show-sata
SATA   : ata_piix
smiges 19:41 [0]~$ 
SmiGes
а как узнать какие модули нужны моему контроллеру?
Во-первых, посмотрите, какие модули упакованы в initramfs сейчас:
lsinitcpio /boot/initramfs-linux.img |grep modules
Во-вторых,
lspci -k
покажет, какой модуль загружен для какого девайса. Находите там ваш контроллер и модуль.
Через modinfo смотрите его зависимости и зависимости зависимостей.

На всякий случай сверяетесь со списком (см. п.1) и проверяете не вошедшие – мало ли что.

Модули прописываются в строку MODULES= в mkinitcpio.conf

P.S.
Перед генерацией нового initramfs сохраните старый в под другим именем, чтобы в случае неудачной загрузки воспользоваться им.
Оказывается всё ещё хуже. Теперь ещё и web-камера устанавливается как первая звуковая карта почему-то, и что теперь делать то? Разработчиков systemd надо накол посадить, но ведь раньше же всё на initscripts работало и последовательности имело, а также она была системой инициализации зарекомендованная временем, но нет, нам это сырое подделие внедрили в котором всё через 5 точку работает. Извиняюсь накипело . И ещё у меня альса "хитрая" так сказать с эквалайзером, я ковырять её боюсь, ибо настройки послетают. Помогите плиз(((((
 
Зарегистрироваться или войдите чтобы оставить сообщение.