LINUX.ORG.RU

Как обратиться к диску, на котором лежит корневая ФС

 ,


1

2

Допускаю, что вопрос наитупейший - но, что интересно, ответа в Яндексе не нашел. Итак, система состоит из одного лишь initramfs, который благополучно загружается в процессе старта системы и дает пользователю консоль BusyBox. При этом, на самом CD лежит файл, содержащий другую файловую систему. Разумеется, из initramfs видна только сама ФС этого самого initramfs.

Вопрос: можно ли как то обратиться к другим файлам на CD, на котором лежит initramfs? Нужно с целью примонтировать к файловой системе initramfs’а лежащую на CD ФС…

конечно. смонтировать сидиром.
sudo mount -t iso9660 /dev/cdrom /media
или что подобное, смотри что светится в /dev

pfg ★★★★★
()

Смонтируй с помощь команды mount файловую систему с устройства твоего CD/DVD привода.

Если это пишущий привод, то, скорее всего, устройство привода называется /dev/sr0.

Создай точку монтирования и смонтируй.

mount /dev/sr0 /mnt/cdrom
anonymous
()
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
mkdir /mnt/somedir
mount -o loop,ro /media/cdrom/somefile /mnt/somedir
Legioner ★★★★★
()
Ответ на: комментарий от pfg

Тоже так думал. Проблема в том, что находясь в корневой ФС initramfs'а и выполняя команду

cd /dev
ls
я получаю лишь:
console
словно других устройств и в помине нет...

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

Ну так у тебя devtmpfs не смонтирована. Попробуй mount -t devtmpfs dev /dev или что-то вроде. Если и так не работает, то создай нужное устройство через mknod.

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

Устройства можно СОЗДАВАТЬ?!? Офигеть, вот я темный…

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

Слушайте, команда

mount -t devtmpfs dev /dev
сотворила настоящее чудо - появилась туча устройств в /dev

Но при этом CD-рома среди них нет - только 63 tty, 4 ttyS, hpet, full, input, kmsg, mem, null, port, psaux, ptmx, random, rtc0, snapshot, urandom, 6 vcs, vga_arbiter, zero и cpu_dma_latency.

Правильно я понимаю, что раз CD отсутствует в этом перечне - нужно создавать устройство, как Вы рекомендовали, силами mknod?

dima9kin
() автор топика

Добро пожаловать в клуб!

Изучайте, как устроены готовые решения, например linux-live, Knoppix, Debian live-build и другие. Там много интересного, например, как потом размонтировать эту ФС при выключении.

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

Откуда взяли ядро? Драйверы (в частности, CD-ROM’а) вкомпилированы в него или хранятся в виде модулей? Есть ли модули в initramfs? Загружены ли они?

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

А как посмотреть загружены ли модули? Ядро взял из Debian-Live. Да и сам initramfs, чего уж греха таить, оттуда же…

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

Пардон, нашел как посмотреть, но команда

lsmod
Дает лишь:
/proc/modules No such file or directory
Кстати, директория proc, действительно, отсутствует - что удивительно, ибо я предполагал, что она создается ядром внутри ФС на этапе загрузки ВСЕГДА...

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

вполне возможно - комплект на данном интирамфс ограничен по самое не балуйся :) чтобы не быть большим.
пересобрать или взять чтонить более продвинутое ??

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

Нет конечно, её надо создать и смонтировать. mkdir /proc; mount -t proc proc /proc приэтом второе слово какое угодно может быть. Но обычно proc пишут.

Теперь про /dev/sr0:

$ ls -l /dev/sr0 
brw-rw----+ 1 root cdrom 11, 0 Nov  4 10:04 /dev/sr0

Зная эти числа 11 и 0 можно создать устройство командой mknod /dev/sr0 b 11 0

Кстати, кто знает, что значит + в выводе ls -l? В первый раз замечаю.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 5)
Ответ на: комментарий от Xenius

Не знал. Серьезно, не знал, что специальную ФС proc нужно создавать уже после загрузки ядра. Да /dev, как я понял - тоже))

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

Ну вообще /dev может быть и на многих системах и является статическим, например в BSD. Любое устройство нужно создавать перед первым использованием. Для этого даже скрипт есть /dev/MAKEDEV или как-то так. Он по имени подбирает нужные номера.

Ещё /sys есть, аналогично proc создаётся и монтируется.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

