Поиск по блогу

6 дек. 2016 г.

Proxmox kvm - изменение размера lvm диска

Увеличение
1) увеличить размер диска виртуальной машины:
- в web-интерфейсе выбрать VM, в разделе "Ресурсы" выбрать диск, нажать кнопку "Resize disk" и указать число XX Гб для увеличения (уменьшить размер lvm через web-интерфейс нельзя).
- в консоли:
qm resize 104 sata0 +1G
перезагрузить ВМ, чтобы "перечитать" диск нового размера (возможно как-либо можно пересканировать диск, чтобы он увидел новый размер и не упала ФС).

2) увеличить размер раздела (онлайн):
parted /dev/sda
(parted) print
Model: ATA QEMU HARDDISK (scsi)
Disk /dev/sda: 3221MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  2147MB  2146MB  primary  ext4         boot

(parted) resizepart 1
100%
(parted) quit

3) увеличить размер ФС:
resize2fs /dev/sda1

Увеличить оффлайн - по примеру уменьшения размера.

Уменьшение
1) выключить виртуальную машину

2) уменьшить размер ФС до минимального размера:
kpartx -a /dev/vg/vm-VMID-disk-1
e2fsck -f /dev/mapper/vg-vm--VMID--disk--1p1
resize2fs -M /dev/mapper/vg-vm--VMID--disk--1p1

просмотр параметров ФС
dumpe2fs -h /dev/mapper/vg-vm--VMID--disk--1p1

3) уменьшить размер диска виртуальной машины:
lvreduce -L 2G /dev/mapper/vg-vm--VMID--disk--1

4) уменьшить размер раздела:
parted /dev/mapper/vg-vm--VMID--disk--1
(parted) resizepart 1
100%
(parted) quit

5) увеличить размер ФС до максимального размера:
e2fsck -f /dev/mapper/vg-vm--VMID--disk--1p1
resize2fs /dev/mapper/vg-vm--VMID--disk--1p1
kpartx -d /dev/vg/vm-VMID-disk-1

30 нояб. 2016 г.

Proxmox lxc изменить размер lvm диска

Бывает необходимо изменить размер диска у lxc контейнера.
Увеличение:
В web-интерфейсе выбрать VM, в разделе "Ресурсы" выбрать диск, нажать кнопку "Resize disk" и указать число XX Гб для увеличения (уменьшить размер lvm через web-интерфейс нельзя).
Можно и в консоли:
lvextend -r -L +1G /dev/mapper/vg0-vm--101--disk--1
и изменить размер диска в файле конфигурации контейнера.

Если необходимо уменьшить размер lvm:
e2fsck -f /dev/mapper/vg0-vm--101--disk--1
resize2fs /dev/mapper/vg0-vm--101--disk--1 2G
lvreduce -L 2G /dev/mapper/vg0-vm--101--disk--1
resize2fs /dev/mapper/vg0-vm--101--disk--1

При это можно его немного "сломать", тогда в ход идут всякие
tune2fs -f -E clear_mmp /dev/vg0/vm-101-disk-1
и т.п. :)


29 нояб. 2016 г.

Проброс USB устройства в Proxmox KVM

У нас есть сервис, перенесенный в proxmox.
Но там специфический софт и он работает только при подключении своего usb-брелка.
На хосте proxmox смотрим вывод lsusb:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 04b9:0312 SafeNet USB SuperPro/UltraPro
Ищем наше устройство в списке, записываем VID/DID.
Добавляем в файл конфигурации VM (/etc/pve/qemu-server) параметры проброса usb:
usb0: host=04b9:0312
Выключаем машину, включаем, проверяем (перезагрузка VM не прокатывает).





Конвертируем VirtualBox vdi в KVM qcow2

Продолжение истории с переносом сервисов в виртуальные среды.
В этот раз мы переносим VM из VirtualBox в Proxmox.
Выключаем виртуальную машину.
Конвертируем vdi диск в raw. (raw, в отличие от vdi,  хранится в несжатом виде).
VBoxManage clonehd --format RAW vm.vdi vm.img
Переносим файл vm.img на хост с proxmox. Конвертируем еще раз:
qemu-img convert -f raw vm.img -O qcow2 vm.qcow2
Переименовываем и подсовываем в созданный kvm.

28 нояб. 2016 г.

Proxmox VLAN on the host machine

