Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
Скрыть от глаз людских script.bin
xaba
Добавлено 06.12.2016 16:39
0
Сообщение: 1
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Имеется плата Sunshine-A20 Dual-Core ARM Cortex-A7
Linux, ядро 3.4.103.

Хочу скрыть от глаз людских script.bin в папке /boot
Так вот интересно, какие есть варианты ?
Статически в ядро? Не могу найти где он в ядре считывает этот файл или может каким то образом uboot передает его?

зы. Не спрашивайте зачем, просто ХОЧУ...
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 06.12.2016 17:34 Сообщение: 2
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Нашел, вроде как бы uboot грузит.
ext2load mmc 0 0x43000000 boot/script.bin

те получается мне надо его в uboot запихнуть...
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 06.12.2016 17:42 Сообщение: 3
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
можно и в бинарник юбута встроить, но тогда потеряется гибкость для смены конфигурации..
может проще слегка зашифровать (банально проинвертировать) свой script.bin и выкладывать на обычное место.. а в юбуте прописать копирование скриптом и дешифровку уже в памяти..

в ядре можно начать с файла
arch/arm/plat-sunxi/script.c

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 06.12.2016 18:00 Сообщение: 4
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Идея конечно интересна, но я упорный, хочу убрать))

Я так понимаю в ядре прописан уже адрес 0x43000000?
И получается вроде как просто ...
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 06.12.2016 18:07 Сообщение: 5
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Сразу возник вопрос. А реально ли в сыром виде без использования FS скопировать данные с диска, те как бы если бы я копировал командой dd. В самом uboot конечно. Интересно с чего начать ?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 06.12.2016 18:56 Сообщение: 6
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Сразу возник вопрос. А реально ли в сыром виде без использования FS скопировать данные с диска, те как бы если бы я копировал командой dd. В самом uboot конечно. Интересно с чего начать ?

под рукой не на чем посмотреть - но для nand/mmc/sd можно из юбута прямо командами тягать данные с носителя без всяких ФС..
имена придуманы для человеков, программам достаточно номер сектора..
начать имеет смысл с команды "help" в юбуте

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 06.12.2016 23:44 Редактировалось 06.12.2016 23:48 Сообщение: 7
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
Вроде как есть возможность mmc read addr blk# cnt

Пробую...
Обнуляю область диска для ядра + пару блоков сверху.

dd if=/dev/zero of=/dev/sdd seek=3000 bs=512 count=25000

3000 стартовый блок для ядра.

для скрипта.

dd if=/dev/zero of=/dev/sdd seek=50000 bs=512 count=100

50000 стартовый блок для скрипта.

Копирую ядро.

dd if=uImage of=/dev/sdd seek=3000 bs=512
21372+1 записей получено
21372+1 записей отправлено
скопировано 10942896 байт (11 MB), 17,9258 c, 610 kB/c

Копирую скрипт.

dd if=script.bin of=/dev/sdd seek=50000 bs=512
64+1 записей получено
64+1 записей отправлено
скопировано 32992 байта (33 kB), 0,0722164 c, 457 kB/c

В uboot загружаю в память так.
ядро:
BB8 = стартовый блок 3000.
537D = размер + 1 блок сверху 21372 + 1. Если не добавить 1 блок, то bad CRC.

mmc read 0x48000000 BB8 537D

MMC read: dev # 0, block # 3000, count 21373 ... 21373 blocks read: OK

скрипт:

C350 = стартовый блок 50000.
40 = размер 64 блока.

mmc read 0x43000000 C350 40

MMC read: dev # 0, block # 50000, count 64 ... 64 blocks read: OK

Загрузка...

bootm 0x48000000

## Booting kernel from Legacy Image at 48000000 ...
Image Name: Linux-3.4.103
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 10942832 Bytes = 10.4 MiB
Load Address: 40008000
Entry Point: 40008000
Verifying Checksum ... OK
Loading Kernel Image ... OK

Starting kernel ...

nonsec: No DTB (using sunxi FEX?), so the non-secure mode is not desired.
Switch to non-secure mode has failed - booting the kernel in secure mode ...


А дальше через несколько секунд перезагрузка((
Пока не могу понять где ошибка(
Может быть ядро не может прочитать script, но почему?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 07.12.2016 00:02 Сообщение: 8
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
1.вот тут
mmc read 0x43000000 C350 40
добавьте (как ядру) +1, чтобы считать все блоки
2. попробуйте из юбута почитать в память содержимое области script.bin - сравнить первые и последние 16 байт с эталоном

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
xaba
Добавлено 07.12.2016 20:03 Редактировалось 07.12.2016 20:53 Сообщение: 9
xaba
4

Пункты: 15268
Регистрация: 23.04.2012
работает)))
Проблема была не в вычислениях, а в том что я каким то образом не тот script.bin подсунул)

Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux