Ver mensagens sem resposta | Ver tópicos ativos Hoje é 17 Dez 2017, 18:35



Responder Tópico  [ 7 Mensagens ] 
 [TUTO] GS2: Instalar Debian + particionamento do SD interno 
Autor Mensagem
Hello Android
Hello Android

Data de registro: 29 Ago 2010, 18:25
Mensagens: 46
Mensagem [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.


Start? 13.2GB
End? 15.2GB
 


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.100
aline@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
Perfil
Android application
Android application

Data de registro: 03 Ago 2010, 13:40
Mensagens: 88
Mensagem 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
Perfil
Anatomy of an App
Anatomy of an App

Data de registro: 13 Ago 2010, 14:41
Mensagens: 155
Mensagem 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
Perfil
What is Android?
What is Android?

Data de registro: 09 Nov 2010, 14:39
Mensagens: 2
Mensagem 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
Perfil
Android application
Android application

Data de registro: 22 Dez 2009, 22:24
Mensagens: 98
Mensagem 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
Perfil
Google employee
Google employee

Data de registro: 04 Ago 2009, 18:52
Mensagens: 5044
Localização: Manaus
Mensagem 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.


:lol: :lol: .... uso Ubuntu em meu notebook pessoal, mas servidores só Slackware ou BSD /uu

+1 - Excelente tópico!


[ ]'s

_________________
#-------------------------------------------//--------------------------------------------------#
Device: LG G3 // Unlocked // Rooted // ROM: Stock

I have ORD
Followme
I'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
Perfil WWW
What is Android?
What is Android?

Data de registro: 19 Dez 2010, 14:00
Mensagens: 6
Mensagem 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
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 7 Mensagens ] 

Quem está online

Usuários vendo este fórum: ac0502, alexandrefett, allone, aluclinux, Andre Brito, ANDRE FELIX DE ASSIS, andreluzz, AT-AT, baudamix, bbourbon, BloggerCaOS, bocajunior88, bomcabelo, brpiassa, bruno.abd, brunomalka, Bruto_JPO, caciara, Caique, canaville, capo, carlosavasconcelos, cehills, Chaves, claudio, Cleiton, Cr-Informática, Cynthia, danielbfranco, Darkluna, Darth Sidious, diemesleno, dikiloco, DITÃO, Dookan, ederson_4, eduzortea, Everton Moreira, fabielp, fabric01, fabricioLeonard, felipecomp19, felipedsilva, fernandofsf, fmakula, frederico.affini, fredjpa, furlanrapha, gapler, garretereis, Geire Robson Gadelha, gfgodoy, Google Android, Gooooogle, gutomilani, hellbest, henrique.cardoso, henrique.garcia, igor_meneguzzo, jairo, jlucasps, jmarcos14, José Guilherme, jrchuteboxe, jrsilva, Juninhooooo, JuniorE, juniorfranca, laurj, Leonardo, Leonardo333, lfalcao, linukiss, LordElfo, luizfilipe, marceloaragao, marcelosv, marciosoliveira, Microdesk, mikasjau, mirelli, mlemos, mrkensley, nakahara, nandokanarski, nightwatch, nivaldo, nocivus, nsansilva, Patrick, peterson.bah, pgbatera, phobos, phpower1, polonia, Qui-Gon Jinn, Rafael Alencar, rafael.winter, Rainha Amidala/Padmé, rananfu, reginaldofdias, regisjj, retardad0, robertofonte, robsonoracle, rodrigosalfer, rogerio, Roll, rtodao, ruizsa, sasuke_sarutobi, schiroky, SERGIO RODRIGUES, shibutani, Shmi Skywalker, siker C3PO, soulmachine, talves, tiago, Tiago Sousa Roch, tirloni, Toks, ton.soares, tonical, Topeca, Transtago, ubiratan, valaszek, wcaciano, weber, wender, Wookiees, xGambit, YaCy, Yuri, zaquiel, zenden1503 e 5 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

Procurar por:
cron

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi