|
FreeBook FreeBSD OtherBSD SB Linux OtherOS FreeProgs FreeNotes FreeGeo SiteMap |
"Принцесса" Джульетта и FreeBSDО чем собственно речь...А речь пойдет, хоть и кратко, о поддержке Joliet extension для iso9660 в FreeBSD. О самом стандарте мне известно немного, попытки найти более весомую информацию ни к чему не привели. Однако, достоверно известно, что стандарт был "разработан" Microsoft'ом для расширения возможностей существовавшего тогда и имевшего кучу ограничений iso9660. Сейчас последний в свой чистой ипостасии почти не используется. Практическое применение нашли как раз его производные: Rock Ridge ("стандарт" для *nix систем), Apple Extensions, etc. Собственно, не в стандартах дело, а в граблях...на которые приходится наступать пользователям *nix подобных систем при работе с ними. И, конечно, самой большой шишкой в этом плане выступает поддержка русского языка. О ней и пойдет речь под призмой FreeBSD и Joliet стандарта или, говоря иначе, как увидеть кирилические буковки, а не знаки вопроса, на компакте, полученном от друзей, использующих Windows ;) Решение для FreeBSD-4.xСтандартным решением для FreeBSD 4-ой ветки является установка модулей для ядра, осуществляющих автомаческое переконвертирование в необходимую кодировку: cd /usr/ports/sysutils/cd9660_unicode && make install clean В дальнейшем они становятся доступными по адресу /usr/local/lib/cd9660_unicode/. Так, например, для локали ru_RU.KOI8-R достаточно подгрузить модуль cd9660_koi8-r.ko: kldload /usr/local/lib/cd9660_unicode/cd9660_koi8-r.ko После этого русские символы "появляются", даже уже на примонтированном cdrom устройстве. Соотвественно для автоматической загрузки модуля достаточно создать ссылку на него в /modules и прописать соотвествующую строчку в /boot/loader.conf: ln -sf /usr/local/lib/cd9660_unicode/cd9660_koi8-r.ko /modules/cd9660_koi8-r.ko vi /boot/loader.conf # -- добавив строчку -- # cd9660_koi8-r_load="YES" # -- выходим, набрав :wq -- # Это решение осталось справедливым и для 5-ой ветки. Однако, с выходом 5.2-RELEASE появилась новая возможность: CD9660_ICONVДля того, чтобы ей воспользоваться вам понадобится как минимум наличие исходных текстов ядра системы. Хотя я бы посоветовал иметь при себе все дерево (именно этот случай я рассмотрю). Сама процедура проста и "условно" ее можно разделить на 2-а шага: добавление опций LIBICONV и CD9660_ICONV в конфиг ядра и его [ядра] пересборка: cd /sys/i386/conf && cp GENERIC MYKERNEL && vi MYKERNEL # -- добавив опции -- # options LIBICONV options CD9660_ICONV # -- выходим, набрав :wq -- # И непосредственно пересборка: cd /usr/src && make buildkernel KERNCONF="MYKERNEL" && make installkernel KERNCONF="MYKERNEL" После пересборки необходимо перезагрузить машину, т.к. способа вытеснения уже загруженного ядра новым для x86 еще не придумали :). Теперь примонтируем компакт диск, на котором до этого были "кракозяблики" (знаки вопроса в моем случае ;-): mount_cd9660 -C KOI8-R /dev/acd0 /cdrom Думаю, это не совсем справедливо для нашего случая, однако может натолкнуть на некоторые варианты решений в случае затруднения: список "все" поддерживаемых encodings можно глянуть выполнив: iconv -l Завершающим этапом станет добавление (или изменение существующей) строчки в /etc/fstab. Например, для устройства /dev/acd0 и точки монтирования /cdrom строчка будет выглядеть: /dev/acd0 /cdrom cd9660 ro,noauto,-CKOI8-R 0 0 Для тех, кто еще не в курсе: cdrom не будет монтироваться автоматически при перезапуске системы (о чем говорит нам опция noauto). Однако, вместо "длиннющей" команды теперь нам достаточно набрать: mount /cdrom У меня все. Остальное вам на домашнее задание ;-) man mount_cd9660 man mount Release Notes для FreeBSD-5.2 handbook |
||||