LINUX.ORG.RU

Кодировка при монтировании сетевого диска в CentOS 7

 , ,


0

1

Добрый день! Буду благодарен за помочь.

Цель - примонтировать сетевую папку Windows (server 2008r2). Есть две команды:

mount.cifs 192.168.123.123/public /mnt/share -o user=login,pass=password,dom=domen.local,iocharset=utf8

или

mount.cifs 192.168.123.123/public /mnt/share -o user=login,pass=password,dom=domen.local,iocharset=cp1251

Обе команды рабочие - все монтируется, но проблема в том, что все русскоязычные каталоги - идут вопросами.

Что пробовал:

  1. Вносить изменения в команды (где-то подсмотрел):
mount.cifs 192.168.123.123/public /mnt/share -o user=login,pass=password,dom=domen.local,iocharset=utf8,codepage=cp1251

mount.cifs 192.168.123.123/public /mnt/share -o user=login,pass=password,dom=domen.local,iocharset=utf8,codepage=utf8

mount.cifs 192.168.xx.xxx/public /mnt/share -o user=login,pass=password,dom=domen.local,iocharset=cp1251,codepage=cp1251

Сразу в ошибку вываливается: mount error(22): Invalid argument

Подозреваю, что просто параметр «codepage=» - не существует.

  1. Копал в сторону консоли - тоже не получилось:

Копал по инструкции:



А. Проверить какая локаль сейчас установлена можно с помощью команды

locale

Обычно вывод команды выглядит примерно так:

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Это означает что кодировка у нас в консоли используется en_US.UTF-8. Но вывод может выглядеть совсем иначе. Например вот так:

LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=

Значит есть проблемы.

Б. Для того чтобы проверить наличие готовых локалей в системе выполняем команду

locale -a | grep ru

И в выводе команды ищем необходимую нам локаль. Для случая с кодировкой UTF-8 необходимая локаль имеет вид ru_RU.utf8. Если такая строка есть в выводе команды то делаем следующее:

В.Создаем файл /etc/sysconfig/i18n командой:

touch /etc/sysconfig/i18n

После чего в файл пишем следующие строки:

LANG="ru_RU.UTF-8"
SUPPORTED="ru_RU.UTF-8:ru_RU:ru"
SYSFONT="latarcyrheb-sun16"

После этих изменений сохраняем файл, выходим из консоли и заходим в нее опять. После этих действий мы наблюдаем русский шрифт в локали.



Команда locale выдает у меня текст, где POSIX. Проделал все по инструкции, но на выходе - ничего не получилось.

То есть в файл /etc/sysconfig/i18n параметры я внес. Систему перезагрузил.

Перемонтировал папку - кодировка не поменялась.

Результат команды locale также не изменился - POSIX

Но консоль это лишь один из вариантов - может быть это вообще ложный след.

Не пойму как решить проблему? Помогите, пожалуйста.

Спасибо.



Последнее исправление: salder (всего исправлений: 5)

Букав много.

Сейчас проблема с русификацией консоли. Правильно? Перепиши топик – совершенно непонятно какая ситуация в твоём CentOS7.

Шаблон

  • было
  • сделал
  • стало
next-anonymous
()

«dom=domen.local» - может быть domain , а не domen?

«Подозреваю, что параметр «codepage=» - не существует.»

правильно подозреваешь - список актуальных параметров нужно смотреть через man mount.cifs

если есть под рукой какой-нибудь liveCD , попробуй загрузиться с него без установки и подмонтировать каталог (только предварительно дай команду sudo mkdir -pv /mnt/share), так узнаешь, у тебя проблема с центосью, виндой, или ещё чем-то

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

d00fy «может быть domain»

С точки зрения правописания - да я ошибся, но это вымышленные имена. Честно - реальные не раскрываю публично, так как они прямо указывают на организацию. Уж не обижайтесь.

«если есть под рукой»

Могу сказать точно, что этот же самый сетевой виндозовский каталог под debian монтируется с нормальной кодировкой и даже без всяких iocharset=utf8.

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

«там есть параметр verbose»

Единственное, что добавилось при выполнении операции монтирования - это вот такая информация:

mount.cifs kernel mount options: ip=192.168.123.123,unc=\\192.168.123.123\public,iocharset=utf8,user=login,domain=domain.local,pass=********

То есть по сути те же самые опции из командной строки.

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

Нет. Те же самые знаки вопроса. То есть в командной строке он позволяет вводить русские символы, например, «mkdir тест», но после он их выдает в виде знаков вопроса: ls

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

ну вот и прояснили вопрос

у тебя проблема с центосью (шрифтами и/или локалью) , cifs тут вообще не при делах.
Если в самом шрифте нету нужных/кириллических глифов, то отображаться будут вопросики/квадратики и тд

1) покажи вывод locale -a | grep -i ru
2) latarcyrheb-sun16 у тебя вообще есть в системе? Должен лежать по пути /usr/share/consolefonts/ или где-то рядом
3) посмотри таблицу, которую выдаёт showconsolefont -v
там вообще есть нужные глифы?

какая у тебя центось - обычная инсталляция образа с оф. сайта или что-то кастомное и обрезанное по самое немогу? Тип подключения какой - напрямую сидишь за физ. компом или подключаешься к виртуалке через vpn по ssh с помощью putty?