А вот со второй частью Вашего совета - у меня замкнутый круг. Как я уже понял, самое главное для создания устройства командой mknod - это знать верхнее и нижнее числа для устройства. Вы эти числа находите командой

ls -l /dev/sr0
Но у меня то нет устройств вида sr0 в директории /dev - и, соответственно, я не могу узнать для них верхнее и нижнее числа - как следствие создать устройство))

dima9kin
() автор топика

По имени отчеству.

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

загружай модули ядра соответствующие

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

соответственно, я не могу узнать для них верхнее и нижнее числа - как следствие создать устройство))

Так я их тебе уже сказал же.

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

А вот тут я бы попросил Вас чуть подробнее, потому что это принципиальное знание: выходит, числа устройства не меняются от оборудования к оборудованию а, для, допустим, любого оптического привода ВСЕГДА будут равны 11 и 0???

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

Кстати, идея - запихнуть в initramfs целый Debian (без GUI) - я, во -первых, это уже делал, во-вторых там будет хоть побольше инструментарий. Надо попробовать

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

только зачем весь в инитрамфс ?? он разворачиваться будет полчаса :)
может проще на усб-флешку дистр поставить ?? или взять дистр для ремнота линукса, там наполнение поболеее будет.

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

и для оптики могут поменятся если оптичиских приводов будет побольше. и вообще для любой железяки номер просто номер, udev осматривает систему и туп перенумеровывает (точнее присваивает уникальные имена) все попавшееся железо согласно своим правилам.
меняется наполнение железяк или меняются правила - полученный номер может быть другим, ибо перенумеровывание идет по другому пути.
если нужна привязка к конкретному устройству обращайся по другим именам.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)
Ответ на: комментарий от dima9kin

выходит, числа устройства не меняются от оборудования к оборудованию а, для, допустим, любого оптического привода ВСЕГДА будут равны 11 и 0?

Не для любого. Если их более одного, у следующего уже должно быть 11 и 1 и так далее, я так полагаю.

Но если только один, то по идее должно быть 11 и 0, если не считать всяких странностей, а то мало ли у тебя драйвер виртуального дисковода подгружается раньше физического, а потом отключается.

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

Заданы расширенные атрибуты которые можно посмотреть в lsattr

Не, не угадал. Это те которые Posix ACL и их можно посмотреть getfacl

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

Ядро взял из Debian-Live. Да и сам initramfs, чего уж греха таить, оттуда же…

Смотрите, сколько там уже скриптов и что они делают до того, как смогут смонтировать /. Там очень много всего происходит.

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

Да я понимаю. Просто у меня уровня знания Linux не хватает разбирать механизмы, реализуемые в профессиональных Live-CD. Я их читаю как баран на новые ворота.

Хочется сделать свой, максимально простой вариант. Тот, который я на текущем уровне понимания системы сам смогу понять. В начале была идея вообще все завернуть в initramfs - но обломался: маленькая (до 1 ГБ) системка туда влезает и отлично работает, но большая система с GUI, GIMP, WPS Office и прочим, прочим, прочим уже не запускается, на этапе загрузки ядра пишет Invalid argument.

Теперь хочу пойти другим путем: загрузить initramfs, который будет достаточно функциональным, чтобы из него, пользуясь консолью, можно было подмонтировать полноценную ФС с этого же DVD и, выполнив chroot (или pivot_root, я пока не определился что именно нужно использовать - но до этого этапа еще идти и идти) начать работать с уже нормальной ФС. Ну, /dev и /proc планирую приbindить от первичной, initram’овской

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

Можешь взять готовый от инсталлятора Slackware например. Да и вообще, там наверняка будет проще разобраться, чем в дебиане.

Кстати осторожнее с этой фигней, switch_root например рекурсивно удаляет все файлы и каталоги с текущей корневой файловой системой. Так что с этими экспериментами надо быть аккуратнее.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

Я, кстати, на Slackware заглядывался, когда понял, что он, вроде, проще и кандовее, чем Debian. Испугался только того, что там никаких аналогов apt - не уверен смогу ли ВСЕ нужные программы поставить. Плюс многие программы вообще распространяются только либо .rpm, либо .deb - например, то же VIPole. Там исходников нет на сайте. А мы его используем - опять же, как я понимаю, на SlackWare такие штуки не встанут. Хотя, если честно, Ваш комментарий этот - снова меня поманил попробовать SlackWare…

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

