понедельник, 31 марта 2014 г.

Сегодня "World Backup Day 2014" - начать делать бэкапы никогда не поздно

Сегодня всемирный день бэкапа. Создайте и проверьте бэкап сегодня, чтобы не стать жертвой розыгрыша завтра.

Я вот под шумок перевел парочку хостов с rdiff-backup на bacula и проверил восстановление из старого бэкапа. Теперь останется только просматривать отчеты bacula по утрам.


понедельник, 24 марта 2014 г.

Выбор уже сделан за вас

Решил просмотреть на компьютере mobi версию книги "Дети пространства" Витуса Вагнера перед заливкой в читалку. Но при запуске Kindle Reader'а получил это


На мой взгляд Amazon ведет себя по-свински предлагая таким образом обновление.

пятница, 14 марта 2014 г.

Пакетирование драйвера для принтера Panasonic KX-MB2020RU

В офисе стоят сетевые МФУ Panasonic, в частности Panasonic KX-MB2020RU. Для Linux производитель предоставляет бинарный драйвер для CUPS. Чтобы не превращать систему в слакварь я оборачиваю файлы драйвера в пакет.

Для Debian это удобно сделать через checkinstall. Отличная утилита, которая контролирует этап установки и перехватывает обращения к файловой системе, отслеживая изменения в процессе установки. По окончании установки все изменения упаковываются в бинарный пакет.

Для начала установим checkinstall

$ sudo aptitude install checkinstall

Далее скачиваем дистрибутив драйвера с сайта производителя и запускаем установку через checkinstall

$ wget http://cs.psn-web.net/support/fax/common/file/Linux_PrnDriver/Driver_Install_files/mccgdi-2.0.6-i686.tar.gz
$ tar -xf mccgdi-2.0.6-i686.tar.gz
$ cd mccgdi-2.0.6-i686
$ sudo checkinstall --inspect ./install-driver

This package will be built according to these values: 

0 -  Maintainer: [ Andrey Tataranovich <tataranovich@gmail.com> ]
1 -  Summary: [ Driver for Panasonic GDI printers ]
2 -  Name:    [ printer-driver-mccgdi ]
3 -  Version: [ 2.0.6 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ mccgdi-2.0.6-i686 ]
9 -  Alternate source location: [  ]
10 - Requires: [ cups ]
11 - Provides: [ mccgdi-2.0.6 ]
12 - Conflicts: [  ]
13 - Replaces: [  ]

Enter a number to change any of them or press ENTER to continue: 

Installing with ./install-driver...

========================= Installation results ===========================

    start  install......
    start install files......
    restart spooler - CUPS
[ ok ] Restarting Common Unix Printing System: cupsd.

    install driver completed

    please use "system-config-printer" or "lpadmin" to add printer.

======================== Installation successful ==========================

You requested to review the list of files that will be
included in this package.

Now you'll have the chance to review and optionally modify it.

Press ENTER to continue.

Copying files to the temporary directory...OK

Stripping ELF binaries and libraries...OK

Compressing man pages...OK

Building file list...OK

Building Debian package...OK

Installing Debian package...OK

Erasing temporary files...OK

Writing backup package...OK
OK

Deleting temp dir...OK


**********************************************************************

 Done. The new package has been installed and saved to

 /home/andrey/mccgdi-2.0.6-i686/printer-driver-mccgdi_2.0.6-1_i386.deb

 You can remove it from your system anytime using: 

      dpkg -r printer-driver-mccgdi

**********************************************************************

В процессе установки вам будет предложено просмотреть и возможно отредактировать список файлов, которые будут включены в пакет. Я удалил все упоминания /var, которые добавились из-за перезапуска CUPS в процессе установки, и файл /usr/local/share/panasonic/printer/uninstall-driver, который в пакете не нужен.

В итоге получился пакет, который легко удалить или проапгрейдить в будущем.

$ aptitude show printer-driver-mccgdi
Package: printer-driver-mccgdi           
New: yes
State: installed
Automatically installed: no
Version: 2.0.6-1
Priority: extra
Section: checkinstall
Maintainer: Andrey Tataranovich 
Architecture: i386
Uncompressed Size: 4,530 k
Depends: cups
Provides: mccgdi-2.0.6
Description: Driver for Panasonic GDI printers
 Panasonic printer drivers

