вторник, 31 марта 2015 г.

Установка Windows 7 x86/amd64 и Ubuntu 14.04.2 x86/amd64 на один диск

Скачиваем iso-образ ныне неподдерживаемой ОС Window 7 (окончание основного периода поддержки 13 января 2015 года http://windows.microsoft.com/ru-ru/windows/lifecycle). В одном образе содержатся установочные файлы как для x86-, так и для amd64-архитектур.

Будем создавать установочную флешку. Если мы под Windows XP SP2/3/Vista/7/8, нам подойдет утилита от Microsoft Windows USB/DVD Download Tool http://www.microsoft.com/ru-ru/download/windows-usb-dvd-download-tool. Нам понадобится флешка размером от 5GB. Вставляем флешку, запускаем утилиту. После окончания процесса распаковки установочных файлов мы имеем установочную флешку с Windows 7.

Выставляем в BIOS правильный приоритет загрузки, грузимся с флешки. При установке выбираем x86-версии или amd64 в соответствии с установленным у вас процессором. Создаем NTFS-раздел размером 50GB (лучше 100GB), установщик создает для загрузочный диск. После установки у нас имеется два primary logical partion в начале нашего жесткого диска.

Скачиваем iso-образ Uduntu 14.04.2 http://releases.ubuntu.com/14.04 (берем версию образа в зависимости от актуальной для вас архитектуры). Если мы под Windows (например, уже установленной Windows 7), скачиваем последнюю версию Universal USB Installer http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3 . Запускаем его, при выборе версии Linux надо перейти в конец списка и выбрать Custom Linux ISO (или что-то в этом духе). Выбираем скачанный образ. Вставляем флешку (размер от 1GB), указываем программе. После окончания копирования установочных файлов мы имеем установочную флешку с Ubuntu 14.04.2,

Выставляем в BIOS правильный приоритет загрузки. Устанавливаем Ubuntu.

На этом этапе при установке 14.04.1 amd64 на 300GB SATA-диск Maxtor у меня возникла проблема. Мастер разбивки диска падает, когда мы переключаемся на его страницу, с ошибкой "ubi-partman failed with exit code 141". После продолжительных поисков по форумам выяснилось, что ошибка связана с RAID-утилитой dmraid, которая создала mapped-партицию поверх нашего диска. Выходим из процесса установки Ubuntu с LiveUSB, открываем консоль live-системы, загруженной с флешки, и выполняем в консоли. Пытаемся удалить mapped-раздел (у меня диск - это устройство /dev/sda) (sudo dmraid -E -r /dev/sda), но это не помогает. Удаляем пакет dmraid с запущенной live-системы (sudo apt-get purge dmraid), затем начинаем установку заново. Теперь таблица разделов корректно отображается.

При выборе раздела для установки, выбираем custom (или manual). Создаем диск ext4-раздел размером 50GB (лучше 100GB). За ним создаем extended partition, всё оставшееся свободное место определяем под этот раздел. Внутри него создаем linux-swap-раздел (размер в соответствии с объемом установленной у вас оперативной памяти). Из всего оставшегося места формируем NTFS-раздел - это логический диск с данными, который будет доступен из обеих операционных систем. Если все это не получается сделать в установщике, можно выйти из установки, оставшись в liveusb-версии Ubuntu. В нем есть gprated - замечательная программа для разбивки диска. Запускаем её (sudo gparted) и проделываем все это в ней. Затем запускаем установку и выбираем в качестве точки монтирования корневой файловой системы диск ext4.

Если у нас после всех манипуляций загружается только Windows, исправляем MBR.

Загружаемся с установочной флешки Ubuntu с live-системой. Запускаем терминал:

gnome-terminal

Далее необходимо узнать Вашу таблицу разделов. Используйте команду:

sudo fdisk -l

На экран должна быть выведена примерно такая таблица:

/dev/sda1 29 8369 66999082+ 83 Linux 
/dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS 
/dev/sda3 13996 14593 4803435 5 Extended

Из таблицы видим, что Linux стоит (в нашем случае) на разделе /dev/sda1

Теперь подключим этот раздел в /mnt следующей командой:

sudo mount /dev/sda1 /mnt

Затем, для записи grub в MBR, вводите следующую команду:

sudo grub-install --root-directory=/mnt /dev/sda

По умолчанию в случае использования загрузчика grub будет загружаться ОС Ubuntu. Для того, чтобы загружалась ОС Windows, надо отредактировать в файле /etc/default/grub переменную GRUB_DEFAULT (=0). Это последовательный номер ОС в отображаемом меню grub. В нашем случае мы имеем следующие пункты при загрузке:

0, 1 - ubuntu, ubuntu recovery;
2, 3 - memtest;
4 - windows.

Откроем файл текстовым редактором с правами суперпользователя и поставим GRUB_DEFAULT=4. Затем сохраним и обновим меню grub:

sudo nano /etc/default/grub

Использование ОС Windows и Linux одного ntfs-диска может привести к ситуации, когда windows после неудачной загрузки или сбоя оставляет ntfs-диск доступным всем другим ОС в режиме read only:

mount
...
/dev/sda2 on /run/media/adil/B04A7AA04A7A62D0 type fuseblk (ro,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096,uhelper=udisks2)

Сделать ntfs-диск доступным для записи под Linux можно корректным завершением сеанса работы с windows: загрузить и коррекно завершить работу. Второй вариант состоит в том, что мы можем "поправить ошибки" на ntfs-разделе под Linux:

[adil@fedora ~]$ ntfsfix /dev/sda2
Mounting volume... Error opening '/dev/sda2': Permission denied
FAILED
Attempting to correct errors... Error opening '/dev/sda2': Permission denied
FAILED
Failed to startup volume: Permission denied
Error opening '/dev/sda2': Permission denied
Volume is corrupt. You should run chkdsk.
[adil@fedora ~]$ sudo ntfsfix /dev/sda2
Mounting volume... The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
FAILED
Attempting to correct errors...
Processing $MFT and $MFTMirr...
Reading $MFT... OK
Reading $MFTMirr... OK
Comparing $MFTMirr to $MFT... OK
Processing of $MFT and $MFTMirr completed successfully.
Setting required flags on partition... OK
Going to empty the journal ($LogFile)... OK
Checking the alternate boot sector... OK
NTFS volume version is 3.1.
NTFS partition /dev/sda2 was processed successfully.

Теперь можно ntfs-раздел примонтировать в режиме read-write.

Установка Postgresql 9.3.4 и сборка библиотеки libpq для работы с базой из С++ на Windows 7


Скачиваем бинарный инсталлятор сервера и клиентской программы для администрирования БД pgAdmin для x86 - http://www.enterprisedb.com/postgresql-936-installers-win32?ls=Crossover&type=Crossover , для amd64 - http://www.enterprisedb.com/postgresql-936-installers-linux64?ls=Crossover&type=Crossover .

Исходники я скачиваю пока только для сборки libpq. Скачиваем и распаковываем https://ftp.postgresql.org/pub/source/v9.3.4/postgresql-9.3.4.tar.gz (например, в D:\Libraries\postgresql-9.3.4). Распаковать можно при помощи свободного архиватора 7-zip: инсталлятор для x86 - http://www.7-zip.org/a/7z938.msi, для amd64 - http://www.7-zip.org/a/7z938-x64.msi.

Устанавливаем ActivePerl http://www.activestate.com/activeperl/downloads. Для Windows 7 x86 берем 32bit, для amd64 - 64bit. При установке надо оставить включенным чекбокс "Add Perl to PATH environment variable".

Скачиваем и устанавливаем express версию VS 2008 Express Edition  http://download.microsoft.com/download/8/B/5/8B5804AD-4990-40D0-A6AA-CE894CBBB3DC/VS2008ExpressENUX1397868.iso. Входим в VS 2008 Command prompt.

Можно скомпилировать PostgreSQL при помощи Windows SDK для Windows 8 (подходит для Windows 7)  https://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx. Входим в Windows SDK 7.1 Command prompt.

d:
cd D:\Libraries\postgresql-9.3.4\src\tools\msvc
build libpgport
build libpq
build DEBUG libpgport
build DEBUG libpq

Использован материал статей:
1) http://www.postgresql.org/docs/9.3/static/install-windows-full.html
2) http://turecki.net/node/3

пятница, 27 марта 2015 г.

Статическая сборка Qt 4.7.1 на Windows XP x86 SP3/Windows 10 x86_64, VS2008 для работы с WinCE5-устройством Weintek MT607i

Для работы с wince-устройствами, wince sdk нужна полная студия Visual Studio 2008 Professional. После установки студии скачиваем iso-образ service pack 1 http://www.microsoft.com/en-us/download/details.aspx?id=13276. Устанавливаем, если ещё нет, Daemon Tools Lite. Последняя пятая версия не подойдет для Windows XP. Из торрента скачиваем версию 4.49.1.0356, она без проблем запускается под Windows XP SP3 x86, монтируем скачанный образ и ставим SP1. На win10 есть встроенный эмулятор dvd-привода, к которому можно примонтировать iso-образ.

Устанавливаем Windows CE 5.0 Standard SDK http://www.microsoft.com/en-us/download/details.aspx?id=17310, он поддерживает устройство MT607i.

Версии 4.6.1, 4.6.2 выдавали ошибки при сборке qmake и падали при nmake. Скачиваем и распаковываем  Qt 4.7.1 https://download.qt.io/archive/qt/4.7/qt-everywhere-opensource-src-4.7.1.zip (например, в D:\Library\qtmobile4_7_1).

Для статической сборки самого qmake надо отредактировать следующий конфиг D:\Libraries\qtmobile4_7_1\mkspecs\common\wince:

Меняем строчки:

QMAKE_CFLAGS_RELEASE    = -O2 -MD
QMAKE_CFLAGS_LTCG       = -GL
QMAKE_CFLAGS_DEBUG = -DDEBUG -D_DEBUG -Zi -MDd

на

QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_LTCG       = -GL
QMAKE_CFLAGS_DEBUG = -DDEBUG -D_DEBUG -Zi -MTd

Запускаем Visual Studio 2008 command prompt (cmd) с уже определенными переменными среды:

d:

cd d:\Library\qtmobile4_7_1

configure.exe -platform win32-msvc2008 -xplatform wince50standard-armv4i-msvc2008 -static -confirm-license -opensource -no-accessibility -no-phonon -no-phonon-backend -no-qt3support -no-openssl -no-webkit -qt-sql-sqlite -nomake demos -nomake examples -stl -no-libjpeg

cd ./bin

setcepaths wince50standard-armv4i-msvc2008

cd ..

nmake


При сборке на win10 x86-84 возникает следующая ошибка "QtGuid.lib(jmemmgr.obj) : error LNK2019: ссылка на неразрешенный внешний символ getenv в функции jinit_memory_mgr
..\..\bin\qmlviewer.exe : fatal error LNK1120" (подробнее). Для обхождения ошибки я добавил флаг -no-libjpeg. Очищаем собранные бинарники (nmake confclean) и повторяем этапы сборки с configure

Для связи с устройством на winxp устанавливаем ActiveSync 4.5 http://www.microsoft.com/ru-ru/download/details.aspx?id=15 и Weintek ActiveSync Driver.

Информация собрана из следующих источников:
1) http://doc.qt.io/qt-4.8/wince-with-qt-introduction.html
2) http://doc.qt.io/qt-4.8/requirements-wince.html
3) http://doc.qt.io/qt-4.8/install-wince.html

4) https://stackoverflow.com/questions/14932315/how-to-compile-qt-5-under-windows-or-linux-32-or-64-bit-static-or-dynamic-on-v
5) http://doc.qt.io/qt-4.8/configure-options.html
6) https://wiki.qt.io/Building-Qt-4.7.4-for-WindowsCE-StandardSDK
7) http://vasinnet.blogspot.com/2011/04/blog-post.html

четверг, 26 марта 2015 г.

Статическая сборка boost 1.54 под Windows XP, VS2008

Скачиваем и распаковываем исходники http://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.7z/download (например, в D:\Library\boost_1_54_0).

В командном интерпретаторе (Пуск\Выполнить\cmd) или лучше Visual Studio 2008 command prompt набираем:

d:
cd D:\Library\boost_1_54_0
bootstrap.bat
b2 link=static runtime-link=static cxxflags=-Zc:wchar_t threading=multi

среда, 25 марта 2015 г.

Cоздание пользователя PostgreSQL, присвоение привилегий и выполнение скрипта (video_base.sql)

Для Ubuntu. Создание нового пользователя PostgreSQL и присвоение ему прав на базу video_base:

sudo -u postgres psql postgres
postgres=# create database video_base;
postgres=# create user db_user with password 'qwerty';
postgres=# grant all privileges on database "video_base" to db_user;
postgres=# \q


Добавляем пользователя db_user в систему (при запросе пароля вводим qwerty) :

sudo adduser db_user

Добавляем пользователя db_user в группу sudo :

sudo adduser db_user sudo

Переходим в папку со скриптом (video_base.sql), запускаем от пользователя db_user:

sudo -u db_user psql --dbname=video_base --file=./video_base.sql


Для Windows. Необходимо добавить в PATH путь к psql. У меня PostgreSQL установлен в D:\Program Files (x86)\PostgreSQL\9.3, поэтому в PATH добавляем D:\Program Files (x86)\PostgreSQL\9.3\bin.

В командном интерпретаторе cmd.exe подключаемся к базе от пользователя postgres, cоздаем пустую базу video_base, нового пользователя db_user, присваем ему права на базу:

