LINUX.ORG.RU

Сообщения dva20

 

Почему C++ не может без потери данных сдвинуть запятую во float типе данных?

Привет всем!

Столкнулся с проблемой, простейшее умножение числа 0.56 на 10.0 не даёт точного результата. C++ просто не в состоянии перенести знак справа налево когда я хочу перенести разряд. Но при этом, 0.56 * 100.0 даёт точный ответ, точное число 56.0! Lol! ))))

Многие ответят скорее всего, что - «округли, да и всё!». Нет, округление не подходит, так как задача выполняется не в традиционных языках программирования, а в нодовой системе шейдеров Blender где ноды математики полагаются полностью на логику C++ в отношении математики и я не могу ничего с этим поделать кроме того, что доступно из математики в Блендер.

Да, в нодах есть операции округления, но мне это не подходит, потому что мне нужно получать из большого целого числа отдельные части разрядов, т.е. из числа 12345 получать отдельно число 1,2,3,4 и 5. При этом у меня нет никаких переменных, циклов и т.д.как в традиционных языках программирования. Есть только нодовый поток. Я научился это делать умножением и делением, получать отдельные разряды в нодовом потоке, но столкнулся со странной математикой в C++ на которые эти ноды опираются (полагаются).

Почему C++ не может просто сдвинуть запятую справа налево при умножении на 10, а при умножении на 100 может? Это баг какой-то или фича?

В других языках, которых я немного знаю, Java и Python (да, я понимаю, что это интерпретируемые языки) такого нет, результат всегда ожидаемый: 0.56 * 10.0 = 5.6 - P.S. Как оказалось - нет, см. комметарии.

https://godbolt.org/z/ErnbfePhf

 ,

dva20
()

mount -o remount,rw никак не хочет

Всем привет!