ну и тему заодно переименуй, раз уж cifs и монтирование здесь ни при чём :)

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

но после он их выдает в виде знаков вопроса: ls

Установи в консоли шрифт с поддержкой кириллических символов. И локаль должна быть UTF-8. Т.е. например en_US.UTF-8 или ru_RU.UTF-8, без разницы.

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

В debian локаль генерируется просто:

sed 's/\# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' -i /etc/locale.gen
locale-gen
echo "LANG=\"en_US.UTF-8\"" > /etc/default/locale
export LANG="en_US.UTF-8"

Т.е. по сути в файле /etc/locale.gen раскомментируется строка с указанием какую локаль нужно создать.

Далее вызовом скрипта locale-gen генерируется локаль.

Далее устанавливается локаль по умолчанию.

И устанавливается переменная окружения в текущей сессии для изменения локали.

Ты можешь сгенерировать локаль руками:

sudo localedef -c -f UTF-8 -i en_US en_US.UTF-8

Как выставить локаль по умолчанию в твоей CentOS погугли сам.

Навыки гугл у тебя я смотрю ещё не проросли или уже отрофировались.

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

«у тебя проблема с центосью (шрифтами и/или локалью) , cifs тут вообще не при делах.»

Вот как раз я в этом направлении тоже пытался копать, но тоже чего-то не получилось. Увы.

Итак…

«к виртуалке через vpn по ssh с помощью putty»

Именно так, ну напрямую через консоль виртуалки пробовал - все тоже самое.

Дебиан, про который я писал выше и где все работает - так же развернут в рамках этой же виртуалки.

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

locale -a | grep -i ru

cv_RU
cv_RU.utf8
mhr_RU
mhr_RU.utf8
os_RU
os_RU.utf8
ru_RU
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
ru_UA
ru_UA.koi8u
ru_UA.utf8
russian
tt_RU
tt_RU.utf8
tt_RU.utf8@iqtelif
tt_RU@iqtelif
  1. latarcyrheb-sun16 у тебя вообще есть в системе? Должен лежать по пути /usr/share/consolefonts/ или где-то рядом

Что-то я его не нашел.

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

И так пробовал искать:

find /usr/share -name "latarcyrheb-sun16*"

ls /usr/share/ | grep -i latarcyrheb-sun16

Или я не правильно ищу или его просто нет в системе.

showconsolefont -v

https://dataphoto.sibnet.ru/upload/imggreat/166149257404452266.jpg
salder
() автор топика
Ответ на: комментарий от salder

Очень интересно… А как запутанно (

Смотри локализации в консоли, это когда ты можешь

  • переключить раскладку клавиатуры, набрать «привет», нажать Enter
  • консоль тебе ответит «команда привет не найдена»

Так вот локализация консоли у тебя, как мне кажется, каким-то чудом работает…

Имена объектов ФС в кириллице немного другая история – надо смотреть опции монтирования

Выполни mount изучай его ответ.

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

а теперь смотри, как это выглядит у меня https://ibb.co/1JhcjCS
обрати внимание на число в первой строке, и я ничего не настраивал и не ковырял, даже не знаю, какой там шрифт используется

знаешь, как я догадался про виртуалку по ssh по vpn через putty? Нашёл поиском по форуму точно такую же тему, там тоже были вопросики и квадратики на centos7, вот она

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

Шрифт latarcyrheb-sun16 нашелся (спасибо подсказки от sigurd)

https://dataphoto.sibnet.ru/upload/imggreat/166153101809452266.jpg

Кстати kbd пакеты тоже имеются:

https://dataphoto.sibnet.ru/upload/imggreat/166153128757452266.jpg

next-anonymous «Так вот локализация консоли у тебя, как мне кажется, каким-то чудом работает…»

Не совсем понял. В ответ на «привет» выдает:

-bash: $'\320\322\311\327\305\324': command not found

d00fy «обрати внимание на число в первой строке»

512 - в 2 раза больше.

Вот и вопрос, а почему так?

«Нашёл поиском по форуму точно такую же тему,» Не совсем такую же. Там проблема, судя по всему в теминале. Я, конечно, работаю по SSH, но русские символы недоступны и через эмулятор на гипервизоре.

Кстати, как я писал выше - у меня вывод locale такой:

LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
salder
() автор топика
Ответ на: комментарий от salder

А должна быть любая локаль с UTF-8.

Попробуй: https://www.google.com/amp/s/www.osetc.com/en/centos-7-rhel-7-change-the-system-locale.html

Неужели так сложно гуглить?

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

kostik87, спасибо.

В гугле нужно знать, что искать.

На самом деле это сообщение твое увидел только сейчас. Но попробовал прогуглить по команде localedef и нашел статью - примерно такую же как ты скинул.

[root@la-svm-192-168-44-101 mnt]# localectl status
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
       X11 Model: pc105+inet
     X11 Options: terminate:ctrl_alt_bksp

Это решило проблему русских букв в консоли через ssh Но это не решило проблему русских букв при работе через эмулятор виртуальной машины. Но решение было найдено такое: Добавляем (меняем) в /etc/vconsole.conf FONT=«UniCyr_8x16».

Всем спасибо!

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