суббота, 18 августа 2018 г.

Debian: ошибка в работе жесткого диска Seagate

Посыпался WD Caviar Green 1.5Tb. Не такой уж старый - девять лет всего - а вот поди ж ты. Ну, посыпался - и бог с ним, говорят, это у них часто бывает. Пришлось купить на замену Seagate 2Tb IronWolf. Пять месяцев отработал без нареканий, а потом началось. Бывает, смотришь, а точка монтирования пустая - диск отвалился. В логах (по команде dmesg) высыпается такой набор:
[549201.794807] Buffer I/O error on device sdd1, logical block 225329999
[549201.794811] EXT4-fs warning (device sdd1): ext4_end_bio:250: I/O error -5 writing to inode 37618358 (offset 45134135296 size 49152 starting block 225330256)
[549201.801653] EXT4-fs error (device sdd1): ext4_journal_start_sb:327: Detected aborted journal
[549201.801659] EXT4-fs (sdd1): Remounting filesystem read-only
[549201.801662] EXT4-fs (sdd1): previous I/O error to superblock detected
[549201.801673] EXT4-fs (sdd1): ext4_da_writepages: jbd2_start: 9223372036854775807 pages, ino 37618358; err -30
[549201.805986] sd 5:0:0:0: [sdd] Synchronizing SCSI cache
[549202.047724] ata6: SATA link down (SStatus 0 SControl 310)
[549202.047732] ata6.00: link offline, clearing class 1 to NONE
[549202.047740] ata6: EH complete
[549202.047782] sd 5:0:0:0: [sdd]  Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[549202.047786] sd 5:0:0:0: [sdd] Stopping disk
[549202.047794] sd 5:0:0:0: [sdd] START_STOP FAILED
[549202.047796] sd 5:0:0:0: [sdd]  Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
[549202.066818] ata6: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
[549202.066823] ata6: irq_stat 0x00000040, connection status changed
[549202.066826] ata6: SError: { CommWake DevExch }
[549202.066836] ata6: limiting SATA link speed to 1.5 Gbps
[549202.066840] ata6: hard resetting link
[549202.843166] ata6: SATA link down (SStatus 0 SControl 310)
[549202.843174] ata6.00: link offline, clearing class 1 to NONE
[549202.843182] ata6: EH complete
[549202.865848] ata6: exception Emask 0x10 SAct 0x0 SErr 0x4040000 action 0xe frozen
[549202.865853] ata6: irq_stat 0x00000040, connection status changed
[549202.865857] ata6: SError: { CommWake DevExch }
[549202.865866] ata6: limiting SATA link speed to 1.5 Gbps
[549202.865869] ata6: hard resetting link
[549203.642603] ata6: SATA link down (SStatus 0 SControl 310)
[549203.642611] ata6.00: link offline, clearing class 1 to NONE
[549203.642619] ata6: EH complete
Что к чему - непонятно. Диск вроде живой, перемонтируешь его или комп перезагрузишь - и опять работает. Наконец, ошибки стали появляться слишком часто, поэтому полез гуглить.

Знающие люди говорят, что, возможно, это потому что диск - sata3, а материнская плата - sata. Т.е., у сигейта такие хитрые настройки или таймауты, что линукс считает, что диск отвалился, и выдает ошибку. Понятных мне варианта решения два: заменить диск или прописать в /etc/default/grub такую опцию:
GRUB_CMDLINE_LINUX="libata.force=1.5Gbps"
и выполнить команду update-grub.

Прописал, выполнил, перезагрузился. Уже больше суток не отваливается. Будем надеяться, помогло.

UPD 2018-08-28: Не помогло. Следующий вариант - отключить кэширование записи на диск:
hdparm -W0 /dev/sdd
Куда деваться, попробую его. Попутно узнал команды lspci (показывает контроллеры) и hdparm -I /dev/sdd (показывает много всякой интересной информации о диске).

UPD 2019-07-24: Как-то этот костыль худо-бедно работал, а сегодня пришлось отключить компьютер на пару часов, и... И обратно система не поднялась - завалила экран ошибками диска на этапе загрузки. С испугу купил новый диск, и тут выяснилось, что новый, хоть и другая модель, но ведёт себя точно так же. Помогло перетыкание питания - просто один пучок проводков, идущий от БП, заменил на другой. Так что, возможно, все эти ошибки - результат того, что что-то неладно с питанием. Похоже, не диски надо было мучить, а элементарно поставить новый блок питания.

Литература

Disk IO errors on all sata disks, disks dropped out
Ubuntu Freeze Issue After SSD Upgrade
[ubuntu] Problems with the new Seagate 1.5TB hard drives

понедельник, 13 августа 2018 г.

Отключить HSTS

Оказывается, есть на свете такой механизм: HSTS (HTTP Strict Transport Security). Эта штука препятствует работе с сервером, сертификат которого не удовлетворяет определенным требованиям безопасности, однако, иногда такая забота мешает жить.

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

Чтобы браузер забыл настройки HSTS для сайта, нужно:

а) в Google Chrome перейти по ссылке chrome://net-internals/#hsts, в разделе Delete domain ввести адрес сайта и нажать кнопку Delete.

б) в Mozilla FireFox зайти в журнал просмотренных страниц, на нужном адресе правым кликом мыши вызвать контекстное меню, в котором выбрать последний пункт "Забыть об этом сайте".

Литература
Here’s how to disable HSTS settings in Chrome & Firefox

понедельник, 6 августа 2018 г.

Для взлома шифра Цезаря

S = "Кгылчусеюегм ефб лрчсупгщлб"

S = S.upper()

chars = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"
for i in range(0, len(chars)):
    print(i, "".join(chars[(chars.find(s) + i)%len(chars)] if chars.find(s) >= 0 else s for s in S))

можно было, конечно, и так:
for i in range(0, 33):
    print("".join(chr(ord('А')+(ord(s)-ord('А')+i)%(ord('Я')-ord('А')+1)) if ord(s) in range(ord('А'),ord('Я')+1) else s for s in S))
но вдруг набор символов слегка отличается от привычного?

пятница, 3 августа 2018 г.

Windows 7: повторно подключить к домену

Одна рабочая станция под управлением Windows 7 начала при попытке авторизоваться выдавать следующее: "База данных диспетчера учетных записей на сервере не содержит записи для регистрации компьютера через доверительные отношения с этой рабочей станцией". Оказалось, что какой-то злодей снёс учетную запись компьютера в Active Directory. Ситуация осложнилась тем, что доменными политиками отключена учетная запись локального администратора.

К счастью, удалось прицепиться под доменной админской учетной записью (один из админов когда-то входил в этот компьютер за какой-то своей надобностью, и локальный профиль сохранился). Дальше поступили как в случае с Windows XP. Единственная тонкость: команду netdom remove пришлось выполнить с ключом /Force, чтобы рабочая станция осознала, что она уже не в домене.
netdom remove myWS /Domain:myDOMAIN /UserD:myDOMAIN\Admin /PasswordD:*** /Force
netdom join myWS /Domain:myDOMAIN /UserD:myDOMAIN\Admin /PasswordD:***