Ну, в общем, пока движение есть: запихнул Debian в initramfs, собрал iso-шник, запустил - нашел свой CDROM, там нашел файл с тестовой ФС, подмонтировал ее - все супер! Теперь надо научиться ее монтировать как aufs. Ну, и следующий шаг смонтировать уже рабочую ФС как aufs и сделать ее корневой. Но это я уже, понятно, далеко забегаю. Попутно вопрос: как проверить какие типы ФС в принципе поддерживает конкретная система? Не нашел я чего то ответа на этот вопрос в интернете…

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

cat /proc/filesystems

А по поводу файл-устройств ответы нашли? Имя файла ничего не значит, два числа (мажор/минор) определяют устройство https://www.kernel.org/doc/Documentation/admin-guide/devices.txt

Вобще посмотрите на рабочей системе что куда монтируется, а то, если про /proc не знали, то и /sys поди не монтируете...

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

Спасибо большое! Сейчас как раз про sys и сел выяснять, кстати))

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

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

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

Система Debian с установленными приложениями (которых, разумеется, нет в стандартном Live-CD), созданная без участия «черных ящиков» (пакеты скриптов типа respin, remastersys, linix live kit и иже с ними - которые работают через раз и я тупо задолбался гадать - соберут ли они систему в Live в очередной раз или нет) - то есть только своими силами. И, при этом, МАКСИМАЛЬНО ПРОСТО - чтобы каждую строчку, набиваемую в консоли понимал ИМЕННО Я САМ, а не бездумно перебивать портянки мануалов. Вот максимально сжато - конечный результат. Памяти на машинах вагон, поэтому могу хоть целиком в RAM разворачивать систему - но только вот не могу придумать как…

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

без участия «черных ящиков»

Учтите, что в задачах типа сборки «живого» диска есть много всего сложного, что можно автоматизировать и абстрагировать (в терминах The Mythical Man-Month, это не essential complexity, а accidental complexity). Эти скрипты не просто так написаны. Вас ждёт написание такой же портянки скриптов, которая будет решать всё те же задачи, но по-другому.

бездумно перебивать портянки мануалов

От самостоятельного выполнения домашнего задания вопросы на форумах рано или поздно перестанут помогать. Чтобы передать Вам эквивалентное количество знаний, кому-то придётся перепечатать примерно столько же текста в эту тему, сколько уже есть в Debian Live Manual.

Ни в коем случае не отговариваю от изобретения собственного велосипеда, но (1) его нужно делать самостоятельно, включая чтение документации и исходников других проектов, иначе ничему не научитесь и (2) если Вам только не нужен абсолютный минимум функций, очень скоро этот учебный проект может оказаться неподъёмным для одного человека. Тут нужно и в GNU/Linux хорошо разбираться, чтобы понимать, как систему правильно подготовить для упаковки в squashfs с установкой нужных пакетов, и в процессе загрузки «железа» компьютера до передачи управления загрузчику (BIOS + EFI + CD + USB + сеть), и в исключениях из правил (сколько BIOS’ов содержат настолько глючные реализации стандартов от El Torito до EFI, что более-менее надёжно запускают только установочный диск от Windows! а сколько костылей приходится городить, чтобы запустить на них что-то ещё!). Не стоит полагаться на то, что форум разжуёт Вам всю эту информацию.

Памяти на машинах вагон, поэтому могу хоть целиком в RAM разворачивать систему

Либо: @Spoofing приди! https://github.com/spfng/booty

Либо: изучайте, как устроен TinyCoreLinux или SliTaz. В первом случае основная часть ОС живёт в initramfs, но подгружает дополнительные squashfs при и после загрузки; во втором значительная часть ОС - это initrd (не initramfs) в формате squashfs.

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

Ничего сложного там нет, если не создавать продукт, который должен работать везде. Чисто для себя и своих компьютеров livecd сделать относительно несложно и очень даже полезно для понимания линукса.

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

В корень зрите! Нам проще подгонять компы под некий собранный по определенной технологии Live-дистрибутив, нежели делать дико мудреный дистрибутив, который идет на 95% машин, но ценой офигенного усложнения.

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

Более того, попутно (возясь с этим Live-CD) я, как Вы и предположили намного лучше стал понимать многие процессы в Linux в целом, это как минимум стоит потраченного времени, даже если я не добьюсь того, что мне нужно в рамках приведенной частной задачи.

dima9kin
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.