У вас в планшете должно быть (с тач-скрина) включено: Настройки -> Приложения -> Разработка -> Отладка по USBdmitriev писал(а):ничего не найдено!Код: Выделить всё
$ adb devices * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached
Android - root-права и другие особенности
Модераторы: Olej, adminn, vikos
Все сообщения не по теме форума будут, без каких либо уведомлений, удаляться, а их авторы - убираться из регистрации.
Язык сообщений - исключительно русский.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android - root-права и другие особенности
Re: Android - root-права и другие особенности
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android - root-права и другие особенности
Хотя идея:Olej писал(а): Большую путаницу создаёт то, что у вас есть (почти наверняка) 2 набора команд, являющихся аналогами GNU shell + утилит:
1. toolbox
2. busybox
- реализовать все команды shell как внутренние для одной и той же программы интерпретатора команд (или busybox, или toolbox)...
- а все остальные консольные команды просто как ссылки на эту программу интерпретатор...
- весьма остроумная идея (для малых систем! ... с ограниченным набором консольных команд).
Насколько я следил, это впервые было реализовано в активно развиваемом и по сейчас проекте busybox ... а уже позже разработчиками Android-ов подхвачено в собственных поделках toolbox... кто во что горазд .
Для программистов это должно быть особенно понятно ... Если написать такой макетный программный код (он настолько простой, что и не программисту должен быть в общих чертах понятен):
Код: Выделить всё
#include <stdio.h>
#include <string.h>
int main( int argc, char *argv[] ) {
char cmd[ 80 ], prg[ 80 ], *s;
int i;
strncpy( (char*)&prg, __FILE__, strchr( __FILE__, '.' ) - __FILE__ );
strcpy( (char*)&cmd, strrchr( argv[ 0 ], '/' ) + 1 );
if( strcmp( prg, cmd ) != 0 ) {
i = 1;
}
else {
strcpy( (char*)&cmd, argv[ 1 ] );
i = 2;
}
printf( "выполняется команда %s с параметрами: ", cmd );
for( ; i < argc; i++ )
printf( "%s ", argv[ i ] );
printf( "\n" );
return 0;
}
Код: Выделить всё
SRC = mybox
SUBDIRS = cp mv ifconfig ip netcfg
all: $(SRC)
@rm -f $(SUBDIRS)
@make link
link:
@list='$(SUBDIRS)'; for subdir in $$list; do \
echo "=============== making link $$subdir ================="; \
(ln -s $(SRC) $$subdir) \
done
clean:
@rm -f $(SRC) $(SUBDIRS)
Код: Выделить всё
bash-4.2$ ls -l
итого 16
lrwxrwxrwx. 1 olej olej 5 сент. 5 00:11 cp -> mybox
lrwxrwxrwx. 1 olej olej 5 сент. 5 00:11 ifconfig -> mybox
lrwxrwxrwx. 1 olej olej 5 сент. 5 00:11 ip -> mybox
-rw-r--r--. 1 olej olej 289 сент. 4 23:34 Makefile
lrwxrwxrwx. 1 olej olej 5 сент. 5 00:11 mv -> mybox
-rwxrwxr-x. 1 olej olej 6466 сент. 5 00:11 mybox
-rw-r--r--. 1 olej olej 558 сент. 5 00:00 mybox.c
lrwxrwxrwx. 1 olej olej 5 сент. 5 00:11 netcfg -> mybox
Код: Выделить всё
bash-4.2$ ./mybox ip 1 2 3 -5
выполняется команда ip с параметрами: 1 2 3 -5
bash-4.2$ ./mybox netcfg 1 2 3 -5
выполняется команда netcfg с параметрами: 1 2 3 -5
bash-4.2$ netcfg 1 2 3 -5
bash: netcfg: команда не найдена
bash-4.2$ ./netcfg 1 2 3 -5
выполняется команда netcfg с параметрами: 1 2 3 -5
bash-4.2$ ./mybox fdisk /dev/sdx
выполняется команда fdisk с параметрами: /dev/sdx
bash-4.2$ ./fdisk /dev/sdx
bash: ./fdisk: Нет такого файла или каталога
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android - root-права и другие особенности
В принципе, там есть где-то опции "передача данных по USB" (не вспомню где), причём их 2: в основную флеш-память устройства, и на SD-карту.dmitriev писал(а):ничего не найдено!Код: Выделить всё
$ adb devices * daemon not running. starting it now on port 5037 * * daemon started successfully * List of devices attached
Вот как примонтировался планшет:Код: Выделить всё
$ ls /run/media/ya/OYSTERST8A4 Alarms dk.pihl.portal launcher mount.txt Notifications Ringtones Android documents LOST.DIR Movies Pictures DCIM Download media Music Podcasts
По-моему, они должны быть запрещены для отладки с adb, т.е. планшет не должен примонтироваться в FS Linux.
Вот как у меня выглядит при работе с adb:
Код: Выделить всё
bash-4.2$ tree /run/media/olej/
/run/media/olej/
`-- 33D6-5316
`-- SD.inf
1 directory, 1 file
P.S. хотя у меня на железке Android старый (конец 2010г.) и картины могут заметно отличаться.
Re: Android - root-права и другие особенности
1) Под root подразумевают в настоящее время две вещи: собственно работу от имени рут - это просто через adb и есть во всех Андроидах и ,во-вторых, монтирование системной директории в режим записи - это в реальных железках обычно запрещенно, чтобы не разбираться с "кирпичами" от ламеров. Запрет сделан просто: системная директория - это сжатая файловая система без возможности записи (принципиально). Изначально оно использовалось, т.к. было мало места на флешке - теперь no write, no root!!!
2) Почему не удается запустить (подконнектится) к Андроиду не понял, но расскажу свой опыт. Я правда делал все с эмуляторами, но проблема была аналогичная - не найдено устройство, ну и ОС была Линукс. У adb там какая-то опция есть - ждать коннекта. Вот через нее чаще удается подцепится. Запускается скрипт с двумя коммандами - первая ждет, вторая цепляется или выполняет то, что нужно. Если не разберетесь, то посмотрю у себя дома. И маленькое замечание : Андроид долго "раскручивается" - уже что-то кажет на экране, а сервис adbd еще не запущен. Ну и вроде если USB-OTG есть - то можно adb по USB юзать. Это я не пробовал.
3) Немного про toolbox и busybox. В toolbox команды сильно урезаны по функционалу и даже синтаксис изменен.
4) Добавка к 1-му. Поэтому увы, если нужно что-то "добавить" нормально, то надо добавлять в прошивку : распаковывать, добавлять и назад паковать. Благо для популярных моделей можно найти тулбоксы, правда приходится с бубном плясать. С другой стороны разработчикам нужно куда-то записывать изменения - поэтому всегда есть директория с правами на запись - можно писать туда, но геморроя больше.
++++++++++
5) Вспомнил : про NAND интересовались. Тут ключевое слово mtd. Часть оттуда монтируется и можно почитать в Андроиде программно и можно вроде и всю память считать, но это уже высший пилотаж. Конкретные имена папок для моего плеера и эмуляторов напишу позднее. Раньше, до Андроида, было проще - все разделы из флешпамяти были доступны и даже на запись. Сейчас штатно есть только flasherase
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android - root-права и другие особенности
А нельзя пробежаться детальнее?tundra37 писал(а):Вкратце пробежался по теме, поэтому могу что-то повторно описать:
Потому как тема сильно интересная...
По поводу возможности записи:tundra37 писал(а): 1) Под root подразумевают в настоящее время две вещи: собственно работу от имени рут - это просто через adb и есть во всех Андроидах и ,во-вторых, монтирование системной директории в режим записи - это в реальных железках обычно запрещенно, чтобы не разбираться с "кирпичами" от ламеров. Запрет сделан просто: системная директория - это сжатая файловая система без возможности записи (принципиально). Изначально оно использовалось, т.к. было мало места на флешке - теперь no write, no root!!!
Код: Выделить всё
bash-4.2$ adb shell
# busybox u_n_a_m_e -a
Linux localhost 2.6.29 #153 Fri Oct 22 07:57:00 HKT 2010 armv6l unknown
Код: Выделить всё
# mount | grep /system
/dev/block/mtdblock2 /system yaffs2 ro 0 0
# echo 12345 > XXX
cannot create XXX: read-only file system
Но по поводу "сжатая файловая система без возможности записи (принципиально)", по-моему, слухи сильно преувеличены:
Код: Выделить всё
# busybox mount -o remount,rw /system
# mount | grep /system
/dev/block/mtdblock2 /system yaffs2 rw 0 0
# echo 12345 > XXX
# cat XXX
12345
# pwd
/system
# ls -l X*
-rw-rw-rw- root root 6 2012-09-06 12:45 XXX
P.S. ну и тем более, что их родной /data монтируется при загрузке RW:
Код: Выделить всё
# mount | grep /data
/dev/block/mtdblock5 /data yaffs2 rw,nosuid,nodev 0 0
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android - root-права и другие особенности
tundra37 писал(а): ++++++++++
5) Вспомнил : про NAND интересовались. Тут ключевое слово mtd. Часть оттуда монтируется и можно почитать в Андроиде программно и можно вроде и всю память считать, но это уже высший пилотаж. Конкретные имена папок для моего плеера и эмуляторов напишу позднее. Раньше, до Андроида, было проще - все разделы из флешпамяти были доступны и даже на запись. Сейчас штатно есть только flasherase
Код: Выделить всё
# mount | grep nand
/dev/block/ndda1 /nand vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
# busybox fdisk -l /dev/block/ndda
Disk /dev/block/ndda: 2923 MB, 2923429888 bytes
1 heads, 64 sectors/track, 89216 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
/dev/block/ndda1 1 89216 2854896 b Win95 FAT32
Partition 1 does not end on cylinder boundary
Код: Выделить всё
# mount | grep mtd
/dev/block/mtdblock2 /system yaffs2 rw 0 0
/dev/block/mtdblock5 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock4 /cache yaffs2 rw,nosuid,nodev 0 0
Re: Android - root-права и другие особенности
На других стоит/стояло squashfs. Где-то я видел "удивительный" ext4 - он sparse(без пустых мест) и то ли из-за этого, то ли из-за загрузки в память - содержит заголовок впереди себя. Чтобы его посмотреть приходится конвертировать в нормальный ext4. Т.к. оно весит 2 Гб, то не слишком удобно разбираться. Кстати, Андроид86 c LiveCD монтирует system с CD/USB как squashfs, а при установке распаковывает ее - вот поэтому такая разница в возможности записи.
2) Про NAND : вы наверное имеет ввиду nonviolated memory. Она маленькая и NAND там не причем. В телефонах флеш-память давно уже NAND и в Андроиде по-моему тоже. Вообще-то она обязана быть NAND, чтобы при записи по одному и тому же адресу - писалось в другой. Или я не прав?
++++++++++++++++++++++++++++++++++++++++++++++
Посмотрел "многострадальный" Iconbit - внутренняя память и есть NAND, т.ч. mtd - это оно и есть.
А ОЗУ - это tmpfs. Правда mount у Андроида очень мутный, сразу и не поймешь и против логики. Похоже механизмы сильно поменялись, в вот выдачу инфы не успели нормально сделать
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android - root-права и другие особенности
1. Конечно отличаются ... начиная с размера (а значит и широты возможностей):tundra37 писал(а):3) Немного про toolbox и busybox. В toolbox команды сильно урезаны по функционалу и даже синтаксис изменен.
Код: Выделить всё
# ls -l /system/bin/*box
-rwxr-xr-x root shell 1745016 2010-09-20 05:43 busybox
-rwxr-xr-x root shell 73228 2010-10-12 13:32 toolbox
2. Синтаксис и у команд в busybox сильно изменён ... в сравнении с вариантом GNU-утилит (например):
Код: Выделить всё
# busybox mount --help
BusyBox v1.8.1 (2007-11-14 10:11:37 EST) multi-call binary
Usage: mount [flags] DEVICE NODE [-o options,more-options]
Mount a filesystem. Filesystem autodetection requires /proc be mounted.
Options:
-a Mount all filesystems in fstab
-r Read-only mount
-t fs-type Filesystem type
-w Read-write mount (default)
-o option:
loop Ignored (loop devices are autodetected)
[a]sync Writes are asynchronous / synchronous
[no]atime Disable / enable updates to inode access times
[no]diratime Disable / enable atime updates to directories
[no]dev Allow use of special device files / disallow them
[no]exec Allow use of executable files / disallow them
[no]suid Allow set-user-id-root programs / disallow them
[r]shared Convert [recursively] to a shared subtree
[r]slave Convert [recursively] to a slave subtree
[r]private Convert [recursively] to a private subtree
[un]bindable Make mount point [un]able to be bind mounted
bind Bind a directory to an additional location
move Relocate an existing mount point
remount Remount a mounted filesystem, changing its flags
ro/rw Mount for read-only / read-write
There are EVEN MORE flags that are specific to each filesystem
You'll have to see the written documentation for those filesystems
Код: Выделить всё
bash-4.2$ mount --help
Usage:
mount [-lhV]
mount -a [options]
mount [options] <source> | <directory>
mount [options] <source> <directory>
mount <operation> <mountpoint> [<target>]
...
Код: Выделить всё
# toolbox mount --help
unknown option -- -mount: invalid option --
Т.е. toolbox - а). это то, что конкретный производитель нагородил в качестве mini-shell как ему вздумалось + б). то, что не имеет никакого описания от этого производителя ("тайна великая есть"(с) ).
И форматы вывода команд различаются:
Код: Выделить всё
# busybox ls -l /sbin
-rwxr-x--- 1 0 0 134176 Jan 1 1970 adbd
# toolbox ls -l /sbin
-rwxr-x--- root root 134176 1970-01-01 03:00 adbd
Код: Выделить всё
# alias bb=busybox
# alias tb=toolbox
# alias
alias tb='toolbox '
alias bb='busybox '
Код: Выделить всё
# ls /system/bin/al*
/system/bin/alsa_amixer
/system/bin/alsa_aplay
/system/bin/alsa_ctl
Код: Выделить всё
# bb ls XXX
XXX
# tb ls XXX
tb: not found
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Android - root-права и другие особенности
Я имею в виду вот что:tundra37 писал(а): 2) Про NAND : вы наверное имеет ввиду nonviolated memory. Она маленькая и NAND там не причем. В телефонах флеш-память давно уже NAND и в Андроиде по-моему тоже. Вообще-то она обязана быть NAND, чтобы при записи по одному и тому же адресу - писалось в другой. Или я не прав?
- NAND - это термин, насколько я понимаю (не сильно ) технологический, конструктивный - Флеш-память:
- как я слышал от коллег разработчиков, флеш-память NAND не годится (или не сильно годится) для выполняемого кода, а подходит для хранения данных...Технология NOR позволяет получить быстрый доступ индивидуально к каждой ячейке, однако площадь ячейки велика. Наоборот, NAND имеют малую площадь ячейки, но относительно длительный доступ сразу к большой группе ячеек. Соответственно различается область применения: NOR используется как непосредственная память программ микропроцессоров и для хранения небольших вспомогательных данных.
- (но всё со временем сильно меняется, и теми же терминами начинают называть совсем другие вещи)
- это с реальной железки:
Код: Выделить всё
# busybox df
Filesystem 1k-blocks Used Available Use% Mounted on
tmpfs 68664 12 68652 0% /dev
tmpfs 4096 0 4096 0% /sqlite_stmt_journals
tmpfs 1024 0 1024 0% /broadcasting
/dev/block/mtdblock2 153600 115664 37936 75% /system
/dev/block/mtdblock5 297984 77164 220820 26% /data
/dev/block/mtdblock4 40960 10796 30164 26% /cache
/dev/block/ndda1 2852992 37712 2815280 1% /nand
Код: Выделить всё
# ls -l /dev/block/mtdblock*
brw------- root root 31, 0 2009-09-02 05:30 mtdblock0
brw------- root root 31, 1 2009-09-02 05:30 mtdblock1
brw------- root root 31, 2 2009-09-02 05:30 mtdblock2
brw------- root root 31, 3 2009-09-02 05:30 mtdblock3
brw------- root root 31, 4 2009-09-02 05:30 mtdblock4
brw------- root root 31, 5 2009-09-02 05:30 mtdblock5
brw------- root root 31, 6 2009-09-02 05:30 mtdblock6
brw------- root root 31, 7 2009-09-02 05:30 mtdblock7
brw------- root root 31, 8 2009-09-02 05:30 mtdblock8
Код: Выделить всё
# ls -l /dev/block/ndd*
brw-rw-rw- root root 240, 0 2009-09-02 05:30 ndda
brw------- root root 240, 1 2009-09-02 05:30 ndda1
Ну и:
Код: Выделить всё
# busybox fdisk -l /dev/block/ndda
Disk /dev/block/ndda: 2923 MB, 2923429888 bytes
1 heads, 64 sectors/track, 89216 cylinders
Units = cylinders of 64 * 512 = 32768 bytes
Device Boot Start End Blocks Id System
/dev/block/ndda1 1 89216 2854896 b Win95 FAT32
Partition 1 does not end on cylinder boundary
MIDX5A Hardware Configurations
CPU:
TELECHIPS8902
ARM1176JZ(F)-S up to 800MHz
SUPPORT 3D GAME/MAP/DYNAMIC PIC.
MEMORY:
256M DDR2
BUILT-IN 4GB/8GB/16GB/32GB
NAND FLASH:
SUPPORT SD/SDHC CARD,MAX UP TO 32GB
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей