Показаны сообщения с ярлыком ubuntu. Показать все сообщения
Показаны сообщения с ярлыком ubuntu. Показать все сообщения

вторник, 11 февраля 2025 г.

Как клонировать содержимое харда (диска) в файл, а затем на другой хард

Ссылки:
1) Копирование разделов жёсткого диска средствами GNU/Linux: как обойтись загрузочной флешкой там, где раньше нужен был Акронис https://habr.com/ru/articles/233961/
2) 7 лучших программ для клонирования диска https://lifehacker.ru/programmy-dlya-klonirovaniya-diska/

вторник, 22 декабря 2020 г.

Установка 7zip на fedora/ubuntu

1. Ubuntu:

sudo apt install p7zip-full p7zip-rar

Основанные на Debian дистрибутивы идут с тремя связанными с 7zip пакетами:
- p7zip: включает 7zr (минимальный инструмент архивирования 7zip), который может работать только с родным форматом 7z.
- p7zip-full: содержит 7z, который может поддерживать 7z, LZMA2, XZ, ZIP, CAB, GZIP, BZIP2, ARJ, TAR, CPIO, RPM, ISO и DEB.
- p7zip-rar: содержит плагин для извлечения файлов RAR

2. Fedora:

sudo dnf install p7zip p7zip-plugins

Дистрибутивы, основанные на Red Hat, предлагают два связанных с 7zip пакета:
- p7zip: содержит команду 7za, котомая может поддерживать 7z, ZIP, GZIP, CAB, ARJ, BZIP2, TAR, CPIO, RPM и DEB.
- p7zip-plugins: содержит команду 7z и дополнительный плагин для расширения возможностей команды 7za (например, извлечение ISO)

Источники:

вторник, 14 января 2020 г.

crc32 полином

Реализация расчета бита четности на полиноме x+1 ?

1. Контрольные суммы в ubuntu, fedora

Через нахождение контрольной суммы удобно проверять идентичность бинарника (в примере ниже my_file), так как в этом случае дата создания (изменения) и размер не очень подходят.

Установка и использование в Ubuntu:

sudo apt-get install libarchive-zip-perl 
crc32 my_file

Установка и использование в Fedora:

sudo yum install perl-Archive-Zip 
crc32 my_file

Вычисление других хэш-сумм:

Вики:
12) 


habr:
1) CRC — это просто (деление столбиком) https://habr.com/ru/articles/770014/

uart:
1) uart

Источники:

вторник, 19 ноября 2019 г.

Восстановление grub

У меня на компе с двумя ОС (Ubuntu14.04/Windows7; Fedora31/Win10) перестала грузиться первая. Я решил создать загрузочную ОС на флешке (LiveUSB), загрузиться с нее, примонтироваться с исходной файловой системе и обновить порядок загрузки ОС в grub.

Скачиваем нужный исошник отсюда. Скачиваем прогу UNetbootin отсюда. Вставляем флешку (у меня 8GB, но 4GB вполне должно хватить). Запускаем UNetbootin, выбираем исошник, флешку, записываем. Перезагружаемся, проверяем, чтобы в BIOS'е в списке устройств для загрузки первым устройством стояла флешка. Загружаемся с флешки.

Ubuntu Links:
1) http://help.ubuntu.ru/wiki/%D0%B2%D0%BE%D1%81%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_grub
2) http://help.ubuntu.ru/wiki/unetbootin
3) http://ubuntu.ru/get
4) http://help.ubuntu.ru/wiki/ubuntu_%D0%BD%D0%B0_usb
5) http://help.ubuntu.ru/wiki/liveusb

Fedora Links:
1) https://sys-adm.in/sections/os-nix/844-vosstanovlenie-grub-v-fedora.html
2) https://docs.fedoraproject.org/en-US/quick-docs/bootloading-with-grub2/
3) https://superuser.com/questions/596317/how-would-i-reinstall-the-grub-efi-bootloader-on-fedora-linux
4) https://fedoraproject.org/wiki/GRUB_2
5) https://zen.yandex.ru/media/id/5d75175fc7e50c00ade545d5/nastroika-fedora-31-posle-ustanovki-5dd803896c428f7920c2b85a

Ubuntu 16.04 + Windows 10: amd64, GPT, UEFI

четверг, 4 июля 2019 г.

Установка последней среды Arduino на Ubuntu 16.04/Fedora 31

1. Ubuntu. Можно действовать двумя способами: ставить из репы и через umake.

1.1. Установка из репозитария.

sudo apt-get install arduino arduino-core
1.2. Установка через umake.

Набираем в терминале:

umake electronics arduino

Моя папка для инсталляции по умолчанию:

/home/adil/.local/share/umake/electronics/arduino

Переходим в папку и запускаем:

./arduino

2. Fedora. Установка только из репозитария.

sudo dnf install arduino arduino-core

Использованные материалы:
1) https://askubuntu.com/questions/1025753/how-to-install-latest-arduino-ide
2) https://www.centennialsoftwaresolutions.com/blog/get-and-install-the-64-bit-arduino-1-8-7-ide-on-ubuntu-16-04-3

среда, 26 июня 2019 г.

Использование программатора для avr-контроллеров usbasp и avrdudess (gui-оболочки над avrdude) на ubuntu 16.04 и fedora 30

