|
5 / 5 / 2
Регистрация: 01.02.2013
Сообщений: 88
|
||||||
Монтирование device-mapper устройства при загрузке системы16.02.2017, 20:02. Показов 1250. Ответов 0
Доброго времени суток!
Веду настройку системы МСВС на базе ядра версии 2.4. Необходимо создать виртуальное устройство с помощью device-mapper модуля, которое "мэппило" бы root-раздел, монтировать это устройство в момент загрузки системы и использовать его в качестве реального root-раздела. Для того, чтобы изменить процесс загрузки, мне необходимо изменить ramdisk. На ядре 2.4 при загрузке используется образ ramdisk типа initrd. При запуске системы этот образ распаковывается, и в нём выполняется файл, лежащий в корне этого образа и именованный linuxrc. Вот его содержимое: Кликните здесь для просмотра всего текста
#!/bin/nash
echo "Loading dm-mod.o module" insmod /lib/dm-mod.o echo "Loading scsi_mod.o module" insmod /lib/scsi_mod.o echo "Loading sd_mod.o module" insmod /lib/sd_mod.o echo "Loading cdrom.o module" insmod /lib/cdrom.o echo "Loading sr_mod.o module" insmod /lib/sr_mod.o echo "Loading sg.o module" insmod /lib/sg.o echo "Loading usbcore.o module" insmod /lib/usbcore.o echo "Loading usb-storage.o module" insmod /lib/usb-storage.o sleep 5 echo "Loading jbd.o module" insmod /lib/jbd.o echo "Loading ext3.o module" insmod /lib/ext3.o echo Mounting /proc filesystem mount -t proc /proc /proc echo Creating block devices mkdevices /dev echo Creating root device mkrootdev /dev/root echo 0x0100 > /proc/sys/kernel/real-root-dev echo Mounting root filesystem mount -o acl,nosecdel,secrm --ro -t ext3 /dev/root /sysroot pivot_root /sysroot /sysroot/initrd umount /initrd/proc На этой системе установлен загрузчик LILO. Вот его конфиг-файл: Кликните здесь для просмотра всего текста
prompt
timeout=100 default=MCBC boot=/dev/hda map=/boot/map install=bmp restricted password=Qq123456 bitmap=/boot/mcbc.bmp lba32 image=/boot/vmlinuz-2.4.32-vniins42 label=MCBC initrd=/boot/initrd-2.4.32-vniins42.img read-only root=/dev/hda2 append="acpi=on" Виртуальное устройство я создаю с помощью модуля device-mapper. При этом, мне в будущем понадобится обрабатывать запросы к устройству, поэтому я написал свой модуль на основе этой статьи. Текст этой статьи рассчитан на ядро 2.6, поэтому многие функции пришлось переделывать в соответствии с header-ами ядра. Вот код, который у меня сейчас (для сравнения я оставил директивы define):
Собрав модуль, я перенёс его, необходимые мне бинарники и либы в соответствующие каталоги initrd образа, в том числе и dmsetup - утилита, необходимая для создания виртуальных устройств с помощью device-mapper-а. Исправил конфиг LILO, исключив параметр root (монтирование буду делать руками). Правлю linuxrc: Кликните здесь для просмотра всего текста
#!/bin/nash
echo "Loading dm-mod.o module" insmod /lib/dm-mod.o echo "Loading scsi_mod.o module" insmod /lib/scsi_mod.o echo "Loading sd_mod.o module" insmod /lib/sd_mod.o echo "Loading cdrom.o module" insmod /lib/cdrom.o echo "Loading sr_mod.o module" insmod /lib/sr_mod.o echo "Loading sg.o module" insmod /lib/sg.o echo "Loading usbcore.o module" insmod /lib/usbcore.o echo "Loading usb-storage.o module" insmod /lib/usb-storage.o sleep 5 echo "Loading jbd.o module" insmod /lib/jbd.o echo "Loading ext3.o module" insmod /lib/ext3.o insmod /lib//sddm_target.o echo Mounting /proc filesystem mount -t proc /proc /proc echo Creating block devices mkdevices /dev echo Creating root device echo "=================================== ===" ld-linux.so.2 /bin/dmsetup create root_part /opt/bin/table echo "=================================== ===" echo 0x0100 > /proc/sys/kernel/real-root-dev mount -o acl,nosecdel,secrm --ro -t ext3 /dev/mapper/root_part /sysroot pivot_root /sysroot /sysroot/initrd umount /initrd/proc Содержимое файла /opt/bin/table: Кликните здесь для просмотра всего текста
0 62814150 sddm_target /dev/hda3 0
Создаю initrd, помещаю его в /boot каталог, переконфигурирую LILO одноимённой командой, перезагружаю систему. Виртуальное устройство создаётся. Но в момент монтирования начинают происходить странные вещи. Выводя информацию о вызываемых функциях, я понял, что функция sddm_target_map вызывается 6 раз, после чего выводится сообщение: Кликните здесь для просмотра всего текста
kjoutnald starting. Commit interval 5 seconds
Я почитал - это вполне логичное действие, которое выполняет проверку файловой системы. На обычных устройствах эта проверка длится одно мгновение. Здесь же она виснет, и сколько бы я не ждал - не отвисает. В чём проблема - я не могу понять. Но подразумеваю, что проблема в коде модуля. Тема довольно узкая, но я всё же надеюсь, что на свете существуют специалисты, которые в этом разбираются. Если есть, что написать - пишите. И даже спрашивайте, если что-то интересно, потому что в разговоре порой может что-то проясниться. Спасибо!
0
|
||||||
| 16.02.2017, 20:02 | |
|
Ответы с готовыми решениями:
0
При загрузке системы выдаёт warning о "root device" и fsck При загрузке компьютера ошибка: Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a kay При загрузке компьютера ошибка: Reboot and Select proper Boot device or Insert Boot Media in selected Boot device and press a key |
| 16.02.2017, 20:02 | |
|
Помогаю со студенческими работами здесь
1
При запуске системы отключаются все USB-устройства, в т.ч. устройства ввода No bootable device - при этом все устройства видит Ошибка при загрузке No bootable device Select proper Boot device при загрузке компьютера Reboot and Select proper Boot device при загрузке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|