Никак не хочет ремаунтится :( Ответов в гугле не нашёл. Есть смонтированный раздел в режиме readonly:

/dev/sda5 on /mnt/data1 type ntfs3 (ro,noatime,uid=1000,gid=1000,fmask=37777600137,dmask=37777600027,iocharset=utf8)

Хочу его перемонтировать в режим readwrite, получаю ошибку:

$ sudo mount -o remount,rw /dev/sda5 /mnt/data1/
mount: /mnt/data1: mount point not mounted or bad option.

Как я только не колдовал, ничего не выходит.

 ,

dva20
()

Именование дисков (sda, sdb, sdc...). Как поменять порядок?

Всем привет!

Может кто знает, как поменять именование устройств, а конкретно SATA накопителей в системе? Есть мамка Asus Z-87-Pro с двумя контроллёрами SATA, на одном контроллёре 2 порта (ASMedia), на втором 6 (Intel).

Системный диск с Linux на борту я подключил к первому контроллёру (ASMedia), так как на втором контроллёре (Intel) дергаю диски в Hot-plug режиме не останавливая систему. Не знаю, насколько это хорошо, но кажется что система подключенная на другом контроллёре избавит от каких-то задержек или сбоев. В будущем возможно на контроллёре Intel из дисков сделаю массив (контроллер позволяет), а система будет на другом контроллёре (ASMedia), думаю так будет хорошо.

Проблема в том, что не совсем для меня удобно, что система именует устройства начиная с устройств на контроллере Intel, а затем на ASMedia, таким образом системный диск и его наименование (sda,sdb,sdc) всегда является плавающим, самым последним в именовании. Например, если я подключу 2 диска, то системный поименуется как sdc, если один дополнительный диск подключу, то системный станет sdb.

Как сделать так, чтобы не переключая системный диск с контроллёра ASMedia сделать диск в системе sda? Т.е. чтобы Linux именовал вначале устройства с ASMedia конторллера?

 , ,

dva20
()

Как при загрузке вставить loopback файл в устройство /dev/loop1?

Привет!

Есть некий loop-файл, он размечен под FS и вставляется вручную в loopback устройство:

sudo losetup --find --show /mnt/work/lxd/hddpool.img

И вот он, например, вставился в /dev/loop1, но при перезагрузке ОС он «вылетает», не запоминается.

Как сделать так, чтобы этот файл устанавливался автоматически при загрузке в заданный слот? При этом монтировать ФС на нём не нужно, этим занимается другой демон (хипервизор) в обход /etc/fstab.

Есть вариант создать service unit в systemd в котором указать скрипт который будет «вставлять» файл в /dev/loop1, но может есть более простые способы?

 

dva20
()

Производительность GPU падает более чем в 100 раз после сна

Привет!

Столкнулся с такой проблемой, после пробуждения от сна (режим - Suspend to RAM) производительность GPU чем-то ограничивается и на десктопе ощущаются существенные тормоза:

GL_RENDERER   = Mesa DRI Intel(R) Haswell Desktop 
GL_VERSION    = 3.0 Mesa 19.3.5
GL_VENDOR     = Intel Open Source Technology Center

Замер производительности с вертикальной синзхронизацией:

glxgears

Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
281 frames in 5.0 seconds = 56.052 FPS
272 frames in 5.0 seconds = 54.152 FPS
273 frames in 5.0 seconds = 54.418 FPS
276 frames in 5.0 seconds = 55.070 FPS
274 frames in 5.0 seconds = 54.501 FPS
279 frames in 5.0 seconds = 55.569 FPS
275 frames in 5.0 seconds = 54.950 FPS
270 frames in 5.0 seconds = 53.800 FPS

Без вертикальной синхронизации:

vblank_mode=0 glxgears

863 frames in 5.0 seconds = 172.322 FPS
319 frames in 5.0 seconds = 63.735 FPS
341 frames in 5.0 seconds = 67.555 FPS
341 frames in 5.0 seconds = 68.195 FPS
321 frames in 5.0 seconds = 64.006 FPS
333 frames in 5.0 seconds = 66.521 FPS
330 frames in 5.0 seconds = 65.663 FPS
328 frames in 5.0 seconds = 65.521 FPS

Если перезагрузится или использовать режим Hibernate (Suspend to disk) вместо режима сна (Suspend to RAM) то эта проблема не воспроизводится, десктоп выдает стабильные 300кадров/5сек:

Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
379 frames in 5.0 seconds = 75.797 FPS
300 frames in 5.0 seconds = 59.948 FPS
300 frames in 5.0 seconds = 59.951 FPS
300 frames in 5.0 seconds = 59.951 FPS
300 frames in 5.0 seconds = 59.951 FPS
300 frames in 5.0 seconds = 59.949 FPS
300 frames in 5.0 seconds = 59.951 FPS
300 frames in 5.0 seconds = 59.951 FPS

А с отключенной вертикальной синхронизацией GPU выдает в ~100 раз большую производительность, чем после сна:

vblank_mode=0 glxgears

34923 frames in 5.0 seconds = 6983.869 FPS
33196 frames in 5.0 seconds = 6638.185 FPS
34947 frames in 5.0 seconds = 6988.887 FPS
34660 frames in 5.0 seconds = 6931.963 FPS
35341 frames in 5.0 seconds = 7068.122 FPS
34363 frames in 5.0 seconds = 6871.447 FPS
34569 frames in 5.0 seconds = 6907.310 FPS

Что делать, куда копать и как исправить?

 ,

dva20
()

jbd2 жрет IO ресурсы на SSD

Привет!

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

Пользовался целый день только браузером, немного телеграмом, браузерный кеш на диске отключён, работает только в оперативке, больше никаких программ не запущено, но при этом, что-то потребляет дисковые ресурсы и записывает 5 гигов на /home разделе. Понял это я из поля Lifetime writes в суперблоке файловой системы EXT4:

cat /sys/fs/ext4/dm-4/lifetime_write_kbytes

Ладно там логи бы в /var писались, но в хоум что такого пишется на 5 гигов, считай в простое??

Запустил sudo iotop -oPa и сразу обнаружил, что больше всех потребляет DISK WRITE процесс jbd2/dm-4, где dm-4 это отдельный том в LVM’e с точкой монтирования /home:

Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
    PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                                 
   1066 ?dif dv            0.00 B      0.00 B  0.00 %  1.39 % kwin_x11 -session
    788 ?dif root          0.00 B     24.00 K  0.00 %  1.26 % Xorg -nolisten tcp -auth
   1070 ?dif dv            0.00 B      8.00 K  0.00 %  1.20 % plasmashell
    536 be/3 root          0.00 B   1556.00 K  0.00 %  0.05 % [jbd2/dm-4-8]
    538 be/3 root          0.00 B    196.00 K  0.00 %  0.02 % [jbd2/dm-2-8]
    338 be/4 root          0.00 B      0.00 B  0.00 %  0.01 % [dmcrypt_write/2]
    371 be/3 root          0.00 B     16.00 K  0.00 %  0.00 % [jbd2/dm-1-8]
    417 be/4 root          0.00 B      2.18 M  0.00 %  0.00 % systemd-journald
  25122 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [kworker/u16:7-kcryptd/254:0]
  25121 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [kworker/u16:2-kcryptd/254:0]
    567 be/4 root          0.00 B      8.00 K  0.00 %  0.00 % NetworkManager --no-daemon
  23902 be/4 root          0.00 B      0.00 B  0.00 %  0.00 % [kworker/u16:5-kcryptd/254:0]
  26755 ?dif dv           12.00 K     52.00 K  0.00 %  0.00 % dolphin
   1970 be/4 dv          384.00 K      8.19 M  0.00 %  0.00 % firefox -P developer
    916 be/4 root         20.00 K      0.00 B  0.00 %  0.00 % udisksd
   2364 be/4 dv            0.00 B    128.00 K  0.00 %  0.00 % firefox
  26977 be/4 dv          228.00 K      0.00 B  0.00 %  0.00 % firefox -contentproc -childID 16
   1114 ?dif dv            0.00 B      0.00 B  0.00 %  0.00 % telegram-desktop-bin
   1005 be/4 dv            0.00 B     16.00 K  0.00 %  0.00 % kdeinit5: Running...
   1391 ?dif dv            0.00 B      8.00 K  0.00 %  0.00 % konsole
   1425 be/4 dv            0.00 B      8.00 K  0.00 %  0.00 % code --no-sandbox
   1465 be/4 dv            0.00 B      8.00 K  0.00 %  0.00 % code --type=utility
   6719 be/4 dv            0.00 B      8.00 K  0.00 %  0.00 % firefox -contentproc -childID 15

Записал процесс jbd2/dm-4 на диск аж 1556.00 K за время запуска iotop, тогда как всё остальные близки к нулю или несуществены по сравнению с размером журнала для этого раздела (dm-4)! Это как так? Что журналируется, если ничего не меняется в файловой системе? (поле COMMAND сократил немного, так как оно не влияет на мой вопрос, чтобы отображалось без переносов).

В /etc/fstab опции монтирования с noatime

Режим журналирования для /home с EXT4 на нём включен «обычный», это - journal_ordered, которое говорит, что журналирует только метаданные. Это что за метаданные такие которые требуют таких объёмов в простое?

Как это можно оптимизировать не меняя режим журналирования? Как узнать, для каких файлов были изменения в журнале, чтобы узнать на что потратились 1500K? Как посмотреть сам журнал в «человеческом» виде и можно ли вообще?

 ,

dva20
()

SSD TRIM на LVM томах упакованных в LUKS

Привет!

Перерыл весь инет, читал мануалы wiki Arch’евой, но это всё какой-то мусор, не работает и внятного ответа не нашел :(

Поплакался, теперь к делу :)

Хочу чтобы работал TRIM. Оборудование подерживает, диск - SSD Samsung 860 EVO. Чтобы много букв не писать, сразу показываю lsblk, где cryptlvm - это контейнер LUKS:

lsblk

NAME             MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                8:0    0 232,9G  0 disk  
├─sda1             8:1    0   285M  0 part  /boot/efi
└─sda2             8:2    0 232,6G  0 part  
  └─cryptlvm     254:0    0 232,6G  0 crypt 
    ├─vg1-lvroot 254:1    0    15G  0 lvm   /
    ├─vg1-lvvar  254:2    0    15G  0 lvm   /var
    ├─vg1-lvswap 254:3    0    15G  0 lvm   [SWAP]
    └─vg1-lvhome 254:4    0 187,6G  0 lvm   /home

В /etc/fstab опция discard прописана:

# /dev/mapper/vg1-lvroot
UUID=e86ab458-341d-4f59-8344-0271d2c363e8       /               ext4            rw,noatime,discard      0 0

# /dev/mapper/vg1-lvvar
UUID=44b31816-1193-4dc1-9f58-f70df2250e1a       /var            ext4            rw,noatime,discard      0 0

# /dev/mapper/vg1-lvhome
UUID=372bc9ae-b581-49a4-abed-ca9f3b67edb6       /home           ext4            rw,noatime,discard      0 0

# /dev/sda1
UUID=0BE5-60FB          /boot/efi       vfat            rw,relatime,discard,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro       0 0

# /dev/mapper/vg1-lvswap
UUID=cf67ae1e-3a17-4e5e-ac58-ef23725d2359       none            swap            defaults,discard,pri=-2 0 0

Для LVM в файле /etc/lvm/lvm.conf значение для issue_discards установлено в 1, но это не влияет на TRIM при удалении файлов с раздела файловой системы, а пересылает устройству команду только в случае изменений LVM томов, таких операций как lvreduce, lvresize и т.д.

В /etc/crypttab ничего не прописано, там одни комментарии. Как я понял, записи в этом файле это не для моего случая, это для разделов которые открываются после монтирования корневой ФС, где LUKS находится на LVM разделах. У меня же LVM внутри LUKS который открывает initramfs (насколько я вообще пониманию процесс загрузки верно) для которого прописаны хуки в конфиге /etc/mkinitcpio.conf.

Стало быть где-то надо что-то прописать для ядра в grub’e чтобы это передалось в initramfs. Что и как - загадка, тайна, и главный вопрос - Что прописать, как и где?

P.S. Дистрибутив - Manjaro

Сейчас TRIM работает только /dev/sda1:

sudo fstrim -v /boot/efi/
/boot/efi/: 284 MiB (297762816 bytes) trimmed

sudo fstrim -v /
fstrim: /: the discard operation is not supported

 , , , ,

dva20
()

Шифрование хомяка (/home)

Расскажите какой один из двух способов шифрования лучше использовать для /home:

  • Block device encryption
  • Stacked filesystem encryption

Цель: Чтобы при смерти (не дай Бог конечно, но тут всякие коронавирусы гуляют по планете и прочее 😆), или при воровстве ПК данные на /home было невозможно «угнать».

Можно воспользоваться шифрованием на уровне FS, выбрать одну из них и отформатировать раздел под неё, но тогда какие практические опасности меня могут ожидать (глюки файловых систем)? Или всё же лучше использовать блочное шифрование на весь диск и не парится?

Здесь вот есть сравнительная таблица, но я пока не определился и хочется послушать гуру.

 , , ,

dva20
()

Процесс записи файла в Linux и полное журналирование ФС

Привет!

Заморочился я тут с журналированием и не могу понять, нужно ли мне data=journal в /etc/fstab для EXT4 или нет. По умолчанию журналирование установлено в data=ordered, где менеджер журнала заносит метаданные файла в журнал, но данные файла пишутся напрямую на диск.

Так вот, хочу понять как происходит запись файла в Linux. Если, доупустим, приложение открыло файл размером 100Mb (допустим некий фотошоп 😄), далее было сделано пару мазков по фотке и нажат был save. Что дальше произойдёт?

  1. Ядро как-то поймёт, что из 10000 блоков этого файла изменились только 1000, ядро «пометит» их как удаленные, а 9000 останутся на месте, затем допишет новые 1000 блоков (мазок в фотошопе) и занесёт новую последовательность блоков в метаинформацию файла?

  2. Ядро оставит на месте все 10000 блоков этого файла, начнёт писать измененные данные всего файла (10000 блоков) в новое место в файловой системе, дописав до конца файл, он удалит старый файл, а новый переименует в старый файл. Если в процессе записи вырубили рубильник, новый файл не дописался, перешёл в состояние corrupted, то он просто стирается с диска (при проверке целостности ФС), старый файл остаётся целостным на диске, теряем только изменения после последнего сохранения.

Если процесс происходит по второму варианту, то в чём заключается смысл data=journal? Достаточно ли режима data=ordered для /home? Насколько это безопасно в плане целостности файлов? Не хочется потерять весь файл, но согласен на утерю изменений после последнего успешного сохранения.

 ,

dva20
()

Узнать текущий режим журналирования EXT4

Привет!

Как узнать какой сейчас уровень журналирования? Те сведения, что я получаю, они противоречивы. Кому верить?

dmesg говорит, что dm-3 смонтирован в режиме ordered data:

sudo dmesg | grep EXT4
[    3.606496] EXT4-fs (dm-2): 2 orphan inodes deleted
[    3.606498] EXT4-fs (dm-2): recovery complete
[    3.674947] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: (null)
[    6.807128] EXT4-fs (dm-2): re-mounted. Opts: (null)
[   14.243801] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: (null)
[   14.996558] EXT4-fs (dm-1): mounted filesystem with ordered data mode. Opts: (null)

dm-3 это мой HOME:

$ realpath /dev/mapper/vg01-home 
/dev/dm-3

Если посмотреть на вывод tune2fs

sudo tune2fs -l /dev/mapper/vg01-home

то обнаружим, что дефолтные опции монтирования (Default mount options) включают journal_data, но почему в demesg ordered data? Где реальность и как узнать, какой сейчас используется режим журналирования ФС?

tune2fs 1.45.5 (07-Jan-2020)
Filesystem volume name:   <none>
Last mounted on:          /home
Filesystem UUID:          ae4ccbf7-ab32-4274-a1f0-33a811cbba11
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash 
Default mount options:    journal_data user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              655360
Block count:              2621440
Reserved block count:     131072
Free blocks:              677390
Free inodes:              515565
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1024
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Fri Feb  1 01:35:02 2019
Last mount time:          Sun Mar 15 12:30:49 2020
Last write time:          Sun Mar 15 15:32:02 2020
Mount count:              129
Maximum mount count:      -1
Last checked:             Fri Feb  1 01:35:03 2019
Check interval:           0 (<none>)
Lifetime writes:          3260 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:               256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
First orphan inode:       133838
Default directory hash:   half_md4
Directory Hash Seed:      dc916ca1-f837-4230-b972-a6e86b022d7a
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x2d4ec7e8

mount не показывает дефолтные опции монтирования:

mount | grep mapper
/dev/mapper/vg01-root on / type ext4 (rw,noatime)
/dev/mapper/vg01-home on /home type ext4 (rw,noatime)
/dev/mapper/vg01-var on /var type ext4 (rw,noatime)

 ,

dva20
()

Автоматическое монтирование IPhone FS с отображением в Dolphin (KDE)

Всем привет!

Почитал инструкцию как получить доступ к файлам на IPhone в Manjaro Linux. Но у меня не появляется ничего автоматически в файловом менеджере Dolphin (KDE). Появляется лишь в трее KDE removable устройство с доступом к iphone по какому-то PTP-mode который не дает доступ к фоточкам.

В этой инструкции приводится вариант ручного монтирования. Всё работает замечательно.

Как же всё таки можно сделать, чтобы это было по человечеки, воткнул USB кабель с Iphone в PC и открылся Dolphin с файлами? Можно и самому открыть Dolphin, главное, чтобы слева в меню появился раздел.

 , , ,

dva20
()

Визуальное сравнение 2-х и более картинок

Всем привет!

Подскажите пожалуйста, есть ли какой софт в мире Linux, который бы позволял визуально сравнить две и более картинок (до 4-х) в одном GUI окне? Например, так как это делает виндовый XnView. В одном окне, он позволяет масштабировать, двигать картинку синхронно и таким образом визуально оценивать разницу. Программные сравнения не годятся, нужно только визуальное сравнение.

P.S. Знаю про XnView MP - это кроссплатформенная версия, есть под мой дистрибутив, но там сравнение картинок реализовано хуже, чем в классической версии которая реализована только под Windows. Есть ли еще какой-то другой софт?

 ,

dva20
()

PKGBUILD Как вывести интерактивное сообщение пользователю во время установки пакета?

Всем привет!

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

Для этого, казалось бы есть решение, в PKGBULD, в install прописать файл скрипта с функциями, например так:

install="pre-post-scripts.install"

а в этом файле, например, в функции post_install() прописать запрос пользователю через read:

post_install() {

    while [[ ! $answer =~ ^(y|n)$ ]]; do
        read -p 'Do you want.... ? [y/n]: ' answer
    done

    if [[ $answer = y ]]; then
        echo "User answered - yes"
    fi

}

Проблема заключается в том, что после сборки пакета, уже при установке пакета с помощью pacman в этом месте кода установка приостанавливается, но ввести ничего в консоли нельзя, как бы read не может считать из STDIN.

Есть ли какие идеи? Как это сделать так, чтобы работал корректно запрос пользователю?

 , , ,

dva20
()

Как удалить полностью модуль ядра?

Привет!

Перерыл гугл, ответа не нашел. Описание удаление модуля в документациях и howto это как оказывается совсем не удаление, а отключение/выключение его в ядре. Мне же, необходимо удалить его полностью из системы.

Есть модуль vmnet, который скомпилировал и установил его VMWare. Хочу вычистить этот модуль из системы вручную. Что делаю:

  • Отключаю модуль в ядре:
$ sudo modprobe -r vmnet
  • Модуль выгрузился, дполнительно проверяю, что в выводе его нет:
$ lsmod | grep vmnet
  • Но в системе он всё еще есть:
$ modinfo vmnet
filename:       /lib/modules/4.20.11-1-MANJARO/misc/vmnet.ko
supported:      external
license:        GPL v2
description:    VMware Virtual Networking Driver.
author:         VMware, Inc.
srcversion:     118E4A26C0F7927B72EE07E
depends:        
retpoline:      Y
name:           vmnet
vermagic:       4.20.11-1-MANJARO SMP preempt mod_unload modversions 
parm:           vnet_max_qlen:Maximum queue length of the vmnet, default is 1024, maximum is 1024 (uint)

Если попытаться удалить файл /lib/modules/4.20.11-1-MANJARO/misc/vmnet.ko, то при следующем запросе modinfo выдаст ошибку:

$ modinfo vmnet
filename:       /lib/modules/4.20.11-1-MANJARO/misc/vmnet.ko
modinfo: ERROR: could not get modinfo from 'vmnet': No such file or directory

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

 , ,

dva20
()

Русская рулетка с PPPoE в Manjaro Linux

Привет!

Столкнулся с проблемой и не нахожу решения. Прошу помощи.

После установки Manjaro Linux с рабочим столом KDE, я попытался настроить через Network Manager сеть, то есть Ethernet который ведет к провайдеру. С этим нет проблем, линк поднялся, IP, маску, шлюз прописал такой, какой провайдер указывал. Но по этому соединению нет интеренета, надо поверх этого соединения PPPoE.

Выбираю в Network Manager тип нового подключения как DSL, прописываю логин и пароль, указываю использовать Ethernet который настроил ранее. Жму подключить - тишина. Жму еще, тишина. Так провозился туда-сюда, с перезагрузками долго, ничего не помогало. Перечитал в инете много всего - тоже не помогло. Но как-то пересохранив пароль (думаю не с этим связано, так как это делал регулярно, когда делал множественные попытки), то соединение вдруг заработало!

После этого, машина перезагружалась, выключалась и каждый раз при загрузке корректно срабатывало автоматическое подключение по PPPoE. Всё отлично и хорошо было где-то неделю.

Через неделю, ничего не делая с конфигами, с настройками и прочим, просто перезагружаю PC и соединение больше не устанавливается. Хоть 500 раз пробуй - ничего не выходит, поведение как и сразу после установки дистрибутива.

Что это за капризы? ))) Как их побороть? Что могло случиться с бинарным файлом, что он стал себя вести по другому и не хочет устанавливать PPPoE соединение? Как такое вообще возможно, если пользователь не менял логику, то он взял и сам поменял? Поясню, что перезагружаясь в Windows 10 соединение мгновенно устанавливается, то есть проблемы с кабелем, с провайдером исключаются. Затык где-то с Network Manager’ом.

