Raspbian w Qemu

10 sierpnia 2013 blog raspberry qemu

Uruchomienie systemu dla Raspberry Pi (Raspbian) w emulatorze Qemu.

Uruchomienie

Usuni臋cie zawarto艣ci pliku ld.so.preload jest konieczne, 偶eby m贸c si臋 zalogowa膰.

Montowanie partycji z obrazu:

$ sudo fdisk -lu 2013-07-26-wheezy-raspbian.img 

Dysk 2013-07-26-wheezy-raspbian.img: 1939 MB, bajt贸w: 1939865600, sektor贸w: 3788800
Jednostka = sektor贸w, czyli 1 * 512 = 512 bajt贸w
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: dos
Identyfikator dysku: 0x00047c7a

					Urz膮dzenie Rozruch   Pocz膮tek      Koniec   Blok贸w   ID  System
2013-07-26-wheezy-raspbian.img1            8192      122879       57344    c  W95 FAT32 (LBA)
2013-07-26-wheezy-raspbian.img2          122880     3788799     1832960   83  Linux

Offset do polecenia mount mo偶na otrzyma膰 poprzez pomno偶enie bloku pocz膮tkowego (122880) przez 512.

$ sudo fdisk -lu 2013-07-26-wheezy-raspbian.img | grep img2 | awk '{print($2*512);}'
62914560

Czyli zamontowanie sprowadza si臋 do polecenia:

mkdir /mnt/qemuimg
sudo mount 2013-07-26-wheezy-raspbian.img -o offset=62914560 /mnt/qemuimg

Nast臋pnie:

# czy艣cimy ld.so.preload
sudo rm -f /mnt/qemuimg/etc/ld.so.preload
sudo touch /mnt/qemuimg/etc/ld.so.preload
# odmontowujemy
sudo umount /mnt/qemuimg

艢ci膮gni臋cie kernela:

wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu

W艂膮czenie systemu:

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 ro" -net nic,vlan=1 -net user,vlan=1 -hda 2013-07-26-wheezy-raspbian.img -redir tcp:5022::22

Powi臋kszenie dost臋pnego miejsca

Mo偶na wykona膰 dopiero po instalacji i wst臋pnej konfiguracji systemu!

Powi臋kszamy plik i montujemy go jako urz膮dzenie loop:

truncate -s 8G 2013-07-26-wheezy-raspbian.img
sudo losetup -fv 2013-07-26-wheezy-raspbian.img

Uruchamiamy fdisk:

sudo fdisk  /dev/loop0

Wy艣wietlenie listy partycji (litera p):

Witamy w programie fdisk (util-linux 2.23.2).

Zmiany pozostan膮 tylko w pami臋ci do chwili ich zapisania.
Przed u偶yciem polecenia zapisu prosimy o ostro偶no艣膰.

Polecenie (m wy艣wietla pomoc): p

Wida膰 ju偶 powi臋kszony dysk:

Dysk /dev/loop0: 8589 MB, bajt贸w: 8589934592, sektor贸w: 16777216
Jednostka = sektor贸w, czyli 1 * 512 = 512 bajt贸w
Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512
Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512
Typ etykiety dysku: dos
Identyfikator dysku: 0x00047c7a

 Urz膮dzenie Rozruch   Pocz膮tek      Koniec   Blok贸w   ID  System
/dev/loop0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/loop0p2          122880     3788799     1832960   83  Linux

Usuwamy drug膮 partycj臋 (d, 2):

Polecenie (m wy艣wietla pomoc): d
Numer partycji (1,2, domy艣lnie 2): 
Partycja 2 usuni臋ta

Tworzymy now膮 partycj臋 (n, enter, enter, 122880). Trzeba poda膰 pocz膮tek zgodny z tym, co wida膰 wy偶ej (122880).

Polecenie (m wy艣wietla pomoc): n
Typ partycji:
   p   g艂贸wna (g艂贸wnych: 1, rozszerzonych: 0, wolnych: 3)
   e   rozszerzona
Wyb贸r (domy艣lne p): 
Przyj臋to warto艣膰 domy艣ln膮 p
Numer partycji (2-4, domy艣lnie 2): 
Pierwszy sektor (2048-16777215, domy艣lnie 2048): 122880
Ostatni sektor, +sektor贸w lub +rozmiar{K,M,G} (122880-16777215, domy艣lnie 16777215): 
Przyj臋to warto艣膰 domy艣ln膮 16777215
Partycja 2 typu Linux o rozmiarze 8 GiB ustawiona

Zapisanie zmian (w):

Polecenie (m wy艣wietla pomoc): w
Tablica partycji zosta艂a zmodyfikowana!

Wywo艂ywanie ioctl() w celu ponownego odczytu tablicy partycji.

UWAGA: ponowny odczyt tablicy partycji zako艅czy艂 si臋 b艂臋dem 22: Z艂y argument.
J膮dro nadal u偶ywa starej tablicy. Nowa tablica b臋dzie u偶ywana po
nast臋pnym restarcie systemu albo po uruchomieniu partprobe(8) lub kpartx(8)
Synchronizacja dysk贸w.

Od艂膮czamy urz膮dzenie loop0:

sudo losetup -d /dev/loop0

Po uruchomieniu Raspbiana u偶ywamy resize2fs:

pi@pi:~$ sudo resize2fs /dev/sda2
resize2fs 1.42.5 (29-Jul-2012)
System plik贸w /dev/sda2 jest zamontowany pod /; wymagana zmiana rozmiaru w locie
old_desc_blocks = 1, new_desc_blocks = 1
System plik贸w na /dev/sda2 ma teraz 2081792 blok贸w.

Sprawdzenie:

pi@pi:~$ df -h
System plik贸w  rozm. u偶yte dost. %u偶. zamont. na
rootfs          7,9G  1,5G  6,1G  20% /
/dev/root       7,9G  1,5G  6,1G  20% /
devtmpfs        124M     0  124M   0% /dev
tmpfs            25M  192K   25M   1% /run
tmpfs           5,0M     0  5,0M   0% /run/lock
tmpfs            50M     0   50M   0% /run/shm

Ponowne uruchomienie:

pi@pi:~$ sudo reboot

Uwagi

Warto zajrze膰