|
Página 1 de 1
|
[ 7 Mensagens ] |
|
[TUTO] GS2: Instalar Debian + particionamento do SD interno
Autor |
Mensagem |
alinefr
Hello Android
Data de registro: 29 Ago 2010, 18:25 Mensagens: 46
|
 [TUTO] GS2: Instalar Debian + particionamento do SD interno
Não é necessário particionar seu SD card para instalar uma distro Linux como Debian ou Ubuntu. Há vários tutoriais pela web explicando como instalar usando um dispositivo loop. Então porque particionar? A finalidade da minha instalação, a princípio é montar um ambiente de desenvolvimento web portátil, que eu possa andar com ele no bolso e plugar em qualquer computador e trabalhar a partir dele. O loop é uma solução simples e prática, mas para um ambiente robusto ele tem alguns problemas. O que é o dispositivo loop?Nos sistemas operacionais Unix-like (Linux, Mac OSX, [Free|Open|Net]BSD, Solaris, etc) tudo é um arquivo ou diretório. Mas existem alguns tipos especiais de arquivos conhecidos como Device files (arquivos de dispositivos). Estes arquivos representam interfaces entre o kernel space e o user space (o restante do sistema operacional que não o kernel). Há dois tipos de device files: - Character devices: são dispositivos do qual o sistema transmite um caracter por vez. Ex: teclado, touch screen, teclas de volume, USB. Existe um character device para cada um destes dispositivos. Eles ficam todos em /dev .
- Block devices: são dispositivos do qual o sistema transmite os dados em blocos (uma sequëncia de bits). Ex: no Android sdcard, alocação de espaço na memória RAM. Em outros sistemas operacionais: CDROMs, discos rígidos. No android estes dispositivos ficam todos em um único diretório: /dev/block.
Loop devices são pseudo block devices, dispositivos que tornam um arquivo acessível como se fosse um block device. A maravilha dos loop devices é tornar possível que com um arquivo num sistema de arquivos qualquer eu possa construir um outro sistema de arquivos que não precisa ser o mesmo que abriga meu arquivo e montá-lo no meu sistema como se fosse um disco rígido ou um CDROM ou um sdcard no caso do Android. Na prática o que fazemos é: criamos um arquivo loop dentro de um sistema de arquivos fat32. Este arquivo é associado a um block device (/dev/loop0 por exemplo). Formatamos num sistema de arquivos compatível com Linux (ext3, por exemplo) e montamos ele em um diretório (por exemplo: /data/local/mnt/Linux) como se fosse um sdcard. Para experimentação, usar um loop device é uma solução simples e eficiente: não é necessário particionar seu sdcard e consequentemente você não vai precisar alterar nada no seu Android. Mas para uso em produção há problemas: - No caso do GSII não temos espaço suficiente na memória interna para armazenar um sistema Linux. Eu preciso de pelo menos 2GB. Logo, se eu for usar loop device vou armazenar ele no meu sdcard interno. Acontece que o sdcard interno, cada vez que eu preciso transferir dados para o meu computador ele é automaticamente desmontado do diretório /mnt/sdcard e remontado na interface USB. Se dentro do sdcard interno meu loop estiver montado num diretório do sistema, quando plugar meu cabo USB e montar no meu computador, se eu esquecer de desmontar o loop posso ter problemas sérios, desde perda de dados a corrupção do sdcard interno.
- Performance: Olha o trabalho que meu sistema tem para acessar os dados do meu dispositivo loop: o sistema acessa o dispositivo onde eu tenho fat32 (um sistema de arquivos da era paleolítica) e disponibiliza um arquivo que por sua vez vai ser interpretado como um block device contendo um sistema de arquivos ext[2|3|4]!
Por isso escolhi a solução mais "hardcore". Reparticionar meu sdcard interno e criar uma nova partição. Assim invés de usar um pseudo block device (loop) eu usei um real block device (/dev/block/mmcblk0p13) que representa uma partição real do sdcard interno. Vale alertar que fiz tudo isso sabendo exatamente o que eu estava fazendo, sou sysadmin de sistemas linux por profissão e pesquisei e estudei a fundo sobre o android antes de meter a mão na massa. Se você não sabe o que está fazendo ou o que um comando faz estude, pesquise, goggleie. Ou desista. Eu alertei!!A primeira tarefa era identificar qual a partição do sdcard interno. Pelo mount não ajuda muito porque ele usa um dispositivo de bloco virtual. Precisamos saber qual é o bloco real: / # mount | grep sdcard /dev/block/vold/179:11 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,noatime,nodiratime,uid=1000,gid=1015,fmask=0002,dmask=0002, allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro,discard)
Eu tenho dois discos no sistema: mmcblk0 e mmcblk1. mmcblk1 é evidentemente meu sdcard externo, então o sdcard interno é mmcblk0, mas há várias partições e eu preciso descobrir qual delas é a partição montada em /mnt/sdcard / # ls /dev/block/mmcblk mmcblk0 mmcblk0p11 mmcblk0p3 mmcblk0p6 mmcblk0p9 mmcblk0p1 mmcblk0p12 mmcblk0p4 mmcblk0p7 mmcblk1 mmcblk0p10 mmcblk0p2 mmcblk0p5 mmcblk0p8 mmcblk1p1
Pelo fdisk eu consigo ver que existe uma partição primária usando GPT como esquema de particionamento. / # fdisk /dev/block/mmcblk0
The number of cylinders for this disk is set to 1915. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/block/mmcblk0: 15.7 GB, 15756951552 bytes 255 heads, 63 sectors/track, 1915 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/block/mmcblk0p1 1 1916 15387647+ ee EFI GPT
Pesquisando um pouco descobri que o GNU parted suporta GPT. Meu GSII não vem com parted. Gastei horas até chegar neste fórum aqui onde tem o binário do parted estático, prontinho pra uso. Fiz o download do zip e peguei só o binário "parted" mesmo e copiei para /system/xbin. Por padrão essa partição está apenas como leitura, mas é só remontar ela com rw: / # mount | grep system /dev/block/mmcblk0p9 on /system type ext4 (ro,relatime,barrier=1,data=ordered) / # mount -t ext4 -o remount,rw /dev/block/mmcblk0p9 /system / # mount | grep system /dev/block/mmcblk0p9 on /system type ext4 (rw,relatime,barrier=1,data=ordered) / # cd /mnt/sdcard/download/ /mnt/sdcard/download # unzip sdparted-recovery.zip Archive: sdparted-recovery.zip inflating: META-INF/MANIFEST.MF inflating: META-INF/CERT.SF inflating: META-INF/CERT.RSA inflating: META-INF/com/google/android/update-script inflating: links.sh inflating: sdparted/e2fsck inflating: sdparted/mke2fs inflating: sdparted/parted inflating: sdparted/resize2fs inflating: sdparted/sdparted inflating: sdparted/tune2fs /mnt/sdcard/download # cp sdparted/parted /system/xbin/
O manual do parted me ajudou na tarefa. / # parted /dev/block/mmcblk0 GNU Parted 1.8.8.1.179-aef3 Using /dev/block/mmcblk0 Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print print Model: MMC VYL00M (sd/mmc) Disk /dev/block/mmcblk0: 15.8GB Sector size (logical/physical): 512B/512B Partition Table: gpt
Number Start End Size File system Name Flags 1 4194kB 25.2MB 21.0MB ext4 EFS 2 25.2MB 26.5MB 1311kB SBL1 3 27.3MB 28.6MB 1311kB SBL2 4 29.4MB 37.7MB 8389kB PARAM 5 37.7MB 46.1MB 8389kB KERNEL 6 46.1MB 54.5MB 8389kB RECOVERY 7 54.5MB 159MB 105MB ext4 CACHE 8 159MB 176MB 16.8MB MODEM 9 176MB 713MB 537MB ext4 FACTORYFS 10 713MB 2861MB 2147MB ext4 DATAFS 11 2861MB 15.2GB 12.3GB fat32 UMS 12 15.2GB 15.8GB 537MB ext4 HIDDEN
Enfim a tabela de partições do meu GSII. A partição que eu preciso alterar é a 11, o dispositivo de bloco dela consequentemente é /dev/block/mmcblk0p11. Pra mim conseguir alterar a partição ela precisa estar desmontada. 1º eu desmontei pelo celular mesmo, em "Settings" -> "Storage" o meu sdcard externo. Não existe a opção de fazer isso para o USB storage, é preciso fazer na unha. / # umount /mnt/sdcard umount: can't umount /mnt/sdcard: Device or resource busy
Pra saber quais processos estão usando a partição é só usar o comando fuser e matar eles com kill. Se o kill sozinho não resolver, kill -9 nele! / # fuser -m /mnt/sdcard 3426 3767 4805 / # kill 3426 3767 4805 / # fuser -m /mnt/sdcard 4805 / # kill 4805 / # fuser -m /mnt/sdcard 4805 / # kill 4805 / # fuser -m /mnt/sdcard 4805 / # kill -9 4805 / # fuser -m /mnt/sdcard / # umount /mnt/sdcard
Agora começa a diversão: / # parted /dev/block/mmcblk0 GNU Parted 1.8.8.1.179-aef3 Using /dev/block/mmcblk0 Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print print Model: MMC VYL00M (sd/mmc) Disk /dev/block/mmcblk0: 15.8GB Sector size (logical/physical): 512B/512B Partition Table: gpt
Number Start End Size File system Name Flags 1 4194kB 25.2MB 21.0MB ext4 EFS 2 25.2MB 26.5MB 1311kB SBL1 3 27.3MB 28.6MB 1311kB SBL2 4 29.4MB 37.7MB 8389kB PARAM 5 37.7MB 46.1MB 8389kB KERNEL 6 46.1MB 54.5MB 8389kB RECOVERY 7 54.5MB 159MB 105MB ext4 CACHE 8 159MB 176MB 16.8MB MODEM 9 176MB 713MB 537MB ext4 FACTORYFS 10 713MB 2861MB 2147MB ext4 DATAFS 11 2861MB 15.2GB 12.3GB fat32 UMS 12 15.2GB 15.8GB 537MB ext4 HIDDEN
Eu decidi deixar 2 GB para minha nova partição onde vou instalar meu Debian. Agora, qualquer comando que for executar precisa ter cuidado, um comando errado e byebye GSII. (parted) resize 11 Start? [2861MB]
Aqui eu só apertei "enter". Não quero alterar o início da partição. End? [15.2GB]? 13.2GB (parted) print print Model: MMC VYL00M (sd/mmc) Disk /dev/block/mmcblk0: 15.8GB Sector size (logical/physical): 512B/512B Partition Table: gpt
Number Start End Size File system Name Flags 1 4194kB 25.2MB 21.0MB ext4 EFS 2 25.2MB 26.5MB 1311kB SBL1 3 27.3MB 28.6MB 1311kB SBL2 4 29.4MB 37.7MB 8389kB PARAM 5 37.7MB 46.1MB 8389kB KERNEL 6 46.1MB 54.5MB 8389kB RECOVERY 7 54.5MB 159MB 105MB ext4 CACHE 8 159MB 176MB 16.8MB MODEM 9 176MB 713MB 537MB ext4 FACTORYFS 10 713MB 2861MB 2147MB ext4 DATAFS 11 2861MB 13.2GB 10.3GB fat32 UMS msftres 12 15.2GB 15.8GB 537MB ext4 HIDDEN
Agora minha partição 11 termina em 13.2GB. Hora de criar a nova partição. (parted) mkpartfs mkpartfs Partition name? []? LINUX File system type? [ext2]?
File system type vai ser ext2, meu parted não suporta ext4, mas nada me impede de usar um busybox com suporte a ext4 e reformatar como ext4. Minha partição ficou exatamente entre as partições 11 e 12. Enfim, minha nova tabela de partições: / # parted /dev/block/mmcblk0 GNU Parted 1.8.8.1.179-aef3 Using /dev/block/mmcblk0 Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) print print Model: MMC VYL00M (sd/mmc) Disk /dev/block/mmcblk0: 15.8GB Sector size (logical/physical): 512B/512B Partition Table: gpt
Number Start End Size File system Name Flags 1 4194kB 25.2MB 21.0MB ext4 EFS 2 25.2MB 26.5MB 1311kB SBL1 3 27.3MB 28.6MB 1311kB SBL2 4 29.4MB 37.7MB 8389kB PARAM 5 37.7MB 46.1MB 8389kB KERNEL 6 46.1MB 54.5MB 8389kB RECOVERY 7 54.5MB 159MB 105MB ext4 CACHE 8 159MB 176MB 16.8MB MODEM 9 176MB 713MB 537MB ext4 FACTORYFS 10 713MB 2861MB 2147MB ext4 DATAFS 11 2861MB 13.2GB 10.3GB fat32 UMS msftres 13 13.2GB 15.2GB 2017MB ext2 LINUX 12 15.2GB 15.8GB 537MB ext4 HIDDEN
Agora a instalação do Debian no meu GSII. Usei este aplicativo do Market. O ponto de montagem eu criei manualmente pelo terminal: mkdir -p /data/local/mnt/Linux O cuidado aqui é na escolha do block device e do ponto de montagem. Tenha certeza de escolher o dispositivo da partição que você criou. Se escolher o dispositivo errado você vai formatar uma partição errada e destruir todo seu conteúdo. CUIDADO!!As opções que eu inseri foram: Menu -> Setup Installation type Install in a block device [x] Use loop file [ ] General dist conf Server [ ] Preferred distribution [debian] Distribution version [stable] Hostname [malaika] Domain name [localdomain] Chroot point: /data/local/mnt/Linux Name of chroot launcher [ch] Loop Configuration Desabilitado Block Configuration Ext version. [2] Block device name [mmcblk0p13] <-- Esta é a partição que eu criei anteriormente. Gui Configuration Console refresh latency [10] Package Software configuration Bind Android [ ] Send debug logs [x] Screen always on [x] Use embedded Busybox [x] Allow write on /system [x] Depois é só seguir os passos: Format block device Mount block device Install distribution in block device Install linuxchroot script in Android. Agora, é só executar "ch" no terminal (eu uso ConnectBot) Com o openssh-server instalado via aptitude me conecto via ssh: aline@luiza-mouraria ~ $ ssh aline@192.168.2.100aline@192.168.2.100's password: The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Sep 7 22:16:27 2011 from 192.168.2.101 aline@malaika:~$ uname -a Linux malaika 2.6.35.7-I9100UHKE4-CL218676 #2 SMP PREEMPT Thu May 19 15:08:29 KST 2011 armv7l GNU/Linux
|
11 Set 2011, 01:32 |
|
 |
francilan
Android application
Data de registro: 03 Ago 2010, 13:40 Mensagens: 88
|
 Re: [TUTO] GS2: Instalar Debian + particionamento do SD inte
Cara, parabens!!
Gostaria de entender um pouco disso, pra tentar fazer.
Acho que pra ter isso no meu aparelho so se algum dia alguem lancar alguma ferramenta que faca todo o trabalho, de qualquer forma parabens!!
|
11 Set 2011, 22:38 |
|
 |
toninsc
Anatomy of an App
Data de registro: 13 Ago 2010, 14:41 Mensagens: 155
|
 Re: [TUTO] GS2: Instalar Debian + particionamento do SD inte
caracaaaa isso é o q chamo de manjar de linux... fico deslumbrado só de ver a profundidade da explicação... sem palavras.... to boquiaberto!
|
17 Set 2011, 02:35 |
|
 |
tjunio
What is Android?
Data de registro: 09 Nov 2010, 14:39 Mensagens: 2
|
 Re: [TUTO] GS2: Instalar Debian + particionamento do SD inte
Gostaria de solicitar a voce um tutorial mais detalhado pra leigos em Linux .... Gostaria muito de fazer isso com meu Galaxy S2 mas temo em fazer algo errado ... Aguardo anciosamente uma resposta ....
|
30 Set 2011, 19:13 |
|
 |