В системных логах ничего полезного нет, pppd отваливается по таймауту:

09.02.2019 20:48	pppd	Plugin /usr/lib/pppd/2.4.7/nm-pppd-plugin.so loaded.
09.02.2019 20:48	NetworkManager	Plugin /usr/lib/pppd/2.4.7/nm-pppd-plugin.so loaded.
09.02.2019 20:48	NetworkManager.service	nm-ppp-plugin: (plugin_init): initializing
09.02.2019 20:48	pppd	pppd 2.4.7 started by root, uid 0
09.02.2019 20:48	NetworkManager	<info>  [1549734537.4433] device (eno1): carrier: link connected
09.02.2019 20:49	audit	SERVICE_STOP pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=NetworkManager-dispatcher comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
09.02.2019 20:49	NetworkManager	<warn>  [1549734565.6592] ppp-manager: pppd timed out or didn't initialize our dbus module
09.02.2019 20:49	NetworkManager	<info>  [1549734565.6594] device (eno1): state change: ip-config -> failed (reason 'ppp-failed', sys-iface-state: 'managed')
09.02.2019 20:49	NetworkManager	<info>  [1549734565.6600] manager: NetworkManager state is now DISCONNECTED
09.02.2019 20:49	NetworkManager	<warn>  [1549734565.6607] device (eno1): Activation: failed for connection 'New pppoe connection'
09.02.2019 20:49	NetworkManager	<info>  [1549734565.6611] device (eno1): state change: failed -> disconnected (reason 'none', sys-iface-state: 'managed')