Если адрес самой хост машины должен висеть на vlan.
Пакет vlan установить нельзя, т.к. он конфликтит с promox'ом.
Редактируем /etc/network/interfaces (vlan555 — имя и tag vlan, eth0 — имя внешнего интерфейса.):
auto eth0
iface eth0 inet manual
    pre-up ifconfig $IFACE up

auto vlan555
iface vlan555 inet manual
    vlan-raw-device eth0

Создаем бридж:
auto vmbr555
iface vmbr555 inet static
    address 192.168.0.5
    netmask 255.255.255.0
    gateway 192.168.0.1
    bridge_ports vlan555
    bridge_stp off
    bridge_fd 0

Бридж vmbr555 появится в Web-интерфейсе и его можно выбрать при настройке сети у виртуальных машин.

18 нояб. 2016 г.

Asus B150M-A linux lm-sensors

Некоторые материнские платы ASUS изначально в linux не всегда показывают показания датчиков, хотя в биосе эти показания присутствуют.
Необходимо узнать какой чип IO стоит на данной плате. Искать нужно на плате или в выводе
dmidecode -t 34
В данном случае это Nuvoton NCT6793D.
За это отвечает модуль nct6775, но в jessie (ядро 3.16) он немного старый и покрывает чипы только до 6791D.
Ищем обновленный модуль. например тут.
Скачиваем, собираем, устанавливаем, подгружаем и видим заветные показания
nct6793-isa-0290
Adapter: ISA adapter
fan2:                     1500 RPM
SYSTIN:                    +32.0°C
CPUTIN:                    +36.0°C
***
Обрабатываем их как-либо и добавляем в систему мониторинга.

8 нояб. 2016 г.

mount: unknown filesystem type 'linux_raid_member'

При попытке монтирования диска/раздела, снятого из md-рейда получаем ошибку
mount: unknown filesystem type 'linux_raid_member'
или
mount: wrong fs type, bad option, bad superblock on /dev/sdb1, missing codepage or helper program, or other error
В таких случаях необходимо сначала "собрать" массив из этого диска/раздела
mdadm --assemble --run /dev/md_X /dev/sdb1
и только потом монтировать его
mount /dev/md_X /path_to_mount

27 окт. 2016 г.

Aptitude метки пакетов для удаления


Допустим нужно установить какие-либо пакеты, чтобы потом их же массово удалить.
В aptitude есть поддержка пользовательских меток.
Помечает пакеты при установке:
aptitude install --add-user-tag UserTag package
Удаляем по поисковому шаблону с меткой:
aptitude purge '?user-tag(UserTag)'

26 окт. 2016 г.

mysql сброс пароля root

Останавливаем сервис mysql.
Запускаем без проверки прав доступа:
/usr/sbin/mysqld --skip-grant-tables & 
Соединяемся как root без пароля:
mysql
Меняем пароль:
mysql> use mysql;
mysql> update user set Password=PASSWORD('новый пароль') WHERE User='root';
mysql> flush privileges;
Завершаем работу mysqld:
fg
  "Ctrl+c"
Запускаем сервис mysql в обычном режиме.


20 сент. 2016 г.

Debian - перенос установленных пакетов

Бывает так, что необходимо "перенести" установленные пакеты на другую систему (сделать копию, переехать на другой сервер или у вас просто нет chef/ansible).

Выбираем установленные пакеты в исходной системе:
sudo dpkg --get-selections "*" > /path/to/file/packages.txt
Переносим файл на новую систему. Скармливаем список пакетному менеджеру и запускаем установку:
sudo dpkg --set-selections < /path/to/file/packages.txt
sudo apt-get -u dselect-upgrade



8 июл. 2016 г.

Регламент (инструкция) по обслуживанию сервера

Понадобился нам, внезапно, регламент (инструкция) по обслуживанию серверов. Исходим из того, что техническое обслуживание (далее — TO)  - комплекс технических и организационных мероприятий, осуществляемых в процессе эксплуатации технических объектов с целью обеспечения требуемой эффективности выполнения ими заданных функций.
На ходу вышло накидать примерно такую инструкцию по аппаратному обслуживанию и прочистке. Обслуживание ПО здесь рассматривать не будем.

Периодичность: раз в полгода-год

