/dev/sr0 not exist при загрузке Debian
В общем, пишу уже от некоего отчаяния — потому что до Нового года собирал по приводимому ниже шаблону систему и все прекрасно работало. Причем не менял ничего — даже .iso Дебиана использовал тот же — только сейчас все падает на этапе загрузки.
Создаю на виртуалке свеженькую систему Debian, все там устанавливаю и настраиваю что нужно. Затем вырубаю (комментариями) монтирование кФС в /etc/fstab и дописываю туда:
none / tmpfs defaults 0 0
Дальше, собираю свой initramfs, закомментируя в /usr/share/initramfs-tools/scripts/local строки:
# checkfs $ root # mount $ -t $ $ $ $
а, затем, добавляя подмонтирование моей кФС из .tar.gz:
mkdir /ramboottmp mount $ -t $ $ $ /ramboottmp mount -t tmpfs -o size=100% none $ cd $ tar -zxf /ramboottmp/ram.tar.gz umount /ramboottmp
, где файл ram.tar.gz создается командой
busybox tar -czf /кудахотимсохранить/ram.tar.gz *
, выполняемой из корня собранной и настроенной целевой системы Debian (снаружи, разумеется, путем подмонтирования диска виртуалки в loop режиме). По сути, ram.tar.gz это и есть нужная кФС, которую при загрузке нужно развернуть в оперативную память.
Дальше создаю свой initramfs:
/sbin/mkinitramfs -o /initrd-ram.img
, и сохраняю его.
Дальше в директорию кладу: ram.tar.gz и isolinux (всю директорию), а в директорию isolinux кладу ядро и свой initrd-ram.img.
В isolinux.cfg вношу:
DEFAULT MyLive LABEL MyLive linux /isolinux/ЯДРО APPEND initrd=/isolinux/initrd-ram.img root=/dev/sr0 rw
Собираю диск командой:
genisoimage -o disk.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R /ПУТЬ-К-ДИРЕКТОРИИ-ГДЕ-ВСЕ-ЛЕЖИТ
Повторюсь, до НГ собирал по этой схеме не один раз и все прекрасно работало. Сейчас же в процессе загрузки выдает
ALERT! /dev/sr0 does not exist. Dropping to a shell!
Очевидно, что система не находит мое устройство, содержащее кФС (параметр root= из isolinux.cfg).
Более того, выдача lsmod показывает, что вообще ни один модуль не загружен, а выдача ls /dev, действительно, не содержит ни sr0 ни чего либо аналогичного (ничего похожего на диски в принципе).
Попытка подгрузить модули привода командами
insmod sr_mod insmod cdrom insmod scsi_mod
ничего тоже не дает — просто проглатывается консолью без выдачи ошибки, но выдача lsmod по прежнему пуста.
И, главное, — ведь грузиться то все начало в любом случае с CD-привода. Так как он перестает быть виден на каком то участке загрузки, если он (CD-привод) был успешно подтянут ранее, с него запустился isolinux и ядро! КАК.
Реально опускаются руки — один и тот же путь приходится проходить по несколько раз и каждый раз какая то новая хрень. Причем даже намека нет на мысль куда смотреть.
Ошибка при монтировании CDROM 0
Fatal написал 18 июля 2006 года в 16:14 (3477 просмотров) Ведет себя как мужчина; открыл 123 темы в форуме, оставил 484 комментария на сайте.
Я монтирую привод mount /dev/sr0 /mnt/cdrom
mount: No medium found
если посмотреть dmesg | tail
hdc: ATAPI reset complete
hdc: status error: status=0×50
ide-scsi: Strange, packet command initiated yet DRQ isn’t asserted
SCSI error: host 2 id 0 lun 0 return code = 27070000
Sense class 0, sense error 0, extended sense 0
Вчера у меня всё было путём. А сегодня уже не монтируется… даже не знаю в чём может быть трабла. Ну, я ставил пару пакетов, но после деинсталяции ничего не изменилось. И тем более они не связаны с этим: это man и groff
Подскажите, пожалуйста, в чём может быть проблема.
Гугль ничего не дал, кроме совета замены ядра 2.4.x на 2.6.x
Дистриб Slackware 10.2, ядро 2.4.31
Fatal 16:17, 18 июля 2006
хотя в гугле я нашёл что с 2.6.х тоже есть похожая трабла:
irst time i’ve seen the problem was with 2.6.8 and now i work with
2.6.9-rc1 — i thought this could be a known and fixed problem, but i
have the same problem.
взято от сюда http://www.uwsg.iu.edu/hypermail/linux/kernel/0409.0/0255.html
Dr. Evil 16:31, 18 июля 2006
/dev/sr0 — это кто?
вообще, если следовать приведенному dmesg, то монтировать надо /dev/hdc, если, конечно, у тебя sr0 — это не линк на hdc.
Fatal 16:46, 18 июля 2006
При загрузке системы:
Attached scsi CD-ROM sr0 at scsi2, channel 0, id 0, lun 0
sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
Вывод при включении DMA на sr0/hdc
HDIO_SET_DMA failed: Invalid argument
setting using_dma to 1 (on)
setting using_dma to 1 (on)
using_dma = 1 (on)
Fatal 22:08, 19 июля 2006
Когда убираешь эмуляцию скази при загрузке в лило:
То монтируется /dev/hdc без проблем.
Почему /dev/sr0 не хочет монтироваться? куда копать?
Sasha2 09:13, 20 июля 2006
А вообще на, что указывает линк /dev/sr0? У меня вот, например, он указывает на /dev/scd0. А у Вас?
Genie 11:09, 20 июля 2006
ну а зачем тебе вообще скази эмуляция?
диски писать? так и в 2.4. вроде с какой-то версии уже можно и dev=/dev/hdc указывать…
Fatal 11:33, 20 июля 2006
Вчера всю ночь сидел разбирался переустанавливал заново систему несколько раз.
Оказалось вся причина в pcmcia модулях. Если их не подгружать, то скази эмуляция будет работать без проблем.
И я ошибся, когда писал, что без скази эмуляции всё работает. На самом деле если подгрузить pcmcia модули, то работать не будет и без скази эмуляции, короче, в любом случае при загрузке pcmcia модулей cd привод не монтируется. Я просто убрал этот пакет и почистил ручками некторые директории (ибо не удаляет анинсталлер всё, но предупреждает, что такие-то директории не удалены)
Пакет с pcmcia модулями называется так: pcmcia-cs-3.2.8-i486-1.tgz
Получение MD5 суммы записанного диска
Большинство установочных дисков Linux распространяется через интернет в виде так называемых образов — файлов формата iso. Чаще всего к таким файлам прилагаются MD5 суммы, которые позволяют проверить целостность и неповреждённость скаченного файла.
Однако иногда возникает необходимость проверить уже записанный на болванку образ на предмет соответствия MD5. Например, если вы не уверены, что диск записался верно и у вас есть MD5 сумма исходного образа, то после такой проверки можно понять, повреждён диск или нет.
Нам потребуется консольная утилита isoinfo . Для начала вставьте диск в ваш привод и введите в терминале:
isoinfo -d -i /dev/sr0
Вместо /dev/sr0 если у вас несколько приводов нужно подставить имя устройства, отвечающее за нужный. Узнать его можно введя в консоли
mount
Эта команда выдаст достаточно длинный вывод, нас интересуют строчки вида
/dev/sr0 on /media/Ubuntu 11.04 i386 type iso9660 (ro,nosuid,nodev,uhelper=hal,uid=1000,utf8)
Подобные строчки показывают вставленные в дисковод диски. О том, что это CD (или DVD) диск говорит «type iso9660», а /dev/sr0 — это системное имя привода, в который вставлен этот диск, оно-то нам и нужно.
После выполнения isoinfo для нужного устройства вы получите вывод, начинающийся примерно с таких строчек:
$ isoinfo -d -i /dev/sr0 CD-ROM is in ISO 9660 format System id: LINUX Volume id: Ubuntu 11.04 i386 Volume set id: Publisher id: Data preparer id: Application id: GENISOIMAGE ISO 9660/HFS FILESYSTEM CREATOR (C) 1993 E.YOUNGDALE (C) 1997-2006 J.PEARSON/J.SCHILLING (C) 2006-2007 CDRKIT TEAM Copyright File id: Abstract File id: Bibliographic File id: Volume set size is: 1 Volume set sequence number is: 1 Logical block size is: 2048 Volume size is: 354854 El Torito VD version 1 found, boot catalog is in sector 2503 Joliet with UCS level 3 found Rock Ridge signatures version 1 found
Здесь нас интересуют два значения:
Logical block size is: 2048 Volume size is: 354854
Теперь пора получить собственно MD5 сумму. Введите в консоли следующую команду, подставив в неё ваши параметры:
dd if=/dev/sr0 bs=2048 count=354854 conv=notrunc,noerror | md5sum -b
Обратите внимание, вы должны подставить свои значения:
Вместо /dev/sr0 подставьте нужный вам привод, тот же, что и в команде isoimage .
В параметр bs подставьте значение «Logical block size is:» из вывода команды isoimage .
В параметр count подставьте значение «Volume size is:» из вывода команды isoimage .
Дождавшись окончания выполнения этой команды, вы увидите примерно следующее:
e6a29ce3dccb0ab12332036dcff7d9e4 *- 354854+0 записей считано 354854+0 записей написано скопировано 726740992 байта (727 MB), 274,584 c, 2,6 MB/c
e6a29ce3dccb0ab12332036dcff7d9e4 — это и есть MD5 сумма диска, если она совпадает с указанной в том месте, откуда вы скачали образ, то диск точно не повреждён. Однако, теоретически, иногда она может и не совпадать из-за ошибок считывания, при том что диск не повреждён, поскольку dd не очень аккуратен.
- Сайт
- Об Ubuntu
- Скачать Ubuntu
- Семейство Ubuntu
- Новости
- Форум
- Помощь
- Правила
- Документация
- Пользовательская документация
- Официальная документация
- Семейство Ubuntu
- Материалы для загрузки
- Совместимость с оборудованием
- RSS лента
- Сообщество
- Наши проекты
- Местные сообщества
- Перевод Ubuntu
- Тестирование
- RSS лента
© 2018 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.
Постановка задачи
На компьютере под управлением Astra Linux требуется настроить разделение прав прямого доступа пользователей к оптическим дискам. При этом должны быть разграничены права пользователей на прямое копирование и запись оптических дисков.
Приведенные ниже правила ограничивают только прямой доступ к носителям (доступ к данным, находящимся на устройствах /dev/sr*). Права на монтирование оптических дисков и права доступа к примонтированным файловым системам управляются отдельно. Доступ к носителям может быть отдельно ограничен для учтенных носителей и при работе в сессиях с ненулевой классификационной меткой. Подробнее см. Съемные носители в Astra Linux.
Особенности применения
Приводы оптических дисков представлены устройствами /dev/sr* с дискретными правами доступа на чтение и запись для владельца root и группы cdrom:
ls -l /dev/sr*
brw-rw—-+ 1 root cdrom 11, 0 авг 4 08:05 /dev/sr0
brw-rw—-+ 1 root cdrom 11, 1 авг 4 08:05 /dev/sr1
При этом прямой доступ на чтение и запись к таким устройствам по умолчанию предоставляется всем пользователям автоматически при входе пользователя в сессию. Это делается с помощью правила UDEV /usr/lib/udev/rules.d/70-uaccess.rules (правила /lib/udev/rules.d/70-uaccess.rules для Astra Linux выпущенных ранее обновления x.7). В указанном правиле перечислены различные устройства, доступ к которым должен быть общим. При подключении таких устройств правило 70-uaccess.rules присваивает устройству тэг uaccess. Тэг обрабатывается службами systemd при входе в пользовательскую сессию и таким устройствам присваивается атрибут ACL (см. Списки управления доступом к файловым объектам (ACL) в Astra Linux) разрешающий пользователю прямое чтение и запись. Из сессии пользователя права доступа к устройству выглядят так:
getfacl /dev/sr0
getfacl: Removing leading ‘/’ from absolute path names
# file: dev/sr0
# owner: root
# group: cdrom
user::rw-
user::rw-
group::rw-
mask::rw-
other::—
# file: dev/sr1
# owner: root
# group: cdrom
user::rw-
user::rw-
group::rw-
mask::rw-
other::—
Где строка user:<имя_пользователя>:rw- задает индивидуальное разрешение прямого чтения и прямой записи для указанного в ней пользователя.имя_пользователя>
Решение
Для отключения автоматически предоставляемого общего доступа следует отменить назначение ACL, этот доступ разрешающий, то есть удалить тэг uaccess из атрибутов устройства. Для этого:
-
Создать правило udev, которое будет выполняться после правила 70-uaccess.rules и удалять тэг uaccess. Например, создать файл 71-uaccess-astra.rules (порядок выполнения правил определяется алфавитной сортировкой имен файлов с правилами). Файл разместить в том же каталоге, в котором находится правило 70-uaccess.rules. Пример правила:
SUBSYSTEM=="block", KERNEL=="sr[0-9]*", TAG-="uaccess", RUN+="/usr/bin/logger 'Astra UDEV: set access for device %E'"
- команды SUBSYSTEM==»block», KERNEL==»sr[0-9]*» выбирают блочные устройства с именем sr*;
- команда TAG-=uaccess удаляет ранее назначенный тэг uaccess
- команда RUN+=»/usr/bin/logger ‘Astra UDEV: set access for device %E'» выполняет запись в системный журнал (необязательное действие);
Удаление ACL, назначенных systemd, командой setfacl из сессии администратора не работает. ACL должны быть удалены с помощью правила udev.
Для того чтобы ACL удалялись автоматически без перезагрузки компьютера при смене носителя можно привести правило к виду:
SUBSYSTEM=="block", KERNEL=="sr[0-9]*", TAG-="uaccess", RUN+="/usr/bin/setfacl -b %E", RUN+="/usr/bin/logger 'Astra UDEV: set access for device %E'"
После выполнения указанных действий прямой доступ к оптическим дискам на чтение и запись будет разрешен только суперпользователю (sudo) и пользователям, входящим в группу cdrom.
Для более точного разделения прав дополнительно можно определить права только на прямое чтение без права прямой записи. Для этого:
-
Создать группу, которой будет разрешено чтение. При работе в домене это может быть доменная группа (см. документацию на используемый домен), или это может быть локальная группа, например, локальная группа cdrom_ro. Создать локальную группу:
sudo groupadd —system cdrom_ro
SUBSYSTEM=="block", KERNEL=="sr[0-9]*", TAG-="uaccess", RUN+="/usr/bin/setfacl -b %E ; /usr/bin/setfacl -m g:cdrom_ro:r %E", RUN+="/usr/bin/logger 'Astra UDEV: set access for device %E'"
После выполнения указанных действий прямой доступ к оптическим дискам на чтение и запись будет разрешен суперпользователю (sudo) и пользователям, входящим в группу cdrom, а также разрешен доступ на чтение пользователям, входящим в группу cdrom_ro.
Разграничение прав доступа при работе в доменах
При работе в доменах (FreeIPA, Samba, ALD, Windows AD) для разграничения доступа рекомендуется использовать доменные группы. Принципы их применения аналогичны изложенным выше принципам применения локальных групп. При этом для разрешения записи можно использовать несколько модифицированное правило для разрешения чтения:
SUBSYSTEM=="block", KERNEL=="sr[0-9]*", TAG-="uaccess", RUN+="/usr/bin/setfacl -b %E ; /usr/bin/setfacl -m g:domain_cdrom_rw:rw %E", RUN+="/usr/bin/logger 'Astra UDEV: set access for device %E'"
Отличие от ранее приведенного правила, разрешающего чтение:
- использовано имя группы domain_cdrom_rw;
- устройству присваивается ACL разрешающий и чтение и запись: g:domain_cdrom_rw:rw.
Проверка корректности работы
При правильно настроенных правах доступа:
-
Команда прямого чтения носителя должна успешно выполняться от имени суперпользователя (sudo), пользователей, входящих в группу cdrom или cdrom_ro и не должна выполняться от имени остальных пользователей. Пример команды:
dd if=/dev/sr0 of=`mktemp` count=100
- Нет меток