Уважаемый гуру, подскажи, куда посмотреть, что покрутить, чтобы инет вернулся? ))

 ,

dva20
()

rsync - Как заставить его поумнеть?

Привет!

Столкнулся с проблемой и не знаю как решить:

Есть 2 каталога в которых файлы идентичны по хеш суммам:

test_from/folder_1/
test_to/folder1/

Запускаю rsync со следующими параметрами:

rsync --delete -avn test_from/ test_to/

В предварительном выводе, rsync пишет, что сначала он удалит ВСЕ файлы из каталога приёмника, а затем скопирует их же из источника, ВМЕСТО того, чтобы просто переименовать каталог из folder1 в folder_1.

Как rsync научить переименовывать каталоги, не трогая файлы?

 

dva20
()

[РЕШЕНО] Внешние SATA диски система не обнаруживает. Windows 10 всё видит и могёт.

Привет!

При подключении внешнего SATA диска через SATA-кабель (в системнике включаю питание нужному мне диску), этот диск не обнаруживается системой вообще никак. Ядро его не видит. Если перезагрузится, то всё прекрасно, диск обнаруживается и доступен к монтированию файловой системы. Что делать, куда копать?

В BIOS’е:

  • Режим AHCI
  • hotplug для всех других шин SATA, кроме системного диска — включен