Nginx: запаролить доступ к директории с PHP скриптами

Очень удивился когда Nginx дал выполнить скрипт из запароленной директории. При этом на саму директорию пароль спрашивает.

Этот ответ прояснил ситуацию. Полное описание логики блока location.

четверг, 13 марта 2014 г.

Отключение файла hiberfil.sys в Windows 7

В Windows 7 из настроек Power Options убрали пункт "Enable hibernation" (в Windows XP он был на вкладке Hibernation в Power Options). Чтобы отключить файл hiberfil.sys нужно выполнить с правами Администратора команду

powercfg.exe -h off

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

powercfg.exe -h on

Разработчики Replicant выявили бэкдор в смартфонах и планшетах Samsung Galaxy

Не могу не перепостить

Разработчики Replicant выявили бэкдор в смартфонах и планшетах Samsung Galaxy

вторник, 11 марта 2014 г.

Nginx: client intended to send too large body

Если в логи nginx падает ошибка вида

2014/03/11 11:54:28 [error] 8699#0: *4615315 client intended to send too large body: 1569729 bytes, client: xx.xx.xx.xx, server: example.com, request: "POST /upload/index.php HTTP/1.1", host: "example.com", referrer: "http://example.com/upload/"

То причина в превышении лимита размера тела запроса в Nginx, за этот лимит отвечает параметр client_max_body_size (по-умолчанию лимит равен 1m).

Чтобы увеличить этот лимит хотя бы до 50m добавьте в конфигурацию nginx (в Debian это можно сделать через файл /etc/nginx/conf.d/local.conf)

# echo 'client_max_body_size 50m;' > /etc/nginx/conf.d/local.conf
# nginx -t
the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
# service nginx reload

P.S. Ответ нашелся тут.

понедельник, 10 марта 2014 г.

Полная очистка SSD диска

Перед началом использования SSD диска желательно выполнить его полное стирание. Если SSD диск уже использовался ранее, то полное стирание (secure erase) позволит контроллеру не производить предварительную подготовку ячеек NAND перед операцией записи. Если вы не в курсе почему так, то можно почитать это.

Сначала нужно убедиться, что SSD диск не заблокирован BIOS'ом.

# hdparm -I /dev/sda | grep frozen
 not frozen

Если в результате вывело "not frozen", то можно переходить далее. Иначе нужно искать способ, как разблокировать диск. Один из способов разблокировать диск - выполнить suspend to ram

# echo mem > /sys/power/state

Чтобы выполнить secure erase нужно выполнить следующие команды (ВНИМАНИЕ! Secure erase безвозвратно удалит все данные с выбранного диска!)

# hdparm --user-master u --security-set-pass PasSWorD /dev/sda
security_password="PasSWorD"

/dev/sda:
 Issuing SECURITY_SET_PASS command, password="PasSWorD", user=user, mode=high

# hdparm --user-master u --security-erase PasSWorD /dev/sda
security_password="PasSWorD"

/dev/sda:
 Issuing SECURITY_ERASE command, password="PasSWorD", user=user

Все, диск полностью очищен и его производительность будет максимальна.

среда, 5 марта 2014 г.

Отключить использование PDIFF в APT

Чтобы отключить использование PDIFF нужно добавить в файл /etc/apt/apt.conf строку Acquire::PDiffs "false";

$ cat <<_EOF_ | sudo tee -a /etc/apt/apt.conf
Acquire::PDiffs "false";
_EOF_

суббота, 1 марта 2014 г.

Подготовка образа дискеты с virtio драйвером для установки Windows Server 2003

Использование Windows Server 2003 на выделенном сервере сегодня имеет крайне мало смысла. Но старый солдат еще послужит, если перенести систему в виртуальную машину. В качестве системы виртуализации используется гипервизор KVM, что позволяет использовать virtio драйвера (storage, network, balloon) для оптимальной производительности.

Сначала создаю файл образа дискеты

$ truncate -s 1440k ./virtio-floppy_0.1-49.ima
$ sudo mkfs -t vfat -n VIRTIO ./virtio-floppy_0.1-49.ima
$ sudo mkdir /mnt/floppy
$ sudo mount -o loop,rw ./virtio-floppy_0.1-49.ima /mnt/floppy

Скачиваю образ с virtio драйверами. По этому совету я выбрал версию 0.1-49.

$ wget http://alt.fedoraproject.org/pub/alt/virtio-win/archives/virtio-win-0.1-49/virtio-win-0.1-49.iso

Создаю структуру установочного диска

$ sudo mkdir /mnt/iso
$ sudo mount -o ro,loop ./virtio-win-0.1-49.iso /mnt/iso
$ sudo mkdir -p /mnt/floppy/{i386,amd64}/Win2003
$ sudo touch /mnt/floppy/disk1
$ sudo cp /mnt/iso/WNET/X86/VIOSTOR.* /mnt/floppy/i386/
$ sudo cp /mnt/iso/WNET/AMD64/VIOSTOR.* /mnt/floppy/amd64/
$ cat<<_EOF_ | sudo tee /mnt/floppy/txtsetup.oem
[Disks]
d1 = "OEM DISK (SCSI) Win2003/32-bit",\disk1,\i386\Win2003
d2 = "OEM DISK (SCSI) Win2003/64-bit",\disk1,\amd64\Win2003

[Defaults]
SCSI = WNET32

[scsi]
WNET32 = "Red Hat VirtIO SCSI Disk Device Win2003/32-bit"
WNET64 = "Red Hat VirtIO SCSI Disk Device Win2003/64-bit"

[Files.scsi.WNET32]
driver = d1, viostor.sys, viostor
inf    = d1, viostor.inf
catalog= d1, viostor.cat

[Files.scsi.WNET64]
driver = d2, viostor.sys, viostor
inf    = d2, viostor.inf
catalog= d2, viostor.cat

[HardwareIds.scsi.WNET32]
id = "PCI\VEN_1AF4&DEV_1001&SUBSYS_00000000", "viostor"
id = "PCI\VEN_1AF4&DEV_1001&SUBSYS_00020000", "viostor"
id = "PCI\VEN_1AF4&DEV_1001&SUBSYS_00021AF4", "viostor"

[HardwareIds.scsi.WNET64]
id = "PCI\VEN_1AF4&DEV_1001&SUBSYS_00000000", "viostor"
id = "PCI\VEN_1AF4&DEV_1001&SUBSYS_00020000", "viostor"
id = "PCI\VEN_1AF4&DEV_1001&SUBSYS_00021AF4", "viostor"

[Config.WNET32]
value = Parameters\PnpInterface,5,REG_DWORD,1

[Config.WNET64]
value = Parameters\PnpInterface,5,REG_DWORD,1
_EOF_

Осталось подчистить хвосты

$ sudo umount /mnt/{iso,floppy}
$ sudo rmdir /mnt/{iso,floppy}

В результате в файле ./virtio-floppy_0.1-49.ima находится образ дискеты для установки Windows Server 2003 на диск, доступный через virtio контроллер.

Модификация Seabios для гипервизора KVM

Для модификации BIOS потребуется установить пару зависимостей

$ sudo aptitude install build-essential iasl

Внедрение секции ACPI_SLIC (используется SLIC той машины, где выполняется модификация) в BIOS для гипервизора KVM

$ git clone https://github.com/ghuntley/seaslic.git seaslic
$ cd seaslic
$ git clone git://git.seabios.org/seabios.git seabios.submodule
$ cd seabios.submodule
$ git checkout rel-1.7.3.2
$ cd ..
$ ./patch.sh

После завершения компиляции нужно установить модифицированную версию Seabios в систему (я не заменяю дистрибутивный BIOS, вместо этого устанавливается отдельная версия)

$ sudo mkdir /opt/seaslic
$ sudo cp seabios.submodule/out/bios.bin /opt/seaslic

Далее нужно отредактировать конфигурацию виртуальной машины

$ export LIBVIRT_DEFAULT_URI=qemu:///system
$ virsh edit vmname

В открывшемся редакторе нужно привести XML файл виртуальной машины к подобному виду

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
...
  <qemu:commandline>
    <qemu:arg value='-bios'/>
    <qemu:arg value='/opt/seaslic/bios.bin'/>
  </qemu:commandline>
</domain>

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