1. Для Ubuntu 16.04.

Устанавливаем пакеты Mono:
sudo apt-get install libmono-system-windows-forms4.0-cil

Устанавливаем avrdude и avr-gcc:
sudo apt-get install avrdude gcc-avr

Скачиваем zip-архив gui для avrdude avrdudess_20190209, распаковываем, переходим в распакованную папку, запускаем:
mono avrdudess.exe

Хороший аналог Bray's Terminal под linux - cutecom:
sudo apt install cutecom

2. Для Fedora 30.

Устанавливаем пакеты Mono:
sudo yum install mono-core

Устанавливаем avrdude и avr-gcc:
sudo yum install avrdude

Скачиваем zip-архив gui для avrdude avrdudess_20190209, распаковываем, переходим в распакованную папку, запускаем:
mono avrdudess.exe

3. Программа способна прочитать значения fuse-битов, но само выставление битов в программе сделано через байтовые значения fuse high byte, fuse low byte, fuse extended byte и онлайн-конфигуратор этих значений. Удобнее конфигурирование fuse-битов для записи в "чистый" avr-контроллер сделано под виндой в программе avrdude, с которой был скопирован основной функционал avrdudess, во вкладке "Fuses".

Ссылки:
1) http://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/
2) https://ph0en1x.net/77-avrdude-full-howto-samples-options-gui-linux.html
3) https://radiotech.kz/threads/nastrojka-usbasp-v-ubuntu.137/
4) Пример программы (мигание светодиодом), собранной под linux с помощью avr-gcc
https://fos.cmb.ac.lk/esl/programing-avr-ubuntu-14-04-usbasp/
5) http://www.societyofrobots.com/robotforum/index.php?topic=7004.0
6) https://ru.wikipedia.org/wiki/WinAVR

понедельник, 25 июля 2016 г.

Создание установочной флешки ОС Ubuntu/Fedora

Под линукс. У меня установлена Ubuntu 16.04 amd64/Fedora Workstation 34 x86_64. Я хочу создать liveusb-флешку с Ubuntu 14.04.4/Fedora Workstation 34 x86_64.

1. Скачиваем исошник 14.04.4 amd64 отсюда. Набираем в поисковой строке юнити "usb". В русской убунте приложение называется "Создание загрузочной флешки", в стандартной с американским языком "Startup Disk Creator". Вставляем usb-флешку размером минимум 2GB.

При установке версии 10.04.4 amd64 возникли проблемы. При записи при помощи "Startup Disk Creator" BIOS не видит флешку и не загружается с нее. Образ удалось записать под Windows с помощью программы PenDrive на флешку размером не больше 4Gb, предварительно отформатировав в FAT (не FAT32). Непосредственно при записи образа в PenDrive надо отказаться от форматирования флешки. Если взять флешку размером больше 4GB, её нельзя будет отформатировать в FAT16, только в FAT32. Это приводит к ошибке при загрузке после BIOS'а: "No DEFAULT or UI configuration directive found!".

2. Для Fedora Workstation 34 x86_64 скачиваем исошник отсюда. Набираем в поисковой строке приложений "Fedora Media Writer", устанавливаем, запускаем приложение. Вставляем usb-флешку размером минимум 2GB, записываем.

Под виндой. Сделаем liveusb-флешку под windows 7. Скачиваем исошник Fedora Workstation 34 x86_64 отсюда. Приложение для записи на флешку Fedora Media Writer отсюда. Устанавливаем, запускаем приложение. Вставляем usb-флешку размером минимум 2GB, записываем.

суббота, 20 февраля 2016 г.

Установка Apache2, MySQL, PHP5, phpMyAdmin на Ubuntu 14.04.3

Для экспериментов на локальном компе (Ubuntu 14.04.3) с известными php-фреймворками (например, joomla, drupal, modx, zend) следует установить БД MySQL, интерпретатор PHP, веб-сервер Apache2 и веб-приложение phpMyAdmin для работы с MySQL из браузера. 
БД, интерпретатор и веб-сервер на Ubuntu объединены в набор пакетов LAMP (Linux, Apache, MySQL, PHP):

sudo apt-get install lamp-server^ phpmyadmin

После корректной установки упомянутых пакетов в браузере должна открываться страница http://localhost c дефолтным содержимым (отображаемая страница находится по адресу /var/www/html/index.html). Если этого не происходит, можно перезапустить веб-сервер (sudo service apache2 restart).

Для того, чтобы получить доступ к веб-приложению phpMyAdmin через веб-сервер, необходимо известить последний о присутствии первого. Это можно сделать, создав символьную ссылку, связывающую конфигурацию веб-приложения (/etc/phpmyadmin/apache.conf) с веб-сервером (папка настроек /etc/apache2/conf-available/):

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf

Затем необходимо подключить конфигурацию скриптом внутри веб-сервера Apache2 (скрипт создаст соответствующую символьную ссылку в папке /etc/apache2/conf-enabled на папку /etc/apache2/conf-available):

sudo a2enconf phpmyadmin
sudo service apache2 reload

Теперь должна быть доступна страница http://localhost/phpmyadmin.

Если возникает ошибка "The mbstring extension is missing. Please check your PHP configuration.", необходимо поставить пакет php-mbstring:

sudo apt install php-mbstring

Использованные материалы:

понедельник, 8 февраля 2016 г.

Установка python 2.7.11+, django 1.9.5 через pip, используя virtualenv под Ubuntu 16.04

Установка питона из репозитария ubuntu 16.04:

sudo apt-get install python

Проверяем версию python:

python --version
Python 2.7.11+

Установка пакетного менеджера pip:

sudo apt-get install python-pip

Установка virtualenv:

sudo pip install virtualenv

Создадим проект для этого учебного курса (я использую папку /media/Data/Projects/):

mkdir /media/Data/Projects/mysite
cd /media/Data/Projects/mysite

Создадим виртуальное окружение для него:

virtualenv dj1_9_5

Чтобы активировать окружение:

source dj1_9_5/bin/activate

Строка должна принять вид: (dj1_9_5) adil@adil:/media/Data/Projects/mysite$
Теперь устанавливаем django через pip под virtualenv:

pip install django==1.9.5

Проверяем версию django:

django-admin --version
1.9.5


Для запуска упомянутого учебного курса надо перейти в папку с проектом и выполнить (будем использовать локальный ip-адрес 127.0.0.1 и порт 8000):

python manage.py runserver 127.0.0.1:8000

Чтобы выйти из виртуального окружения, нужно набрать:

deactivate

понедельник, 14 декабря 2015 г.

Установка python 2.7.11+, django 1.6.1 с поддержкой mysql на ubuntu 16.04

Я ставил Ubuntu 16.04 amd64 с LiveUSB-системы, на базе исошника c официального сайта. Питон версии 2.7.11+ был предустановлен. Проверяем версию python:

python --version
Python 2.7.11+

Установка пакетного менеджера pip:

sudo apt-get install python-pip

Установка virtualenv:

sudo pip install virtualenv

Перейдем в папку с нашим проектом (у меня  /media/Data/Projects/Python/test) и создадим виртуальное окружение:

cd /media/Data/Projects/Python/test
virtualenv dj1_6_1


Активируем окружение:

source dj1_6_1/bin/activate


Строка должна принять вид: (dj1_6_1) adil@adil:/media/Data/Projects/Python/test$
Устанавливаем django 1.6.1 через pip под virtualenv dj1_6_1:

pip install django==1.6.1

Проверяем версию django:

python manage.py --version
1.6.1


Установка БД MySQL и клиентской библиотеки для работы с ней:

sudo apt-get install mysql-server
sudo apt-get install libmysqlclient-dev

Установка модулей питона для работы с MySQL:

pip install mysql-python

Использованные статьи:

среда, 7 октября 2015 г.

Менеджер для получения базы sqlite из скрипта (Ubuntu/Windows)

Есть несколько opensource-проектов менеджеров sqlite-баз:
1) DB Browser for SQLite (сайт http://sqlitebrowser.org/, репозитарий https://github.com/sqlitebrowser/sqlitebrowser/releases)
2) SQLite Studio (сайт http://sqlitestudio.pl/?act=download)
3) sqliteman (сайт http://sqliteman.yarpen.cz/)

1. В Ubuntu 14.04 в дефолтном репозитарии первый (sqlitebrowser) и последний (sqliteman) доступны в виде пакетов для скачивания. Установим sqliteman:

sudo apt-get install sqliteman

2. Под Windows 7 amd64 мне понравился DB Browser for SQLite.

Источники:
1) http://softlakecity.ru/soft/chem-otkryit-i-otredaktirovat-bazu-dannyih-sqlite

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

Установка средств кросскомпиляции (ELDK) для custom-платы на основе Digi ConnectCore 9m 2443 и сборка Qt 4.8.3

Мне необходимо собрать проект, написанный под Qt 4.8.3, для выполнения на custom-плате под управлением микроконтроллера Digi Connect Core 9M 2443. Средства разработки и кросскомпиляции будем ставить на ОС Ubuntu 10.04 (host), так как стандартная библиотека С++ этой версии совместима с библиотекой, используемой в ELDK. Ubuntu 10.04 - самая старшая версия Ubuntu, официально поддерживаемая ELDK, согласно документации.

Версия Ubuntu 10.04 уже не поддерживается, но старые пакеты можно скачать из резервного репозитория. Меняем в файле /etc/apt/sources.list строчку http://ru.archive.ubuntu.com/ubuntu/   на http://old-releases.ubuntu.com/ubuntu.

Для сборки qt надо установить пакет g++:

sudo apt-get install g++

У меня на компе установлена Ubuntu 16.04 amd64. Я устанавливаю virtualbox (sudo apt-get install virtualbox), создаю новую машину со стандартными настройками под 32-битный linux, скачиваю 32-битный iso'шник, примонтирую его в виде оптического диска и устанавливаю с него Ubuntu 10.04 x86 на виртуальную машину (подробнее).