В системе модуль имеется:

$ lsmod | grep ahci
ahci                   40960  2
libahci                40960  1 ahci
libata                278528  2 libahci,ahci

Но в выводе блочных устройств, ничего кроме sda нет и не появляется.

$ lsblk 
NAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda             8:0    0 931,5G  0 disk 
├─sda1          8:1    0   499M  0 part 
├─sda2          8:2    0   100M  0 part /boot/efi
├─sda3          8:3    0    16M  0 part 
├─sda4          8:4    0   100G  0 part 
├─sda5          8:5    0 780,9G  0 part 
└─sda6          8:6    0    50G  0 part 
  ├─vg01-swap 254:0    0    10G  0 lvm  [SWAP]
  ├─vg01-var  254:1    0    20G  0 lvm  /var
  ├─vg01-root 254:2    0    10G  0 lvm  /
  └─vg01-home 254:3    0    10G  0 lvm  /home

dmesg молчит, ничего не выдает при подключении диска. Дистрибутив Manjaro Linux самый распоследний со всеми обновлениями. Что делать?

P.S. Модели дисков разные пробовал, никакой из них не обнаруживается.

 ,

dva20
()

Осознание LXC/LXD и маршрутизация трафика

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

1) На картинке схематично изображена виртуальная машина Ubuntu 17.04 в гипервизоре VMWare Workstation Player который крутится на Windows 10.

