Большая тайна, большое и светлое волшебство происходит, когда добровольцы объединяются для творения чего-то всем нужного, и, хотя бы немножечко, вечного.

Почему-то от этого чаще солнце выглядывает из-за облаков и очень хочется жить.

Правила и обычаи

Применение UIRD для загрузки различных дистрибутивов

Re: Применение UIRD для загрузки различных дистрибутивов

Тогда нужно чтоб во from если указан vdi монтировать из него все разделы?

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2588 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

В принципе получилось. Но подключается не стабильно. Может подключиться, а может нет. Как я понял не всегда появляются файлы устройств. То есть подключаю vdi  к /dev/nbd0, fdisk - l /dev/nbd0 всегда говорит, что разделов три, а сами /dev/nbd0p1 - p3 могут появиться, а могут нет

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2588 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

betcher написал(а):

fdisk - l /dev/nbd0 всегда говорит, что разделов три

Да, fdisk всегда показывает разделы, даже если max_part не указывать и partprobe не делать. Может partprobe криво отрабатывает? Может паузу секундную поставить перед partprobe?

ilfat
Ильфат
первоклассный волшебник
ranks
useravatar
Offline
321 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

Приветствую.

betcher написал(а):

В принципе получилось. Но подключается не стабильно. Может подключиться, а может нет.

Я для стабильности вставлял sleep 1 после загрузки модуля - 1c вроде бы хватило, по крайней мере для всего доступного мне для тестов железа.
В беседку зайти не получается.
Кол-во nbd задается параметром nbds_max.

Код:

runtu@runtu:~$ modinfo nbd 

filename:       /lib/modules/4.13.0-21-generic/kernel/drivers/block/nbd.ko
license:        GPL
description:    Network Block Device
srcversion:     A7BC9507DAD4DC0F0C89E07
depends:       
intree:         Y
name:           nbd
vermagic:       4.13.0-21-generic SMP mod_unload 686
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 0) (int)

Я у себя ограничил, nbds_max=4 max_part=4
Вроде бы так меньше памяти выделяется при загрузке модуля.
PS  partprobe не выполняю - не увидел необходимости, монтирование вполне стабильно.

stea.61
начинающий понимать
ranks
useravatar
Offline
17 Сообщений
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

stea.61 написал(а):

Я у себя ограничил, nbds_max=4

Разумно. 16 чет прям совсем много )

ilfat
Ильфат
первоклассный волшебник
ranks
useravatar
Offline
321 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

betcher написал(а):

а сами /dev/nbd0p1 - p3 могут появиться, а могут нет

PS Уточнее к предыдущему посту:
sleep 1 - это между modprobe nbd и командой на монтирование файла.
А потом еще есть ожидание (в цикле до 10 c) на появление nbd*p* в /sys/block

Код:

mount_vdi() {

    modprobe nbd nbds_max=4 max_part=4; sleep 1
    mount -o bind /000-filesystem.squashfs/lib /lib       
    mount | grep "/usr" || mount -o bind /000-filesystem.squashfs/usr /usr
    if [ -d /sys/block/nbd0 ]; then
        /usr/bin/qemu-nbd -c /dev/nbd0 "$1" ; i=0
        while [ $i -le 10 ]; do
            if [ -d /sys/block/nbd0/nbd0p1 ]; then
                mount /dev/nbd0p1 "$2" && break
            fi
            sleep 1; i="$(($i + 1))"
        done
        [ -d /sys/block/nbd0/nbd0p1 ] || (qemu-nbd -d /dev/nbd0; rmmod nbd)
    else
        rmmod nbd
    fi
}

stea.61
начинающий понимать
ranks
useravatar
Offline
17 Сообщений
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

Слипы не помогают sad

Код:


filename:       /lib/modules/4.9.66-nrj-desktop-1rosa-x86_64/kernel/drivers/block/nbd.ko
license:        GPL
description:    Network Block Device
srcversion:     600F1F22F5DD715B8A8FEE7
depends:       
intree:         Y
vermagic:       4.9.66-nrj-desktop-1rosa-x86_64 SMP preempt mod_unload modversions
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 0) (int)

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2588 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

Все же дело оказалось в partprobe. В системе без него работает, в инитрд только с ним. Вот такая в итоге функция. Изменения запушил в отдельную ветку пока.

Код:


# init qemu-nbd block devices
# $1 - virtual machine disk image file
init_nbd () {
    local  devN maxDev
    echolog "Init block device for" $yellow"$1"$default
    devN=0
    modprobe nbd nbds_max=4 max_part=4 ; # sleep 1
    maxDev=$(ls -1 /dev/nbd? |wc -l)
    until     qemu-nbd --connect=/dev/nbd"$devN"  "$1" ; do
        [ $devN -ge $maxDev ] && break
        devN=$(( $devN + 1 ))
        debug_log "Trying to init /dev/nbd"$devN""
    done
    [ $devN -ge $maxDev ] && return 1
    partprobe /dev/nbd"$devN"
}

Пару примеров загрузки.

Код:


title Rosa c vdi чистый режим
kernel /MagOS/vmlinuz rw vga=791 splash=silent plymouth.enable=0 uird.from=/dev/sda3/homes/user/R10.vdi;/dev/nbd0p1  uird.ro=*layer-base/1 uird.load=*
initrd /MagOS/uird.MagOS.cpio.xz

title Rosa c vdi c uird.mounts, изменения пишутся на раздел 5 из vdi
kernel /MagOS/vmlinuz rw vga=791 splash=silent plymouth.enable=0 uird.mounts=/dev/sda3/homes/user/R10.vdi  uird.from=/dev/nbd0p1  uird.ro=*layer-base/0 uird.load=* uird.mode=changes uird.changes=/dev/nbd0p5
initrd /MagOS/uird.MagOS.cpio.xz

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2588 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

stea.61 написал(а):

В беседку зайти не получается.

Вход через аккаунт в гитхабе или твиттере.

MagOS-Чат http://chat.magos-linux.ru
MagOS-Загрузки http://files.magos-linux.ru/upload
MagOS-Торренты http://tracker.magos-linux.ru

betcher
Александр
магистр-волшебник
ranks
useravatar
Онлайн
2588 Сообщений
Мужчина 
Администратор отключил публичную отправку сообщений

Re: Применение UIRD для загрузки различных дистрибутивов

Приветствую.

betcher написал(а):

изменения пишутся на раздел 5 из vdi

C  "modprobe nbd nbds_max=4 max_part=4" ?

stea.61
начинающий понимать
ranks
useravatar
Offline
17 Сообщений
Администратор отключил публичную отправку сообщений

Авторизация