Для пользователей Windows
Тут, к сожалению, ничего не получится, поэтому ставим Linux. А экспериментировать будем на Windows 7.
1. Заходим
сюда и скачиваем образ 64 или 32 бита. Рекомендую 64 бита, если машина позволяет.
Если кто-то считает, что знает дистрибутив Linux более пригодный для данной задачи - пожалуйста...
Можно порыться ещё
здесь, чтобы выбрать другую сборку AltLinux.
2. С этого момента можно поступить по разному: записать скачанный образ на флешку. И загрузиться с неё. Инструкция по записи образа на флешку, в том числе, из-под Windows лежит здесь:
https://www.altlinux.org/write.
Или поднять виртуальную машину. Рекомендую именно способ с виртуальной машиной. Он более безопасный. Займёмся этим.
3. Заходим
сюда и нажимаем на большую зелёную кнопку в центре. Или же сразу переходим по
ссылке.
4. Выбираем ссылку для скачивания VirtualBox (Windows hosts). В нашем случае это версия 6.0.8.
Ещё скачиваем VirtualBox Extension Pack, тоже версии 6.0.8.
Внимание! Версии VirtualBox и Extension Pack должны совпадать.
5. Создаём папку под виртуальную/виртуальные машины. У меня это будет D:\VMs.
6. Запускаем установку VirtualBox. С ней проблем возникнуть не должно.
7. Двойным кликом по скачанному Extension Pack запускаем его установку.
Тоже самое можно сделать из меню VirtualBox.
Проматываем лицензионное соглашение вниз до упора и соглашаемся.
8. Готово.
9. Нажимаем на кнопку "Настройки".
На вкладке "Общие" указываем путь к папке для виртуальных машин по умолчанию (D:\VMs)
10. Нажимаем OK.
11. Нажимаем на тулбаре кнопку "Создать" для создания новой виртуальной машины.
12. Вводим имя виртуальной машины - altlinux.
Папку для размещения виртуальной машины: D:\VMs.
Тип: Linux.
Версия.
Объём оперативной памяти.
Не подключать виртуальный жёсткий диск.
Нажимаем на кнопку "Создать".
13. Должно получиться:
14. Копируем образ ISO, который вы скачали в папку с виртуальной машиной (D:\VMs\altlinux).
15. Настроим свежесозданную виртуальную машину. Нажимаем на кнопку "Настроить".
15.1. Вкладка "Система/Процессор". Устанавливаем необходимое количество виртуальных процессоров. Я установил - 2. При изменении настроек помните, что всё, что вы здесь указываете, будет отщипываться от хостовой (физической) машины.
15.2. Вкладка "Носители". Добавляем образ ISO altlinux в контроллер SATA (канал 0) и удаляем контроллер IDE. Он не нужен.
1.
2.
3.
4.
16. Делаем проброс кардридера в виртуальную машину. Для этого переходим на вкладку USB. Нажимаем на кнопку добавления нового устройства, выбираем кардридер из списка (должен быть подключен к хостовой машине).
17. Настраиваем общие папки. Переходим на вкладку: "Общие папки".
17.1. Нажимаем на кнопку добавления общей папки и указываем общую папку. Я указал папку с виртуальной машиной (D:\VMs\altlinux).
18. Нажимаем на кнопку "OK". Ещё раз "OK". Виртуальная машина настроена. Можно попытаться её включить.
19. Нажимаем на кнопку "Запустить". Если до этого всё было сделано правильно, виртуальная машина должна включиться.
20. В меню загрузки системы выбираем пункт "LiveCD".
Чтобы VirtualBox отпустил мышь нужно нажать на клавиатуре клавишу Host (по умолчанию это правый Ctrl, можно изменить в настройках).
21. Установим более вменяемое разрешение экрана (вместо 800x600).
22. Правой кнопкой мыши на свободное место рабочего стола, "Открыть в терминале".
Появился терминал.
23. Повышаемся до root:
su-
root здесь без пароля.
24. Настраиваем (проверяем) общую папку.
24.1. Создаём точку монтирования для общей папки:
mkdir /mnt/share
24.2. Пытаемся смонтировать:
mount -t vboxsf altlinux /mnt/share
Здесь altlinux название общей папки. Самое время вспомнить как вы её назвали при создании.
25. Устанавливаем gcc, ибо по умолчанию не установлен:
apt-get update
apt-get install gcc5
y
26. Общие замечания по работе с виртуальной машиной.
26.1. Выключить можно так:
или:
poweroff
перезагрузить:
reboot
26.2. После выключения и перезагрузки точка монтирования и gcc исчезнут. То есть каждый раз после перезагрузки нужно заново создавать точку монтирования, выполнять монтирование общей папки, устанавливать gcc. Чтобы этого не происходило можно установить систему в виртуальную машину, но это дольше.
27. Теперь необходимо образ карты памяти и программы скопировать в общую папку и заняться делом. Можно сделать это на хостовой машине, а можно открыть браузер и скачать всё с интернета из виртуальной.
1. Вытряхиваем образ диска из архива.
2. Вытряхиваем исходники из архива.
3. Запускаем Midnight Commander. В терминале, от имени root:
mc
4. Узнаем серийный номер новой карты памяти и её размер.
4.1. Чтобы узнать серийный номер новой карты памяти придётся воспользоваться телефоном на андроиде или чем-то вроде этого. К сожалению, USB кардридеры, включая встроенные в ноутбуки, для этого несильно подходят. Вставляем карту в телефон и смотрим файл /sys/block/mmcblk1/device/serial. Можно просто скопировать его во внутреннюю память телефона. Более подробно можно почитать
здесь.
4.2. Узнаём точный размер новой карты памяти:
fdisk -l
Диск /dev/sde: 3,8 GiB, 4025483264 байт, 7862272 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
5. Открываем образ диска hex-редактором. Для mc клавиша F3, затем F4.
6. Правим размер раздела 1 (был урезан до 48 МБ для уменьшения размера образа карты памяти).
Ищем 32-разрядные слова по смещениям 0x1C6 и 0x1CA. Учтите, что данные в шестнадцатеричном дампе записаны в формате младший байт по младшему адресу (Little Endian).
Примеры:
0x000F6800 - 00 68 0F 00
0x00018000 - 00 80 01 00
По смещению 0x1C6 находится порядковый номер первого сектора раздела (первая запись таблицы разделов) у меня получилось 0x000F6800 = 1009664.
По смещению 0x1CA находится количество секторов раздела (первая запись таблицы разделов) 0x00018000 = 98304.
То есть, нам нужно изменить размер раздела по смещению 0x1CA. Теперь считаем:
4025483264 - 512 * 0x000F6800 = 3508535296 байт;
3508535296 / 512 = 6852608 = 0x00689000,
где 4025483264 - размер новой карты памяти в байтах; 512 - размер сектора в байтах; 0x000F6800 - порядковый номер первого сектора раздела; 3508535296 - новый (максимальный) размер раздела в байтах; 0x00689000 - новое количество секторов раздела, которое необходимо записать по смещению 0x1CA вместо 0x00018000.
Снятие блокировки редактирования - F2.
Внимание! При записи помните, что младший байт должен находиться по младшему адресу.
7. Меняем серийный номер.
7.1. Смотрим серийный номер устройства. Он записан с обратной стороны задней крышки.
7.2. Переходим к смещению 0x05B00000. Для mc клавиша F5, вводим смещение, выбираем - смещение (шестнадцатеричное), переходим.
7.3. Видим серийный номер: YT4507001261002000Y5. Его надо поменять, чтобы он соответствовал номеру, записанному на крышке. К сожалению mc не позволяет изменять текст в режиме редактирования шестнадцатеричного кода. Кто не согласен с таким поведением, может использовать другой редактор шестнадцатеричного кода с поддержкой больших файлов. А мы продолжаем.
Редактировать будем шестнадцатеричный код (в центре), а смотреть на право, туда где серийный номер.
Соответствие шестнадцатеричных кодов и символов (цифр):
Код Символ
0x30 0
0x31 1
0x32 2
0x33 3
0x34 4
0x35 5
0x36 6
0x37 7
0x38 8
0x39 9
То есть для изменения цифры достаточно будет изменить младшую тетраду байта. Ещё раз проверяем правильность коррекции серийного номера.
8. Сохраняем файл (F6) и выходим (Esc, Esc). Можно, проверки ради, открыть образ и проверить обновлённую таблицу разделов: fdisk flash.img (q - выход без сохранения).
В предыдущей инструкции я писал:
"Так как раздел с данными пользователя отформатирован в FAT32 resize файловой системы не требуется."
Это всё глупости, оказывается требуется и ещё как, но об этом позже.
9. Теперь образ готов для записи на новую карту памяти.
9.1. Пишем:
dd if=flash.img of=/dev/sde status=progress
Внимание! Трижды удостоверьтесь в том, что в параметре of указано правильное устройство: карта памяти. Иначе можно затереть разделы на одном из жёстких дисков ПК и последствия будут печальны.
10. Делаем resize файловой системы первого раздела (раздел под книги пользователя, см. замечание выше).
10.1. Форматируем.
mkfs -t vfat /dev/sde1
10.2. Создаём точки монтирования для раздела 1 и его копии с образа:
mkdir /mnt/sde1
mkdir /mnt/sdx1
10.3. Создаём петлевое устройство:
losetup -fP flash.img
10.4. Ищем, как система назвала его:
fdisk -l
У меня получилось: /dev/loop0.
10.5. Монтируем раздел 1:
mount /dev/sde1 /mnt/sde1
mount /dev/loop0p1 /mnt/sdx1
10.6. Копируем содержимое /mnt/sdx1 в /mnt/sde1 (из образа на карту памяти, то есть восстанавливаем то, что мы затёрли форматированием раздела):
cp -r /mnt/sdx1/* /mnt/sde1
10.7. Размонтируем разделы:
umount /mnt/sdx1
umount /mnt/sde1
10.8. Удаляем точки монтирования:
rmdir /mnt/sdx1
rmdir /mnt/sde1
10.9. Останавливаем петлевое устройство:
losetup --detach /dev/loop0
11. Создаём привязку серийного номера устройства и новой карты памяти.
11.1. Создаём точку монтирования девятого раздела:
mkdir /mnt/sde9
11.2. Монтируем девятый раздел:
mount /dev/sde /mnt/sde9
Там, в корне раздела, должен находиться скрытый файл с названием .freezestatus и размером четыре байта. Именно он и содержит привязку серийного номера устройства и внутренней карты памяти.
11.3. Генерируем новый файл .freezestatus и заменяем им существующий /mnt/sde9/.freezestatus.
11.3.1. Переходим в папку с исходниками, вытряхнутыми из архива (см. п. 2):
dicts
serial
PocketBook.sln
Makefile.mingw
Makefile
11.3.2. Собираем всё:
make
11.3.3. Заходим в папку serial.
11.3.4. Выполняем:
./serial --serial_number YT4517001251004000Y5 --sd_serial 0x12345678
Внимание! Вместо YT4517001251004000Y5 и 0x12345678 должны быть ваши серийники читалки и новой карты памяти соответственно.
11.3.5. Заменяем существующий .freezestatus на полученный:
cp .freezestatus /mnt/sde9/.freezestatus.
y
11.3.6. Возвращаем на место владельца и разрешения:
chown root:root /mnt/sde9/.freezestatus
chmod 400 /mnt/sde9/.freezestatus
Посмотреть владельца и действующие разрешения можно так:
ls -al
11.4. Правим файл fwinfo.txt, вписывая туда информацию об изменившемся серийном номере устройства и карты памяти:
Serial number:YT4507001261002000Y5;
sdsn: 0xc3f08084
Этот файл носит информационный характер. Поэтому править его необязательно. То есть этот шаг можно и пропустить.
12. "Лицензируем" словари. Да, лицензия словарей тоже привязана к серийному номеру устройства.
12.1. Переходим в папку dicts.
12.2. Выполняем:
./dicts --batch --serial_number YT4517001251004000Y5 /mnt/sde9/dictionaries
Внимание! Вместо YT4517001251004000Y5 должен быть указан серийный номер вашей читалки.
12.3. Возвращаем на место владельца файлов и их разрешения:
chown 102:102 *.lic
chmod 660 *.lic
12.4. Размонтируем раздел и удаляем точку монтирования. Они больше не нужны:
umount /mnt/sde9
rmdir /mnt/sde9
13. Готово.
14. Эту инструкцию можно немного упростить: если не менять серийный номер внутри образа, то не будет необходимости генерировать новые лицензии для словарей. То есть пункты 7 и 12 можно будет пропустить. Внешне это упрощение будет заметно при сравнении, серийных номеров с задней крышки устройства и в меню устройства.
Как по мне, так эта игра не стоит свеч, ибо указанные пункты не должны потребовать много времени.
14.1. В случае, если карта памяти нормально читается, то можно использовать образ оригинальной карты памяти по инструкции выше. При этом пункты 1, 7 и 12 пропускаются.
14.1.1. Считать оригинальную карту памяти можно, например, так:
dd if=/dev/sde of=flash.bin status=progress
Вместо /dev/sde необходимо подставить название блочного устройства олицетворяющего карту памяти.
Посмотреть блочные устройства можно так:
fdisk -l
15. Версии программ для Windows cобрать из исходников можно при помощи
Microsoft Visual Studio или
Mingw-w64.