2) VMWare предоставляет свой NAT сервис доступный по IPv4 192.168.21.2 который раздает Интернет доступный на хосте Windows 10 всем виртуальным машинам в том числе и Ubuntu 17.04

3) С виртуальной машины Ubuntu 17.04 Интернет доступен

4) Также, на этой виртуальной машине (Ubuntu 17.04) запущен Linux-контейнер «test-alpine» под менеджером LXD/LXC.

Проблема заключается в том, что с контейнера «test-alpine» не доступен VMWare'овский NAT, ну и соответственно интернет внутри контейнера не доступен.

Пинги между контейнером «test-alpine» и Ubuntu 17.04 где хостится этот контейнер ходят без проблем, туда и обратно, но вот транзитные пинги с контейнера до NAT не ходят, хотя IPv4 forwarding включен, равняется единичке. Так же таблица маршрутизации на Ubuntu позволяет как бы беспрепятственно идти трафику:

$ ip route
default via 192.168.21.2 dev ens33 proto static metric 100 
10.0.3.0/24 dev lxdbr0 proto kernel scope link src 10.0.3.1 
169.254.0.0/16 dev ens33 scope link metric 1000 
192.168.21.0/24 dev ens33 proto kernel scope link src 192.168.21.141 
192.168.21.0/24 dev ens33 proto kernel scope link src 192.168.21.141 metric 100