1. Для сборки используются инструменты ELDK (Embedded Linux Development Kit) http://www.denx.de/wiki/DULG/ELDK. Я устанавливаю старую версию 4.2 (ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/eldk/4.2/arm-linux-x86/iso/arm-2008-11-24.iso). В новых версиях ELDK, начиная с 5.0, изменилась система наименований, iso'шники сгруппированны по архитектуре ARM. В плате используется микропроцессор S3C2443 фирмы Sumsung ARM9. Группа микропроцессоров ARM9 может соответствовать либо архитектуре ARMv4T, либо ARMv5TE, либо ARMv5TEJ. Для последней доступной версии ELDK 5.3, по моему мнению, стоит остановиться на версии armv4t (ftp://ftp-stud.hs-esslingen.de/pub/Mirrors/eldk/5.3/iso/eldk-5.3-armv4t.iso), но я ее не проверял.

Я скачал файл на хост-машину и перекинул в общую папку /media/Data/Exchange, которая соответствует папке /media/Exchange гостевой ОС. Переходим в неё (/media/Exchange), создаем папку для монтирования (/mnt/iso) и монтируем исошник:

cd /media/Exchange
sudo mkdir /mnt/iso
sudo mount -o loop -o exec ./arm-2008-11-24.iso /mnt/iso

Переходим в директорию и запускаем установку в папку /usr/local/tools/eldk:

cd /mnt/iso

sudo ./install -d /usr/local/tools/eldk

Добавляем путь к бинарникам в общий путь поиска системы. Редактируем файл ~/.bashrc:

sudo nano ~/.bashrc

Добавляем в конец строку:

export PATH=$PATH:/usr/local/tools/eldk/usr/bin

После перезапуска терминала и инициализации его из обновленного скрипта ~/.bashrc вывод команды echo $PATH должен включать /usr/local/tools/eldk/usr/bin.

2. Кросскомпиляция Qt 4.8.3 производится на гостевой ОС Ubuntu 10.04 x86. Скачиваем версию qt 4.8.3 отсюда под хост-машиной, распаковываем в папку для сборки /media/Data/Exchange/qt_4.8.3_arm.

В проекте нет стандартных настроек для системы кросскомпиляции ELDK, поэтому надо будет создать файлы настроек. Переходим в папку mkspecs/qws, создаем папку и копируем файлы настроек:

cd /media/Data/Exchange/qt_4.8.3_arm/mkspecs/qws
mkdir linux-arm-eldk-g++
cp linux-arm-g++/qmake.conf ./linux-arm-eldk-g++
cp linux-arm-g++/qplatformdefs.h ./linux-arm-eldk-g++


Редактируем файл настроек nano ./linux-arm-eldk-g++/qmake.conf в соответствии с используемым средством кросскомпиляции /usr/local/tools/eldk:

#
# qmake configuration for building with linux-arm-eldk-g++
#

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)

#Compiler Flags to take advantage of the ARM architecture

QMAKE_CFLAGS_RELEASE = -O0 -march=armv4t -mtune=arm920t -pipe
QMAKE_CXXFLAGS_RELEASE = -O0 -march=armv4t -mtune=arm920t -pipe

# modifications to g++.conf
QMAKE_CC = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-gcc
QMAKE_CXX = 
/usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++
QMAKE_LINK = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-g++

# modifications to linux.conf
QMAKE_AR = 
/usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-objcopy
QMAKE_STRIP = /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-strip

load(qt_config)


Мы прописали полный путь к кроссинструментам (например, /usr/local/tools/eldk/usr/bin/arm-linux-gnueabi-gcc вместо просто arm-linux-gnueabi-gcc ) потому, что версия QtCreator 1.3.1, которая идет в этой версии Ubuntu, почему-то не считывает путь поиска из переменной $PATH.

Собираем qt 4.8.3:

cd /media/Data/Libraries/bbb/qt_4.8.3_arm
./configure -v -embedded arm -platform qws/linux-x86-g++ -xplatform qws/linux-arm-eldk-g++ -prefix /usr/local/tools/qt_4.8.3_arm -little-endian -qt-gfx-transformed -static -confirm-license -opensource -no-accessibility -no-largefile -fast -no-phonon -no-phonon-backend -qt-zlib -no-qt3support -no-openssl -no-qdbus -no-webkit -qt-sql-sqlite -nomake demos -nomake examples -nomake docs

make
sudo make install

Устанавливаем QtCreator из репозитария:

sudo apt-get install qt-sdk

Использованный материал:
1) http://help.ubuntu.ru/wiki/old_ubuntu_versions
2) http://help.ubuntu.ru/wiki/%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D0%B9

Подключение существующего vdi-образа с гостевой ОС Ubuntu 10.04 на VirtualBox под управлением Ubuntu 16.04 (хост-ОС)

Ставим из репозитария VirtualBox:

sudo apt-get install virtualbox

Создаем новую виртуальную машину Ubuntu 10.04, выбирая те же дефолтные параметры, что и в предыдущем посте. На шаге подключения жесткого диска выбираем существующий vdi-образ с установленной Ubuntu 10.04. Запускаем. При первом запуске Ubuntu 10.04 повисла при загрузке. При перезапуске загрузка прошла корректно, установленные дополнения гостевой ОС работают.

Настраиваем общую папку для того, чтобы Ubuntu 10.04 видела Ubuntu 16.04. Переходим в верхнем меню в пункт "Устройства/Настроить общие папки". Добавляем папки машины. Выбираем папку /media/Data/Exchange.