План работ при проведении тех. обслуживания сервера:
  • вывести сервер из схемы работы, выключить, изъять сервер из стойки
  • открыть крышки, удалить пыль (пропылесосить, продуть, протереть)
  • проверить крепления жестких дисков, соединения и кабели
  • проверить/смазать/заменить все кулеры (в т.ч. процессорный)
  • подключить питание, проверить оперативную память и жесткие диски на ошибки; проверить сетевую карту
  • при отсутствии ошибок собрать и закрыть корпус
  • установить сервер в стойку
  • подключить питание и сеть, ввести сервер в схему работы

Что при проведении работ должно быть в наличии (на складе):
  • аналогичный блок питания (или совместимый)
  • половина количества аналогичных жестких дисков, установленных в сервере
  • совместимый процессорный кулер; в случае шасси — 1-2 канальных
  • аналогичная (или совместимая) оперативная память
  • совместимая МП
  • сетевая карта low profile


4 мая 2016 г.

USB звуковая карта в linux

Досталась на пару недель usb-звуковуха.
Подключаем, смотрим в dmesg:
usb 3-1.3: new full-speed USB device number 56 using ehci-pci
usb 3-1.3: New USB device found, idVendor=08bb, idProduct=2704
usb 3-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 3-1.3: Product: USB Audio DAC  
usb 3-1.3: Manufacturer: Burr-Brown from TI             
input: Burr-Brown from TI   USB Audio DAC    as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1.3/3-1.3:1.2/0003:08BB:2704.002C/input/input55
hid-generic 0003:08BB:2704.002C: input,hidraw3: USB HID v1.00 Device [Burr-Brown from TI   USB Audio DAC   ] on usb-0000:00:1a.0-1.3/input2
Она сразу готова к работе. В некоторых приложениях можно ее указать напрямую, но браузер выводит звук через pulseaudio (по крайней мере у меня).
Смотрим доку. Смотрим sink установленный по умолчанию
pactl stat
Смотрим список доступных sink'ов:
pactl list
pacmd list-sinks
Смотрим индекс нашей карты и устанавливаем ее устройством по умолчанию:
pacmd set-default-sink '12'
Это работает для вновь запускаемых приложений. Для уже запущенных можно в pavucontrol для приложения указать "Audio Codec Аналоговый ..".

Для Mate установим mate-media-pulse mate-settings-daemon-pulse, добавим на панель "пользовательскую кнопку запуска" с командой mate-volume-control-applet.
При ее запуске в области уведомлений появится регулятор громкости (mate-volume-control).
Наслаждаемся классным звуком.

29 апр. 2016 г.

Zabbix snmp builder (2.4.7)

Дано: устройство и MIB файл. Еще у нас есть zabbix и нам надо добавить это устройство в мониторинг. Можно взять готовый шаблон (если он есть), смотреть вывод snmpwalk или MIB-браузером и создавать итемы. Но добрые люди запилили snmp builder для zabbix.
Скачиваем zabbix-snmpbuilder, патчим zabbix, распаковываем картинки, удаляем лишнее.
Правим переменную пути для записи импортированных MIB (дать доступ вебсерверу):
$mibs_dir = '/usr/share/snmp/mibs';
Подключаемые MIB регулируем константой MIBS_ALL_PATH:
define('MIBS_ALL_PATH', "/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp");
Скачать нужные нам MIB; посмотреть каталоги для MIB по умолчанию:
aptitude install snmp snmp-mibs-downloader
download-mibs
net-snmp-config --default-mibdirs
Создаем шаблон, открываем SNMP Builder, выбираем шаблон, указывает snmp параметры (IP узла, версию SNMP, Community), выбираем MIB. Слева появится дерево доступных OID. Выбираем нужные OID , указываем параметры элементов данных и добавляем в шаблон.
Проверяем шаблон, добавляем группы и т.п. Юзаем.

26 апр. 2016 г.

Интернет в debian через proxy

Понадобилось одному серверу на Debian ползать в инет за обновлениями и т.п., а белых адресов и ната нет - прогоняем его через прокси.
  • Apt/aptitude. В файл /etc/apt/apt.conf.d/httpProxy добавим
Acquire::http::proxy "http://login:password@ip:port";
Acquire::https::proxy "http://login:password@ip:port";
Acquire::ftp::proxy "http://login:password@ip:port";
Acquire::socks::proxy "http://login:password@ip:port";
Acquire::::Proxy "true";
  • wget. В /etc/wgetrc добавим
http_proxy = http://login:password@ip:port
https_proxy = http://login:password@ip:port
ftp_proxy = http://login:password@ip:port
use_proxy = on
  • Остальные. В /etc/environment добавим (или в ~/.bashrc или выполним команды вручную)
export http_proxy="http://login:password@ip:port";
export https_proxy="http://login:password@ip:port";
export ftp_proxy="http://login:password@ip:port";

25 апр. 2016 г.

Про техподдержку

В этой серии я выскажу свое мнение о работе первой линии техподдержки. Техподдержки именно в технических компаниях, где есть и другие линии поддержки. В разных компания она работает по разному, думаю это не секрет.
Это происходит из-за особенностей работы мозга человека. При возникновении "технической неисправности" у клиента, сотрудник 1-й линии, а точнее его мозг ищет самый наименее затратный способ ее решить (экономия энергии любой ценой, долго думать энергетически не выгодно), не включая "осознание" данной неисправности. Он (мозг) просто помнит, что в поле зрения есть 2-я линия и решает идти к ним ногами и сообщить о неисправности. В этот момент он не включает "осознание" того, что, возможно, по данной неисправности есть готовые кейсы, что 2-я линия в данный момент занимается не менее важными задачами и что труд 2-й линии обычно стоит для компании дороже. Он просто дает команду идти. При этом дополнительно включается в работу "быстрая память" если такая беготня уже была и была успешной с точки зрения "передачи/решения неисправности".
А далее, при работе 2-й линии включаются уже следующие особенности работы мозга, защитные механизмы - острая потребность перекусить, смена внимания на второстепенные задачи и т.п., и сотрудник 2-й линии вылетает из "состояния потока" решения своей задачи.
В общем необходимо вернуть "проблему" назад на "медленное осмысление", чтобы мозг начал обрабатывать факты.
Предполагаемые способы решения проблемы:
  • Инструкции в виде блок-схем по распространенным неисправностям, что, куда, зачем и почему; под роспись.
  • Первая и 2-я линия техподдержки должны находиться в разных помещениях. Если это одно помещение - как минимум разграничение пространства, чтобы 1-я линия не могла при каждом обращении клиента бегать до 2-й линии (двери, перегородки).
  • БитьСанкции за обращения ко 2-й линии если при этом нет подробностей неисправности (в стиле у абонента что-то сломалось или "телефон не работает") и намека на "тикет" (т.е. обработка не по блок-схеме).
  • Абоненты не должны знать прямые номера 2-й линии и не могли просто так позвонить им напрямую (тут зависит от размера компании и количества клиентов). VIP-клиентов все равно фильтровать через ТП с пропуском выше.
Ну и хорошо проветриваемые помещения (угасание активности мозга при малом количестве кислорода), даже можно поставить датчики углекислого газа.

Посчитать размер файлов найденных find и др.

Необходимо примерно оценить количество и размер записей mixmonitor где не было ANSWER.
Количество файлов получаем так:
find . -size -5k  -type f | wc -l
А их суммарный размер как-то так:
find . -size -5k  -type f -exec du -b {} + | awk '{sum = sum+$1 }; END { print sum/1000000 "Мб" }'
Еще некоторые рецепты find из старых записей:
  • поиск файлов и изменение прав на них
find . -name "*.tar.bz2" -exec chmod 600 {} \;
  • переместить файлы после поиска
find . -mame "template" -type f -exec mv -t /path/to/folder/ {} \+
  • копировать найденные файлы
find . -name "*.log" -exec cp {} /path/to/folder/  \;

22 апр. 2016 г.

Обновление BGBilling с 5.1 до 6.2


  • Делаем бекап базы и файлов.
  • Добавляем новую конфигурацию сервера и модулей на основе старых: статусы договоров по модулям, дебетовые абонплаты.
  • Останавливаем сервер биллинга, планировщик, dataloader. Перемещаем старые файлы в сторонку.
  • Конвертируем движок в InnoDB, всех кроме  %log% (только за текущий месяц).
  • Конвертируем базу в UTF-8.
  • Загружаем jdk 1.8, новую версию activemq, BGBillingServer 6.2, правим data.properties, копируем новую лицензию и хранилище.
  • Тарифы: если у вас были тарифы с "элементами каталога" меняем в базе type=cat на catalog, к data добавляем folder&.
  • Обновляем ядро bg_installer.sh update_6.2.zip!.
  • Обновляем модули bg_installer.sh update.
  • Запускаем TaskConverter.
  • Запускаем сервер биллинга.
  • Загружаем клиент 6.2, добавляем -Dlocal.setting.file.name=config_v6 (и желательно -Dshared.client.distribution=1), запускаем,  ставим галочку "загружать обновления с этого сервера", подключаемся.
  • Проверяем договора, права пользователей, справочники, тарифы, параметры тарификации.
  • Загружаем BGRadiusVoip 6.2, распаковываем, правим настройки, обновляем через штатную update.sh, запускаем.
  • Делаем тестовые звонки, смотрим ошибки.
  • Радуемся.