а также iptables этому не мешает:

$ sudo iptables -L
[sudo] password for dv: 
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain /* generated for LXD network lxdbr0 */
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain /* generated for LXD network lxdbr0 */
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps /* generated for LXD network lxdbr0 */

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             /* generated for LXD network lxdbr0 */
ACCEPT     all  --  anywhere             anywhere             /* generated for LXD network lxdbr0 */

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp spt:domain /* generated for LXD network lxdbr0 */
ACCEPT     udp  --  anywhere             anywhere             udp spt:domain /* generated for LXD network lxdbr0 */
ACCEPT     udp  --  anywhere             anywhere             udp spt:bootps /* generated for LXD network lxdbr0 */

Сетевые интерфейсы на Ubuntu:

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b1:a2:2d brd ff:ff:ff:ff:ff:ff
    inet 192.168.21.141/24 brd 192.168.21.255 scope global dynamic ens33
       valid_lft 1644sec preferred_lft 1644sec
    inet6 fe80::8b3f:e07b:586b:c8ff/64 scope link 
       valid_lft forever preferred_lft forever
4: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fe:c4:a4:54:a4:ed brd ff:ff:ff:ff:ff:ff
    inet 10.0.3.1/24 scope global lxdbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::e8dd:13ff:fea4:b624/64 scope link 
       valid_lft forever preferred_lft forever