После перезагрузки папка на гостевой ОС /media/sf_Exchange должна содержать файлы папки /media/Data/Echange хост-машины. У меня так автоматически не произошло даже после перезагрузки, поэтому делаем шаги по монтированию сами. Создаем папку для монтирования (у меня /media/Exchange) и примонтируем:

sudo mkdir /media/Exchange
sudo mount -t vboxsf Exchange /media/Exchange


После этого папка /media/Exchange гостевой ОС связана с папкой /media/Data/Echange хост-ОС.

Установка Ubuntu 10.04 x86 в качестве гостевой ОС на VirtualBox под управлением Windows 7(хост-ОС)

Скачиваем последний дистрибутив VirtualBox отсюда (у меня последняя версия 4.3.28) и устанавливаем. Скачиваем iso-файл со старой версией Ubuntu 10.04 отсюда (обязательно x86/i386, так как 64-битные архитектуры(amd64) VirtualBox не поддерживает).

Запускаем VirtualBox и создаем новую машину со следующими параметрами. В поле название вводим "Ubuntu 10.04", в поле тип "Linux", в поле версия "Ubuntu (32 bit)" (последние два парметра выберутся автоматически при выборе имени, содержащего графический компекс знаков"ubuntu"). Переходим к следующему шагу. Используем рекомендуемый размер оперативной памяти - 512 MB. Переходим к следующему шагу. Соглашаемся на создание нового виртуального жесткого диска размером 8 GB. Далее выбираем тип VDI и используем динамическое выделение памяти, это удобно. Выбираем место, куда положить файл (у меня D:\Downloads\Images\vdi\Ubuntu10_04) и создаем виртуальный диск.

Подключаем скачанный установочный iso-образ в эмулятор DVD-привода к созданной виртуальной машине. Переходим в Настройки/Носители. Добавляем к "Контроллеру IDE" новое устройство (почему-то при добавлении оптического привода к контроллеру SATA виртуальная машина отказывалась видеть iso-образ, вставленный в него). Нажимаем кнопку "Добавить новое устройство к выбранному контроллеру" и выбираем "Добавить привод оптических дисков". Выбираем iso-образ Ubuntu 10.04 для добавленного привода. Нажимаем "Ок". Переходим в меню "Настройки/Система/Материнская плата/Порядок загрузки". Переставляем оптический привод в списке вверх или оставляем только его включенным в списке загрузки. Запускаем виртуальную машину. 

Начинается установка Ubuntu 10.04 на виртуальную машину. Выбираем русский язык установки, свой часовой пояс, русскую раскладку клавиатуры, автоматическое разбиение мастером всего жесткого диска на разделы (удалить все данные и использовать весь диск). В графе "Как вас зовут?" введите ваш логин для работы в машине (например, adil). Это же имя появится в графе "Какое имя вы хотите использовать при входе в систему". Название компьютера в сети будет построено добавлением слова "desktop" к имени (например, adil-desktop). В качестве пароля я обычно использую "qwerty". В radiobutton'e ниже выберите "Входить в систему автоматически". Далее подтвердите все выбранные параметры. Начнется копирование файлов.

Устанавливаем "Дополнения гостевой ОС" для взаимодействия с системой и улучшенного отображения (экран эмулируемой системы сможет принимать разрешение хост-ОС). Если мышь захвачена эмулируемой системой, нажимаем host-button (по умолчанию,"Right Control") для разблокировки. Выбираем в верхнем меню "Устройства/Подключить образ диска Дополнения гостевой ОС". В эмулируемой системе Ubuntu ставим "VirtualBox Guest Additions".

Для доступа из гостевой Ubuntu 10.04 к хост-ОС Windows 7 выбираем в верхнем меню "Устройства/Настроить общие папки". Выбираем "Папки машины" и добавляем папку на реальной машине (например, D:\Exchange), имя папки "Exchange", ставим галочки в checkbox'ах "Автоподключение" и "Создать постоянную папку". В Ubuntu добавляем текущего пользователя в группу vboxsf:

sudo adduser adil vboxsf

Общая папка, судя по ману, должна монтироваться при загрузке Ubuntu 10.04 в папку /media/sf_Exchange. На всякий случай, если она автоматически не примонтировалась, делаем все сами. Создаем папку для монтирования (у меня /media/Exchange) и примонтируем:

sudo mkdir /media/Exchange
sudo mount -t vboxsf Exchange /media/Exchange

После этого папка /media/Exchange гостевой ОС связана с папкой D:\Exchange хост-ОС.

Использованный материал:

понедельник, 18 мая 2015 г.

Установка драйвера (libacsccid) для работы с NFC-картридером ACR122 под Ubuntu 14.04