20 апр. 2016 г.

Быстрая настройка voip-шлюзов по dhcp

Если вы предоставляете услуги телефонной связи или у вас много голосовых шлюзов вам в какой-то момент времени, возможно, надоест настраивать каждый шлюз руками. Эта заметка про быстрый начальный этап настройки.
При включении нового голосового шлюза или после сброса на WAN порту включен режим DHCP. Посмотрим wireshark что присылает голосовой шлюз (spa2102) dhcp-серверу:
Option 12 - Host Name: SipuraSPA
Option 60 - Vendor class identifier: LINKSYS SPA-2102
Option 61 - Client MAC address: CiscoLin_XX:XX:XX (00:0e:08:XX:XX:XX)
Cisco и Linksys сразу присылают нормальный Vendor class identifier.
Dlink делает это только после указания Hostname и Vendor Class ID на шлюзе.
Eltex TAU-2M.IP отличился больше всех, прислав [VENDOR:Eltex][DEVICE:TAU-2M.IP][HW:1.0][SN:VI39000XXX][WAN:A8:F9:4B:XX:XX:XX][LAN:02:20:80:XX:XX:XX][VERSION:1.13.0.119], но нормальный host-name "TAU-2M.IP".

Поднимем простенький dhcp-сервер (если у вас есть мега dhcp-сервер на всю сеть или с dhcp-relay'ми в сегментах, то все круто). Установим isc-dhcp-server и настроим INTERFACES="ethX" в файле /etc/default/isc-dhcp-server (или dpkg-reconfigure isc-dhcp-server).
Произведем базовую настройку, /etc/dhcp/dhcpd.conf:
class "spa2102" {
    match if (option vendor-class-identifier = "LINKSYS SPA-2102") or (substring(hardware, 1,3) = 00:0e:08);
}
subnet 192.168.0.0 netmask 255.255.255.0 {
    option domain-name "192.168.0.XXX";
    default-lease-time 1800;
    max-lease-time 1800;
    pool {
        allow members of "spa2102";
        range 192.168.0.XXX 192.168.0.XXX;
        option tftp-server-name "192.168.0.XXX";
    }
Пулы для других шлюзов/вендоров настроим по аналогии.

Установим стандартный tftpd-hpa сервер и настроим его, /etc/default/tftpd-hpa:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --verbose --verbosity 7"
В /srv/tftp/ закинем файл конфигурации spa2102.cfg, этого хватит чтобы быстренько настроить голосовой шлюз.
В следующих сериях можно написать небольшую систему управления конфигурациями с использованием provisioning.
А вообще, пользуйтесь ACS с TR-69.

31 мар. 2016 г.

Дополнение к миграции в virtualbox

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

Kpartx
Это программа, позволяющая создавать системные файлы устройств для разделов диска (или любого блочного устройства), только на момент начала экспериментов я ее не нашел..
После создания образа, его монтирования и создания раздела нам надо создать на нем файловую систему.
#fdisk -l /dev/loop0
Disk /dev/loop0: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6062588a

Device       Boot Start      End  Sectors Size Id Type
/dev/loop0p1 *     2048 20971519 20969472  10G 83 Linux
Смотрим вывод fdisk. Нас интересует сектор начала раздела и размер сектора: 2048*512=1048576. Монтируем раздел вручную со смещением.
#losetup --show -f -o 1048576 partition.img
/dev/loop1
Теперь создадим на не файловую систему. Рассчитываем количество блоков ФС по формуле ((end - start) * units) / blocksize с округлением до следующего целого: ((20971519-2048)*512)/4096=2621184
#mkfs.ext3 -b 4096 /dev/loop1 2621184
Далее все как в первой статье.

Mdadm
Если исходная система жила на программном рейде mdadm или с pae  (bigmem-ядром при 32-битной ОС), то дополнительно необходимо будет исправить порядок загрузки в grub и обновить initrd.
#grub-install --recheck --no-floppy /dev/sda
#nano /etc/default/grub
#update-initramfs -u -k all
#update-grub

Usb-ключ
Тесты проводились в GUI режиме, где в меню device - usb device устройство было "добавлено" к ВМ. Если же понадобится запустить ВМ из консоли, то надо узнать UUID данного usb-устройства и добавить его к ВМ и/или добавить фильтр usb.
#VBoxManage list usbhost
#VBoxManage startvm VM (--type headless)
#VBoxManage controlvm VM usbattach UUID
#VBoxManage list usbfilters
#VBoxManage usbfilter add 1 --target VM --name FilterName --vendorid VendorId --productid ProductId
#VBoxManage controlvm VM poweroff

Grub
Вообще, по идее, загрузчик grub можно установить в образ и из хост-системы. Это будет выглядеть как-то так:
#fdisk -l --units=cylinders /dev/loop0

Disk /dev/loop0: 10 GiB, 10737418240 bytes, 20971520 sectors
Geometry: 107 heads, 17 sectors/track, 1305 cylinders
Units: cylinders of 1819 * 512 = 931328 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x6062588a

Device       Boot Start   End Cylinders Size Id Type
/dev/loop0p1 *        2 11530     11529  10G 83 Linux

#grub --device-map=/dev/null
grub> device (hd0) partition.img
grub> geometry (hd0) 1305 107 17
grub> root (hd0,0)
grub> setup (hd0)
You'll get a lot of output, then:
Done.
grub> quit
Возможно как-то еще можно из хост-системы в образе сделать и update-grub, но у меня пока это не получилось.

Миграция debian в virtualbox

Возникла потребность куда-либо мигрировать один из сервисов, но сервис этот работает на debian lenny, mono, mysql и привязан к usb-ключу.
Поэтому проверим как он будет работать в virtualbox и будет ли. И заодно подготовим возможность развернуть его в будущем на гипервизорах.
Делаем копию файлов оригинальной системы, базы данных бэкапим отдельно. Если базы остановлены то можно, конечно, и так, но в данном случае мы их пропустим, а потом зальем нужные нам отдельно т.к. их много и они разные.
rsync -aAXv /* /tmp/folder --exclude={/var/lib/mysql/*,/dev/*,/home/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found,/opt/*,/root/*,/usr/local/*}
Запаковываем в архив и переносим куда нужно.
Создаем пустой образ диска, монтируем его как блочное устройство в хост-систему
#truncate -s 1024M partition.img
#losetup --show -f partition.img
~/dev/loop0
Создаем раздел на весь диск (swap у нас в файле), сделаем разделы доступными в виде отдельных устройств, и создадим файловую систему на данном разделе
#cfdisk /dev/loop0
#kpartx -av /dev/loop0
add map loop0p1 (254:2): 0 20969472 linear /dev/loop0 2048
#mkfs.ext3 /dev/mapper/loop0p1
Монтируем данный раздел с файловой системой в хост-систему, распаковываем на него файлы, размонтируем разделы/образы.
Конвертируем наш образ в формат VMDK (VDI,VHD)
#VBoxManage convertdd partition.img partition.vmdk --format=VMDK --variant=Fixed
Подключаем образ к виртуальной машине, грузимся с какого-либо rescuecd, делаем chroot, правим /etc/fstab, устанавливаем загрузчик grub и обновляем его конфиг, заливаем базы данных.
#grub-install --recheck --no-floppy /dev/sda
#update-grub
А вообще, можно сразу создать пустую виртуалку, загрузиться с rescuecd и залить бэкап уже туда с обновлением загрузчика (но изначально была надежда сделать update-grub из хост системы и запустить копию с одного раза).
Пробрасываем usb устройство в вирт. машину и пробуем загрузится с нашего "образа". Работает!
Далее не спеша наводим внутренний лоск.

29 мар. 2016 г.

intro

У меня накопилось немало разных how-to по работе. Какие-то из них живут на бумаге, какие-то в текстовиках (и даже на сдохших винтах), некоторые в zim/wiki или в голове, и много тех, которые я уже и забыл.. Поэтому я пока попробую вести их тут, а там посмотрим.
Оформление настрою постепенно, пока сделал по минимуму. Велкам.