[sisyphus] make-initrd

Alexey Gladkov legion на altlinux.ru
Ср Июн 17 19:15:25 MSK 2020


On Tue, Jun 16, 2020 at 08:53:45PM +0300, Игорь Андросов wrote:
> > > Эм... Может я неверно выразился, но:
> > > kernel/Documentation/admin-guide/devices.txt
> > > --
> > >    0 Unnamed devices (e.g. non-device mounts)
> > >   0 = reserved as null device number
> > > See block major 144, 145, 146 for expansion areas.
> > > -- cut --
> > >
> > > btrfs это файловая система, она вроде как не устройство, она может быть
> > > собрана из н-цати "устройств", разделов дисков и тд. и сказать кто в нее
> > > входит может только она.
> >
> > Это не так. Обратите внимание, что показала утилита stat. Это те же major
> > и minor устройства.
> >
> Эм, мы у него и попросили их, указав конкретный, существующий device.
> 
> >
> > Тут скорее findmnt запутался из-за того что запрос информации об
> > устройстве был по точке монтирования и выдал чушь. На моих тестах он вёл
> > себя корректно.
> >
> findmnt по умолчанию берет данные из /proc/self/mountinfo, там тот же major
> = 0, и эту информацию дает ядро:
> 
> Я еще раз поясню свою мысль на примере (пример извращенный но возможный):
> btrfs = (sda1, sdb, nvme1) то есть она собрана из нескольких физ устройств,
> режим single то есть размер файловой система - весь суммарный объем
> устройств
> для того что бы btrfs "собралась" должны быть доступны все устройства, если
> драйвера для того или иного устройства не будет/не будет устройства и fs
> "не соберется", если на этой fs расположен корень - мы не можем загрузиться.
> Не через btrfs я не знаю способ как можно посмотреть какие устройства для
> нее нужны, везде я вижу только одно устройство (подозреваю первое по
> алфавиту найденное по uuid? у остальных uuid тайкой же). через команду
> "btrfs filesystem show /" я вижу что в составе этой fs 3 устройства.
> 
> >
> > > Соответственно и возникает устройство с Major 0,
> > > так монтируем не конкретное устройство, а некую точку из того что есть в
> > > btrfs, имхо схоже с nfs,proc,sys и подобными.
> >
> > В случае виртуальной файловой системы major и minor не имеет смысла.
> >
> > Я переделаю способ получения этой информации о точке монтирования.
> >
> Мое мнение: для того чтобы обеспечить загрузку с корнем на btrfs нужно
> знать какие устройства в нее входят, и соответственно включать в initrd
> драйвера необходимые для каждого. В моем случае btrfs состоит из одного
> device, была у меня конфигурация где было 5 дисков, на 2 разных sata
> контроллерах, благо не корень ) Возможность на лету добавить устройство в
> btrfs и убрать позволяет создать корень на любой вариации аппаратных, и не
> только, носителей...
> 
> Прошу прощения за разведенную дискуссию.

После вашего письма я понял, что у меня существует пробел в знаниях о
btrfs. Я знал, что можно использовать несколько дисков, но мне казалось,
что при объединении дисков в одну файловую систему будет создано
устройство (device mapper или что-то своё).

Теперь я понимаю о чём вы говорите. Получается до перехода на findmnt
make-initrd работал чудом (если работал) с btrfs. Сейчас оно сломалось
окончательно.

Похоже для btrfs нужно делать `btrfs filesystem show /` и получать оттуда
полный список devid.

-- 
Rgrds, legion



Подробная информация о списке рассылки Sisyphus