danbroken
Android application
Data de registro: 22 Dez 2009, 22:24 Mensagens: 98
|
 Re: [TUTO] GS2: Instalar Debian + particionamento do SD inte
Nossa, parabéns. Nos velhos tempos quando eu compilava o kernel do Slackware e Gentoo e fazia uns programinhas para Linux em Python e Bash, eu até arriscaria. Mas hoje dá uma preguiça só de pensar em tanta linha de comando. Estou tão preguiçoso que só uso Ubuntu. Mas é um excelente trabalho.
_________________ Motorola Milestone Android 2.3.5 CyanogenMod 7.1.0 R14 Motorola Xoom 3G Android 3.2 Kernel Tiamat 2.0 Hammerhead Rom 2.1 Samsung Galaxy SII Android 2.3.7 CyanogenMod 7.1.0 Stable
|
21 Out 2011, 00:24 |
|
 |
fabioccoelho
Google employee
Data de registro: 04 Ago 2009, 18:52 Mensagens: 5044 Localização: Manaus
|
 Re: [TUTO] GS2: Instalar Debian + particionamento do SD inte
danbroken escreveu: Nossa, parabéns. Nos velhos tempos quando eu compilava o kernel do Slackware e Gentoo e fazia uns programinhas para Linux em Python e Bash, eu até arriscaria. Mas hoje dá uma preguiça só de pensar em tanta linha de comando. Estou tão preguiçoso que só uso Ubuntu. Mas é um excelente trabalho.  .... uso Ubuntu em meu notebook pessoal, mas servidores só Slackware ou BSD +1 - Excelente tópico! [ ]'s
_________________#-------------------------------------------//--------------------------------------------------# Device: LG G3 // Unlocked // Rooted // ROM: Stock I have ORDFollowmeI'm a Droid Collector!Devices History: [i] Retired G1 Dream/HTC Magic/HTC Hero/Sony Xperia 10/HTC Desire/Google N1/LG O2X/HTC Sensation/HTC XE/HTC Flyer 3G/SGSII SGSIII (New)/HOX (New) ;
|
30 Dez 2011, 18:44 |
|
 |