6: veth6YJUNU@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxdbr0 state UP group default qlen 1000
    link/ether fe:c4:a4:54:a4:ed brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::fcc4:a4ff:fe54:a4ed/64 scope link 
       valid_lft forever preferred_lft forever

Бридж lxdbr0:

$ brctl show
bridge name     bridge id               STP enabled     interfaces
lxdbr0          8000.fec4a454a4ed       no              veth6YJUNU

Сеть LXC. Здесь NAT который предоставляет LXC выключен сознательно, так как не понятно что он делает, хочется разобраться в базовой маршрутизации, почему транзитный трафик не ходит с контейнера до NAT VMWare.

$ lxc network show lxdbr0
config:
  ipv4.address: 10.0.3.1/24
  ipv4.nat: "false"
  ipv6.address: none
name: lxdbr0
type: bridge
used_by:
- /1.0/containers/test-alpine
managed: true

Так же есть другой вопрос по теме, это не могу понять вообще смысл сетевого моста который требует LXD и не до конца понятен его механизм работы. Бридж это как я понял из интернетов маленький свитч работающий на канальном уровне сетевой модели OSI. Если смотреть в информацию бриджа через утилиту brctl, то там я обнаруживаю подключение только veth адаптера хоста, но не eth0 контейнера, однако каким то магическим способом контейнер соединяется с хостом. Если смотреть через настройки LXC то там информация отражается, что контейнер присоединен к мосту, но почему это не видно через утилиту brctl? Для чего вообще LXD требует сетевой мост, разве не достаточно виртуальной карты (veth) на хосте (Ubuntu) которые он все равно создает для каждого контейнера? Разве не достаточно такой схемы и почему?

veth2 (хост) 10.0.3.2/24 <---> eth0 (контейнер1) 10.0.3.101/24
veth3 (хост) 10.0.3.3/24 <---> eth0 (контейнер2) 10.0.3.102/24

Сейчас схематично это вот как то так:

br0 (хост) 10.0.3.1/24 (сюда "воткнуты" veth2, veth3)
veth2 (хост) 0.0.0.0 <---> eth0 (контейнер1) 10.0.3.101/24
veth3 (хост) 0.0.0.0 <---> eth0 (контейнер2) 10.0.3.102/24

Вообщем, буду благодарен за любую информацию которая приведет к просветлению :)

 , ,

dva20
()

RSS подписка на новые темы