psql --username postgres
postgres=# create database video_base;
postgres=# create user db_user with password 'qwerty';
postgres=# grant all privileges on database "video_base" to db_user;
postgres=# \q

Переходим в папку со скриптом (у меня D:\Downloads\Doc\Text) и выполняем его от созданного пользователя db_user для базы video_base:

d:
cd D:\Downloads\Doc\Text
psql --username=db_user --dbname=video_base --file=./video_base.sql

Использованы статьи и форумы:
1) http://askubuntu.com/questions/7477/how-can-i-add-a-new-user-as-sudoer-using-the-command-line

Статическая сборка Qt 4 (4.8.5) на Windows 7 x86/amd64, используя для сборки и отладки средства VS2008

Устанавливаем ActivePerl для сборки Qt http://www.activestate.com/activeperl/downloads. Для Windows 7 x86 берем 32bit, для amd64 - 64bit. При установке надо оставить включенным чекбокс Add Perl to PATH environment variable.

Устанавливаем Windows SDK для Windows 8 (подходит для Windows 7) для отладки в QtCreator https://go.microsoft.com/fwlink/p/?LinkId=226658). При его установке не возникает проблем и сбоев.

Устанавливаем Visual Studio 2008 Professional. После установки студии скачиваем iso-образ service pack 1 http://www.microsoft.com/en-us/download/details.aspx?id=13276, устанавливаем, если ещё нет, Daemon Tools Lite и в нем монтируем скачанный образ и ставим SP1.

Если нет проприетарного образа, скачиваем и устанавливаем express версию VS 2008 http://download.microsoft.com/download/8/B/5/8B5804AD-4990-40D0-A6AA-CE894CBBB3DC/VS2008ExpressENUX1397868.isoСкачиваем и ставим VS 2008 express edition sp1http://www.microsoft.com/en-us/download/details.aspx?id=13276.

Скачиваем Qt 4.8.5 http://download.qt.io/archive/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.zip и распаковываем (например, в D:\Library\qt4_8_5). Скачиваем и распаковываем QtCreator http://download.qt.io/official_releases/qtcreator/3.3/3.3.0/qt-creator-opensource-windows-x86-3.3.0.exe (например, в D:\Library\qtcreator3_3_0). Если у нас студия полная, ставим Visual Studio Add-in 1.1.11 http://download.qt.io/official_releases/vsaddin/qt-vs-addin-1.1.11-opensource.exe.

Для того, чтобы сам qmake был собран в статике исправляем D:\Library\qt4_8_5\mkspecs\win32-msvc2008\qmake.conf

Меняем строчки:

QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MDd

на

QMAKE_CFLAGS_RELEASE = -O2 -MT 
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi 
QMAKE_CFLAGS_DEBUG = -Zi -MTd

Для VS2010 правим qtbase\mkspecs\win32-msvc2010\qmake.conf, для VS2013 - qtbase\mkspecs\win32-msvc2012\qmake.conf.

В командном интерпретаторе переходим в папку с Qt и выполняем:

d:
cd d:\Library\qt4_8_5
configure.exe -static 
-confirm-license -opensource -no-accessibility -no-phonon -no-phonon-backend -no-qt3support -no-openssl -no-webkit -qt-sql-sqlite -nomake demos -nomake examples -stl
nmake


Информация собрана из следующих источников:
1) http://stackoverflow.com/questions/14932315/how-to-compile-qt-5-under-windows-or-linux-32-or-64-bit-static-or-dynamic-on-v
2) http://www.prog.org.ru/topic_15051_0.html

Установка библиотек qt4, qt5, qtcreator, boost и БД postgreSQL в Ubuntu 14.04.1/Fedora 30 из репы

1.1. Ubuntu 14.04. Установка пакета библиотек qt4, qt5 и ide qtcreator:

sudo apt-get install qt-sdk

После установки таким образом пакета qt-sdk и всех связанных пакетов на машину с Ubuntu 14.04 amd64 мы получим рабочую среду Qt Creator с настроенной связкой для использования qt5 (/usr/lib/x86_64-linux-gnu/qt5/bin/qmake). Кроме этого установлен пакет qt4. который надо всего лишь настроить (/usr/lib/x86_64-linux-gnu/qt4/bin/qmake).

1.2. В Fedora 30 qmake qt4 находится в пакете qt-devel, qmake qt5 - в пакете qt5-qtbase-devel , qtcreator - в пакете qt-creator :

sudo dnf install qt-devel qt5-qtbase-devel qt-creator

После установки qtcreator подобным образом надо поправить настроенный kit:
1) https://blog.sarah-maas.com/2018/04/07/setting-up-qt-creator-on-fedora-27/
2) https://dougie.io/linux/qt-creator-fedora/

При попытке добавить комплект кастомный кросскомпилированный комплект на базе qt4, а именно найти qmake, возникает проблема, qtcreator (у меня 4.10) не может найти в папке файл qmake. Дело в том, что современный формат файла выглядит так qmake-qt4 или qmake-qt5. Надо в папке, где лежит собранный qmake (у меня /usr/local/tools/qt_4.8.3_arm/bin), создать символьную ссылку и тогда qtcreator найдет qmake:

sudo ln -s ./qmake ./qmake-qt4

Для сборки проектов на qt ставим компилятор и toochain:

sudo dnf groupinstall "C Development Tools and Libraries"
sudo dnf install mesa-libGL-devel


2.1. Установка дефолтных библиотек boost (для ubuntu 14.04.1 - boost 1.54), необходимых для асинхронного tcp и udp общения:

sudo apt-get install libboost-all-dev libboost-system-dev libboost-regex-dev libboost-date-time-dev libboost-chrono-dev libboost-filesystem-dev libboost-thread-dev

2.2. Для fedora 30 следующая команда:

sudo dnf install boost-devel

3.1. Установка БД Posgresql 9.3, библиотеки libpq, клиента для администрирования баз pgAdmin:

sudo apt-get install postgresql-server-dev-9.3 postgresql-9.3 pgadmin3

4.1. Устанавливаем систему версионного контроля Mercurial (Hg) с удобным клиентом TortoiseHg:

sudo apt-get install tortoisehg

4.2. Устанавливаем систему версионного контроля Mercurial (Hg) с удобным клиентом TortoiseHg:

sudo dnf install tortoisehg

Настройка целей сборки в QtCreator:
1) https://doc.qt.io/qtcreator/creator-targets.html
2) Setting Up Qt Creator Kit for BBB in Debian https://www.youtube.com/watch?v=eZ-HOc2P_EI

Ссылки (boost, fedora):
1) https://stackoverflow.com/questions/2278881/boost-c-library-install

Ссылки (qt, fedora):
1) https://superuser.com/questions/1510814/which-package-provides-qmake-on-fedora
3) https://www.linux.org.ru/forum/development/12021615

Обновление кэша динамических библиотек в Ubuntu

Кладем динамическую библиотеку (например, our-lib.so) в /usr/local/lib и добавляем папку в список кэшируемых:

sudo mkdir -p /usr/local/lib
sudo cp ./our_lib.so /usr/local/lib

sudo sh -c "echo '/usr/local/lib' >> /etc/ld.so.conf"

Обновляем кэш динамических библиотек:

sudo ldconfig --verbose

Запуск bash-скрипта по расписанию в cron под Ubuntu

Редактирование расписания cron для текущего пользователя:

crontab -e

Изменение расписания для root'а:

sudo crontab -e

Запускаем bash-скрипт (start_progs.sh) каждую минуту:

* * * * * ~/.start_progs.sh

Пояснение из Википедии:
<минута(0-59)> <час (0-23)> <день(1-31)> <месяц (1-12)> <день недели (0-7)> <скрипт>

Например, запись 5 0 * * * script.sh значит запускать скрипт script.sh каждый день в 0 часов 5 минут.

Использованный материал:
1) https://ru.wikipedia.org/wiki/Cron

Установка эмулятора MJPEG-камеры в Ubuntu 14.04

Запуск менеджера обновлений:

sudo update-manager

Добавляем репозитарий:

deb http://avreg.net/repos/6.1/ubuntu/ trusty main contrib non-free

Устанавливаем пакет:

sudo apt-get install webcam-emu

По умолчанию mjpeg-поток доступен по локальному адресу 127.0.0.1 на порту 60001. Запрос должен адресоваться алиасу /mjpeg.cgi. В качестве разделителя jpeg'ов используется myboundary. Корректный HTTP-запрос выглядит следующим образом: GET /mjpeg.cgi?resolution=640x480&color=1&fps=10&mode=0 HTTP/1.0. В строке браузера (в firefox, в chrome не работает) можно проверить работоспособность, набрав:

http://localhost:60001/mjpeg.cgi?resolution=640x480&color=1&fps=10&mode=0

Настройки камеры находятся в файле /etc/webcam-emu.yaml. Здесь можно поменять вышеупомянутые и другие настройки (sudo nano /etc/webcam-emu.yaml). Перезапустить службу виртуальной камеры можно следующей командой:

sudo service webcam-emu restart

Использован материал:
1) http://avreg.net/manual_tuning_webcam-emu.html
2) http://en.wikipedia.org/wiki/Motion_JPEG