Файлы библиотеки libpcsclite уже предустановлены в дистрибутиве Ubuntu (библиотека /lib/x86_64-linux-gnu/libpcsclite.so.1.0.0 и символьная ссылка /lib/x86_64-linux-gnu/libpcsclite.so). Устанавливаем необходимые пакеты демона (pcscd) и драйвера (libacsccid) из репозитария Ubuntu. Есть два драйвера, два пакета libacsccid (поддерживающий большее количество карт фирмы ACS и тестирующийся ее инженерами https://lists.debian.org/debian-devel/2011/05/msg00705.html) и libccid (дефолный). Ставим демон pcscd и библиотеку libacsccid из репозитария:

sudo apt-get install pcscd

sudo apt-get install libacsccid1

Команда lsusb (sudo lsusb) видит картридер ACR122:

Bus 002 Device 002: ID 058f:6362 Alcor Micro Corp. Flash Card Reader/Writer
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 002: ID 04d9:1702 Holtek Semiconductor, Inc. 
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 003: ID 072f:2200 Advanced Card Systems, Ltd 
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Остановим запущенный демон pcscd (sudo service pcscd stop или sudo killall pcscd). Запустим демон в режиме отладки (sudo /usr/sbin/pcscd -fd), чтобы увидеть, что драйвер картридера libacsccid корректно загрузился при подключении устройства:

00000000 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000150 configfile.l:254:DBGetReaderListDir() Parsing conf directory: /etc/reader.conf.d
00000034 configfile.l:307:DBGetReaderList() Parsing conf file: /etc/reader.conf.d/libccidtwin
00000059 configfile.l:266:DBGetReaderListDir() Skipping non regular file: .
00000019 configfile.l:266:DBGetReaderListDir() Skipping non regular file: ..
00000020 pcscdaemon.c:545:main() pcsc-lite 1.8.10 daemon ready.
00001981 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/003/001
00000157 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/004/001
00000149 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/005/001
00000148 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000140 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/006/001
00000140 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/007/001
00000111 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/007/001
00000116 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x072F, PID: 0x2200, path: /dev/bus/usb/007/003
00000040 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x072F, PID: 0x2200, path: /dev/bus/usb/007/003
00000017 hotplug_libudev.c:321:HPAddDevice() Adding USB device: ACS ACR122U
00000038 readerfactory.c:989:RFInitializeReader() Attempting startup of ACS ACR122U 00 00 using /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Linux/libacsccid.so
00000210 readerfactory.c:874:RFBindFunctions() Loading IFD Handler 3.0
00000041 ifdhandler.c:2328:init_driver() Driver version: 1.0.5
00000248 ifdhandler.c:2341:init_driver() LogLevel: 0x0003
00001316 ifdhandler.c:2361:init_driver() DriverOptions: 0x00C0
00000221 ifdhandler.c:2388:init_driver() ACR38CardVoltage: 0
00000210 ifdhandler.c:2395:init_driver() ACR38CardType: 0
00000016 ifdhandler.c:94:IFDHCreateChannelByName() lun: 0, device: usb:072f/2200:libudev:0:/dev/bus/usb/007/003
00094665 ccid_usb.c:375:OpenUSBByName() Manufacturer: Advanced Card Systems Ltd.
00000199 ccid_usb.c:385:OpenUSBByName() ProductString: ACS CCID driver
00000191 ccid_usb.c:391:OpenUSBByName() Copyright: This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any later version.
00012154 ccid_usb.c:643:OpenUSBByName() Can't claim interface 007/003: Device or resource busy
00025410 ifdhandler.c:118:IFDHCreateChannelByName() failed
00000039 readerfactory.c:1020:RFInitializeReader() Open Port 0x200000 Failed (usb:072f/2200:libudev:0:/dev/bus/usb/007/003)
00000015 readerfactory.c:312:RFAddReader() ACS ACR122U init failed.
00000018 readerfactory.c:535:RFRemoveReader() UnrefReader() count was: 1
00000013 readerfactory.c:1040:RFUnInitializeReader() Attempting shutdown of ACS ACR122U 00 00.
00000012 readerfactory.c:911:RFUnloadReader() Unloading reader driver.
00000238 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/008/001
00000126 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/008/001
00000121 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x04D9, PID: 0x1702, path: /dev/bus/usb/008/002
00000119 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x04D9, PID: 0x1702, path: /dev/bus/usb/008/002
00000150 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
00000116 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
00000118 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x058F, PID: 0x6362, path: /dev/bus/usb/002/002
^C31211962 pcscdaemon.c:726:signal_trap() Received signal: 2
00000017 pcscdaemon.c:745:signal_trap() Preparing for suicide
01000081 readerfactory.c:1273:RFCleanupReaders() entering cleaning function
00000026 winscard_svc.c:130:ContextsDeinitialize() remaining threads: 0

00000007 pcscdaemon.c:670:at_exit() cleaning /var/run/pcscd

Возникает ошибка: "Can't claim interface 007/003: Device or resource busy".

При загрузке ядра мы получаем следующие сообщения инициализации USB (dmesg | grep usb):

...
[ 9636.196045] usb 7-2: new full-speed USB device number 2 using uhci_hcd
[ 9636.379053] usb 7-2: New USB device found, idVendor=072f, idProduct=2200
[ 9636.379057] usb 7-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 9636.379059] usb 7-2: Product: ACR122U PICC Interface
[ 9636.379061] usb 7-2: Manufacturer: ACS
[ 9636.793182] usbcore: registered new interface driver pn533
...

Картридер неправильно опознается ядром как устройство pn533 (usbcore: registered new interface driver pn533). Как пишут на форуме, в ядре версии  (>= 3.1) появилась своя подсистема NFC с своими драйверами, которые конфликтуют с драйверами CCID самого разработчика pscslite
Ludovic Rousseau. Решение проблемы состоит в том, чтобы выгрузить и отменить загрузку драйвера устройства pn533 (можно ещё залезть в сборку Device Tree ядра и отключить драйвер там).

Формируем конфигурационный файл, запрещающий загрузку драйвера pn533:

sudo nano /etc/modprobe.d/blacklist-libnfc.conf

Добавляем в него:

blacklist pn533

После перезагрузки системы на BBB вызов команды sudo /usr/sbin/pcscd -fd выводит следующее:

00000000 debuglog.c:269:DebugLogSetLevel() debug level=debug
00000097 configfile.l:254:DBGetReaderListDir() Parsing conf directory: /etc/reader.conf.d
00000023 configfile.l:307:DBGetReaderList() Parsing conf file: /etc/reader.conf.d/libccidtwin
00000039 configfile.l:266:DBGetReaderListDir() Skipping non regular file: .
00000012 configfile.l:266:DBGetReaderListDir() Skipping non regular file: ..
00000012 pcscdaemon.c:545:main() pcsc-lite 1.8.10 daemon ready.
00001284 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/003/001
00000100 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/004/001
00000093 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/005/001
00000092 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/001/001
00000090 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/006/001
00000089 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/007/001
00000069 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/007/001
00000073 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x072F, PID: 0x2200, path: /dev/bus/usb/007/002
00000026 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x072F, PID: 0x2200, path: /dev/bus/usb/007/002
00000012 hotplug_libudev.c:321:HPAddDevice() Adding USB device: ACS ACR122U
00000023 readerfactory.c:989:RFInitializeReader() Attempting startup of ACS ACR122U 00 00 using /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Linux/libacsccid.so
00000129 readerfactory.c:874:RFBindFunctions() Loading IFD Handler 3.0
00000027 ifdhandler.c:2328:init_driver() Driver version: 1.0.5
00000150 ifdhandler.c:2341:init_driver() LogLevel: 0x0003
00000130 ifdhandler.c:2361:init_driver() DriverOptions: 0x00C0
00000128 ifdhandler.c:2388:init_driver() ACR38CardVoltage: 0
00000128 ifdhandler.c:2395:init_driver() ACR38CardType: 0
00000012 ifdhandler.c:94:IFDHCreateChannelByName() lun: 0, device: usb:072f/2200:libudev:0:/dev/bus/usb/007/002
00178155 ccid_usb.c:375:OpenUSBByName() Manufacturer: Advanced Card Systems Ltd.
00000160 ccid_usb.c:385:OpenUSBByName() ProductString: ACS CCID driver
00000122 ccid_usb.c:391:OpenUSBByName() Copyright: This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any later version.
00007615 ccid_usb.c:650:OpenUSBByName() Found Vendor/Product: 072F/2200 (ACS ACR122U)
00000015 ccid_usb.c:652:OpenUSBByName() Using USB bus/device: 007/002
00002182 ccid_usb.c:1368:get_data_rates() IFD does not support GET_DATA_RATES request: Success
01013513 ifdhandler.c:220:IFDHCreateChannelByName() dwFeatures: 0x00020040
00000019 ifdhandler.c:221:IFDHCreateChannelByName() wLcdLayout: 0x0000
00000005 ifdhandler.c:222:IFDHCreateChannelByName() bPINSupport: 0x00
00000005 ifdhandler.c:223:IFDHCreateChannelByName() dwMaxCCIDMessageLength: 271
00000004 ifdhandler.c:224:IFDHCreateChannelByName() dwMaxIFSD: 256
00000005 ifdhandler.c:225:IFDHCreateChannelByName() dwDefaultClock: 4000
00000005 ifdhandler.c:226:IFDHCreateChannelByName() dwMaxDataRate: 250000
00000004 ifdhandler.c:227:IFDHCreateChannelByName() bMaxSlotIndex: 0
00000005 ifdhandler.c:228:IFDHCreateChannelByName() bCurrentSlotIndex: 0
00000017 ifdhandler.c:229:IFDHCreateChannelByName() bInterfaceProtocol: 0x00
00000005 ifdhandler.c:230:IFDHCreateChannelByName() bNumEndpoints: 3
00000004 ifdhandler.c:231:IFDHCreateChannelByName() bVoltageSupport: 0x07
00000009 ifdhandler.c:536:IFDHGetCapabilities() tag: 0xFB3, usb:072f/2200:libudev:0:/dev/bus/usb/007/002 (lun: 0)
00000006 readerfactory.c:327:RFAddReader() Using the pcscd polling thread
00015973 ifdhandler.c:536:IFDHGetCapabilities() tag: 0xFAE, usb:072f/2200:libudev:0:/dev/bus/usb/007/002 (lun: 0)
00000018 ifdhandler.c:631:IFDHGetCapabilities() Reader supports 1 slot(s)
00000195 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/008/001
00000108 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0001, path: /dev/bus/usb/008/001
00000111 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x04D9, PID: 0x1702, path: /dev/bus/usb/008/002
00000106 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x04D9, PID: 0x1702, path: /dev/bus/usb/008/002
00000140 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
00000103 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x1D6B, PID: 0x0002, path: /dev/bus/usb/002/001
00000106 hotplug_libudev.c:269:get_driver() Looking for a driver for VID: 0x058F, PID: 0x6362, path: /dev/bus/usb/002/002
00000047 readerfactory.c:1330:RFWaitForReaderInit() Waiting init for reader: ACS ACR122U 00 00
00010073 readerfactory.c:1330:RFWaitForReaderInit() Waiting init for reader: ACS ACR122U 00 00
00010079 readerfactory.c:1330:RFWaitForReaderInit() Waiting init for reader: ACS ACR122U 00 00
00010078 readerfactory.c:1330:RFWaitForReaderInit() Waiting init for reader: ACS ACR122U 00 00
00002745 ifdhandler.c:1355:IFDHPowerICC() action: PowerUp, usb:072f/2200:libudev:0:/dev/bus/usb/007/002 (lun: 0)
00001991 eventhandler.c:266:EHStatusHandlerThread() powerState: POWER_STATE_POWERED
00000014 Card ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 
00429759 ifdhandler.c:1355:IFDHPowerICC() action: PowerDown, usb:072f/2200:libudev:0:/dev/bus/usb/007/002 (lun: 0)
00001995 eventhandler.c:455:EHStatusHandlerThread() powerState: POWER_STATE_UNPOWERED
00011372 ccid_usb.c:1485:InterruptRead() Reader: 007/002
00000018 ccid_usb.c:1503:InterruptRead() Slot 0: 0x00