zekks
What is Android?
Data de registro: 19 Dez 2010, 14:00 Mensagens: 6
|
 Re: [TUTO] GS2: Instalar Debian + particionamento do SD inte
Muito massa, ainda não estou com meu GSII, chega somente na semana que vem, mas após uma semana de uso dele (para aproveitar ao menos este tempo se fizer besteira xD) testo esse procedimento.
Parabéns por compartilhar conosco. Abraço.
|
07 Fev 2012, 22:37 |
|
|
|
Página 1 de 1
|
[ 7 Mensagens ] |
|
Quem está online |
Usuários vendo este fórum: Adeja, ademir.carvalhojr, afpcp, akaytatsu, alex, alexvbh, am2net, amarildolacerdas, ANDRE FELIX DE ASSIS, andreluiz, Andrey, Androidthebest, Aniquiler, ariostorecco, arnaldo.miranda, Ask Jeeves, axellsan, b7web, Bass, beeshop, Berbert, Beru Lars, BiG_SerGiO, BloggerCaOS, BOMBER27, BornSlip, brcamp, breko, brian15, brunogh, Bruto_JPO, caliow, capo, Carlos Almeida, cassiano, Clauber, compto, culumin, cyzko, Daniel Batista, danielbfranco, deborazb, denisfln, Diego, dikiloco, diogeneskelsen, dkclan, drjunior, edsonel, Eduardo, eduardo.ali, EduardoYC, elisa, eloilton, erikopa, estratec, faco, Felipe, felipe.buarque, Fernando Cardia, fernando neves, fernandofsf, Filipe larizzatti, flaviojps, FVB, gedoor, germanno, Governador Wilhuff Tarkin, Guilherme, gusrp, humberto, ismavolk, jacksonvpj, jandersonjc, JAndroid, Jango Fett, jijo, JMurray, johnnyjx, juliherms, juliomar, Juninhooooo, jwv, Ki-Adi-Mundi, Kureiton, Lelinho, Leonardo, lhdiassilva, lucastgomes, luiz, luizcyber, Mace Windu, Marcelo Lima, MarceloMC, marcosandreao, mendes_lu, mmfsndroid, Mvitor, niloleite, nirvana, nivea, nobrejack, nsansilva, Nute Gunray, otium, pgsnit, phfmendes, Princesa Léia Organa, Qui-Gon Jinn, rafaelvital, ramonsiebra, raninhofernandes, raragao, rcotonet, regisjj, renanpl, ricardoogliari, rocha, Rodrigo, rogeriokta, ROGÉRIO RODRIGUES, Romulo, rotilho, Rufino, sandro, sasuke_sarutobi, shadow, shazaum, SidneiCP, siker C3PO, tChAnDy, Teodoro, thanaptos, tricx16, valaszek, Vania, vanmars, W3 [Sitesearch], Wesleyceraso, weverton, WiseNut, wylken, xa:=zin, yeltsinlima, Yuri, yuri82, zeantonio e 4 visitantes |
|
Você não pode criar novos tópicos neste fórum Você não pode responder tópicos neste fórum Você não pode editar suas mensagens neste fórum Você não pode excluir suas mensagens neste fórum Você não pode enviar anexos neste fórum
|
|