Задача следующая:
  • У вас есть образ раздела (скажем, sda1), но не всего диска (sda). Т.е. без таблицы разделов. Образ сделан с помощью старого доброго dd.
  • Нужно из него создать диск для VirtualBox'а (или другой виртуальной машины, например, VMware).
Решение:
  1. Создаем пока пустой файл myvm.img для будущего образа диска (всего диска, в т.ч. с разделами). Размер файла выбираем исходя из размера образа, но с запасом, чтобы поместилась еще и таблица разделов. Скажем есть образ в 99 Гб, возьмем сильно с запасом и создадим файл под образ диска в 100 Гб:
    dd if=/dev/zero of=myvm.img bs=1G count=0 seek=100
  2. Разметим файл утилитой fdisk (нужно создать раздел и не забыть сохранить изменения командой 'w'):
    fdisk myvm.img
  3. Теперь сделаем полученный образ с разделами доступным в виде устройств в /dev:
    sudo kpartx -a myvm.img
  4. Копируем образ нашего раздела поверх раздела во вновь созданном файле:
    sudo cp sda1.raw /dev/mapper/loop0p1
  5. Можно, чтобы не пропадало место (тот самый "запас"), расширить файловую систему на разделе (учтите, что утилита resize2fs работает только с системами семейства ext{2-4}!):
    sudo resize2fs /dev/mapper/loop0p1
  6. Теперь можно убрать наш файл myvm.img из /dev:
    sudo kpartx -d myvm.img
  7. Получился "сырой" образ диска с таблицей разделов и собственно нашим разделом. Осталось сконвертировать его в формат нужной виртуальной машины. Для VirtualBox:
    VBoxManage convertdd myvm.img myvm.vdi --format VDI
    Для VMware:
    VBoxManage convertdd myvm.img myvm.vmdk --format VMDK
  8. Готово.
 Если на разделе установлена система и необходимо ее загрузить, то можно для начала загрузиться с какого-нибудь Live-образа, подмонтировать раздел и стандартным для этой системы способом восстановить загрузчик.

Ссылки:
  1. Алгоритм создания образа диска из образа раздела в обсуждении на stackexchange.com;
  2. Статья о конвертации 'сырых' образов дисков в формат образов для виртуальных машин (и обратно);
  3. Про восстановление загрузчика grub в треде на askubuntu.com.

Итак, есть планшет Acer Iconia Tab W511 (или другой, столь же кривой, т.е. на x86, но без поддержки Linux). Требуется запустить на нем Linux-программу с графическим интерфейсом (не портированную под win32, в т.ч. под cygwin). Пусть хоть в режиме тонкого клиента.

Решение — XServer под виндой (я выбрал Cygwin/X) и ssh-сервер на Linux-машине.

Алгоритм следующий:
  1. На Linux-машине должен быть поднят ssh-сервер;
  2. На планшете накатываем cygwin вместе с XServer-ом и ssh-клиентом отсюда (см. раздел "Downloading and Installing"). При установке не забываем (иначе придется переставлять cygwin заново) поставить пакеты xorg-server, xinit и openssh (зачем — см. здесь, пункт 15). Есть смысл сразу же накатить еще subversion и wget, чтобы иметь возможность в любой момент доставлять пакеты с помощью apt-cyg;
  3. Запускаем Cygwin Terminal (ярлык на рабочем столе);
  4. В Cygwin Terminal запускаем команду "startxwin.exe". Открывается классический xterm;
  5. В xterm запускаем ssh-клиент примерно так: "ssh -Y user@host", user и host меняем на пользователя и IP Linux-машины;
  6. После логина в ssh получаем командную строку Linux-машины, где можем запускать графические программы с выводом сюда же, на экран планшета (даже мультитач в GIMP'е работает). См. gedit на скриншоте ниже.
UPD: Если канал слаб, то можно попробовать связку NX Client и FreeNX сервер. Само собой, это потребует дополнительных телодвижений (например, установки сервера на Linux-машину, которого, к тому же, может не быть в репозитории).

Библиотека pixman, как известно, документацией пользователей не балует ("There is currently no documentation besides the source code itself").

Поэтому выкладываю пару откомментированных на русском примеров. Примеры из официальной поставки, конкретно версии pixman-0.30. В комментариях могут быть ошибки, неточности и т.п. Тем не менее, вот они:
  • trap-test — вырезает из зеленого изображения трапецию по маске с альфа-каналом;
  • checkerboard — рисует подобие разноцветной шахматной доски и затем трансформирует его (псевдо-3D перспектива).

Код основан на примере "Rotated button" из gtk-demo. Собирается под Gtk-2. Местами код неидеален (например виджет RotatedBin.scale создается вручную в main), но, думаю, вполне может быть полезен.

Скрин:
[Image]

Код:
https://docs.google.com/file/d/0B40UHa6ea9QkdUFTVnRqNnFaTDg/edit


 

Copyright © 2007 DamnSmallBlog. Content is licensed under Creative Commons Attribution-Noncommercial.

Design: GeckoandFly and Blogcrowds.