Для работы с библиотекой libpcsclite потребуются хедеры (pcsclite.h и другие). Необходимые заголовочные файлы включены в пакет libpcsclite-dev. Установив его (sudo apt-get install libpcsclite-dev), мы получим файлы pcsclite.h, winscard.h, wintypes.h в папке /usr/include/PCSC.

Для настройки проекта Qt (pro-файла) для работы с библиотекой libpcsclite необходимо указать подключение библиотеки, добавить указанные пути к библиотеке и хедерам:

unix:{
  INCLUDEPATH += /usr/include/PCSC
  LIBS += -L"/lib/x86_64-linux-gnu/" -lpcsclite
}



четверг, 2 апреля 2015 г.

Автоматическое монтирование NTFS-разделов в Ubuntu и Fedora

По умолчанию NTFS-разделы, как и флешки, монтируются в директорию /media/<имя пользователя>/<название диска> (например, у меня /media/adil/Data) по первому нажатию на соответствующей клавише в левой панели Unity c правами только на чтение и запись для владельца. Мне необходимо иметь автоматическое монтирование в папку /media/<название диска> (/media/Data) c полными правами на чтение, запись и выполнение для всех.

Автоматически монтируемые файловые системы перечислены в файлен /etc/fstab. У меня он имеет вид:

# <file system> <mount point>  <type>  <options>  <dump>  <pass>
UUID=cecd69af-7698-4428-9016-5ff1a4b67251 / ext4 errors=remount-ro 0 1
UUID=3cfd2254-05ce-4572-9ad8-22075135fb4f none swap sw 0 0


Для того, чтобы узнать UUID логических дисков выполняем sudo blkid в консоли:

/dev/sda1: LABEL="WindowsBoot" UUID="E280AF2E80AF085D" TYPE="ntfs"
/dev/sda2: LABEL="Win7" UUID="BC74BCE074BC9F18" TYPE="ntfs"
/dev/sda3: UUID="cecd69af-7698-4428-9016-5ff1a4b67251" TYPE="ext4"
/dev/sda5: UUID="3cfd2254-05ce-4572-9ad8-22075135fb4f" TYPE="swap"
/dev/sda6: LABEL="Data" UUID="3EEADC473914B9EA" TYPE="ntfs"
/dev/sdb1: LABEL="SANDISK" UUID="E852-87E4" TYPE="vfat"


Мне хочется, чтобы диск Data автоматически монтировался в /media/Data. Мы выбираем папку /media вместо /mnt, так как в первой Unity автоматически ищет новые логические диски и автоматически создаст ссылку в левой панели. В консоли создаем папку для монтирования sudo mkdir /media/Data. Редактируем файл /etc/fstab sudo nano /etc/fstab. Для диска Data добавляем следующую строку в конец файла:

UUID=3EEADC473914B9EA /media/Data ntfs exec,auto,rw,suid 0 0

Делаем себя владельцем директории, к которой будет монтироваться логический диск. Таким пользователь становится владельцем всех папок и файлов из примонтированного NTFS-раздела:

sudo chown adil:adil /media/Data

В системе с виндой и федорой/убунту ntfs-раздел с данными может после некорректного выхода из винды под линуксом монтироваться с типом fuseblk  в режиме readonly. Чтобы примонтировать readwrite, надо зайти в винду и корректно завершить работу. После этого диск корреткно примонтируется под линукс. Описание - https://askubuntu.com/questions/70281/why-does-my-ntfs-partition-mount-as-read-only

При написании использованы следующие источники:
1) Ubuntu https://help.ubuntu.com/community/MountingWindowsPartitions
2) Ubuntu http://kubuntu.ru/node/1495
3) Ubuntu http://ubuntulogy.org/docs/fs/75
4) Ubuntu https://www.liberiangeek.net/2012/04/auto-mount-windows-ntfs-partitions-in-ubuntu-12-04-precise-pangolin/
5) Ubuntu https://help.ubuntu.com/community/Fstab
6) RHEL https://linuxtechlab.com/how-to-mount-ntfs-drives-on-linux-easily/