Dobry opis procesu rozruchu Raspberry Pi i struktury partycji dysku?
Co jest przechowywane na każdej partycji (i dlaczego)?
Czy rozruch RPI z karty SD (sektor zero) lub oprogramowanie układowe odczytuje ze struktury dysku?
Zakładam, że będąc stworzonym przez NOOBS kopiowaniem kilku plików w dowolnym systemie operacyjnym, oprogramowanie układowe RPI wie o strukturze dysku MS-DOS (wysokiego poziomu) i znajduje drogę do pamięci SD.
Chcę sklonować dobrą kartę SD na większą kartę SD, aby zwiększyć dostępną przestrzeń.
Czy mogę utworzyć nową kartę SD i podzielić ją na partycje i po prostu dodać każdą partycję do nowego urządzenia? Które partycje są potrzebne?
'linux'
Partycji na nowym urządzeniu być większy niż oryginał, a następnie rozszerzenie przestrzeni dyskowej?
Może sklonuj na nową kartę i rozszerz tylko ostatnią partycję (p6), aby użyć dostępnego miejsca, ale nie chcę używać metody prób i błędów, chcę wiedzieć, jak i dlaczego.
Dlaczego moje pytanie
Większość kart SD RPI ma dwie partycje (fdisk), być może po zainstalowaniu z .img
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 155647 153600 75M c W95 FAT32 (LBA)
/dev/mmcblk0p2 157696 15351807 15194112 7.3G 83 Linux
Mam jednak jedną z 6 partycjami, jest to struktura odziedziczona po NOOBS.
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 8192 1675781 833795 e W95 FAT16 (LBA)
/dev/mmcblk0p2 1679360 15499263 6909952 85 Linux extended
/dev/mmcblk0p3 15499264 15564799 32768 83 Linux
/dev/mmcblk0p5 1687552 1810431 61440 c W95 FAT32 (LBA)
/dev/mmcblk0p6 1818624 15499263 6840320 83 Linux
Myślę, że coś jest nie tak z tym obrazem. Dwie partycje W95?
Chciałbym sklonować tylko odpowiednie partycje na nową kartę. Muszę dużo pracy nad tym działającym SD, aby zacząć wszystko od nowa! (BTW, mam kilka dobrych kopii zapasowych).
Kilka notatek.
Przegroda p1
-rwxr-xr-x 1 root root 18K 2015-03-09 04:45 bootcode.bin
-rwxr-xr-x 1 root root 2.2K 2015-03-09 04:45 INSTRUCTIONS-README.txt
drwxr-xr-x 4 root root 32K 2015-03-09 04:45 os
...
-rwxr-xr-x 1 root root 542K 2015-03-09 04:45 recovery.elf
-rwxr-xr-x 1 root root 0 2015-03-09 04:45 RECOVERY_FILES_DO_NOT_EDIT
-rwxr-xr-x 1 root root 2.1M 2015-03-09 04:45 recovery.img
-rwxr-xr-x 1 root root 20M 2015-03-09 04:45 recovery.rfs
-rwxr-xr-x 1 root root 9.5K 2015-03-09 04:45 riscos-boot.bin
drwxr-xr-x 2 root root 8.0K 2015-12-05 18:13 System Volume Information
Przegroda p2
mount: /dev/mmcblk0p2: can't read superblock
Przegroda p3
-rw-r--r-- 1 root root 274 1969-12-31 19:18 installed_os.json
drwx------ 2 root root 12K 1969-12-31 19:00 lost+found
-rw-r--r-- 1 root root 86 1969-12-31 19:18 noobs.conf
Partycja p4
nie istnieje.
Partycja p5
:
-rwxr-xr-x 1 root root 9.7K 2015-12-01 20:17 bcm2708-rpi-b.dtb
...
-rwxr-xr-x 1 root root 18K 2015-12-01 20:17 bootcode.bin
-rwxr-xr-x 1 root root 120 1979-12-31 19:00 cmdline.txt
-rwxr-xr-x 1 root root 1.5K 2015-11-23 09:01 config.txt
-rwxr-xr-x 1 root root 19K 2015-10-14 05:43 COPYING.linux
...
-rwxr-xr-x 1 root root 9.5K 2015-12-01 20:17 fixup_x.dat
-rwxr-xr-x 1 root root 137 2015-02-16 09:57 issue.txt
-rwxr-xr-x 1 root root 3.9M 2015-12-01 20:17 kernel7.img
...
-rwxr-xr-x 1 root root 591K 2015-12-01 20:17 start_cd.elf
...
Partycja p6
( prawdziwa partycja raspbian )
drwxr-xr-x 2 root root 4.0K 2015-07-28 21:40 bin
drwxr-xr-x 2 root root 4.0K 2015-02-15 09:09 boot
drwxr-xr-x 119 root root 4.0K 2015-12-23 15:36 etc
drwxr-xr-x 4 root root 4.0K 2015-12-19 20:53 home
drwxr-xr-x 15 root root 4.0K 2015-12-20 22:08 lib
drwx------ 2 root root 16K 2015-02-15 06:21 lost+found
....
drwxr-xr-x 12 root root 4.0K 2015-11-04 15:18 var
p2
ma) partycją rozszerzoną - w tym przypadku partycją „Linux” i jest to pojemnik na pozostałe te potrzebne powyżej 4 - i istnieje więcej niż jeden sposób na zorganizowanie tych „logicznych” partycji wewnątrz rozszerzonej.Odpowiedzi:
Mój końcowy wynik migracji na większą kartę SD przy ustawieniu noob jest następujący.
Wykonuję kopię zapasową oryginalnego obrazu na żywo na tymczasowym dysku zewnętrznym, współdzielonym z oknem systemu Windows, wystarczy zapasowa pamięć.
możesz również wykonać kopię zapasową za pomocą win32DiskImager, a następnie nagrałem obraz na większą kartę SD (zwiększyłem z 8 do 16 GB) tym razem, używając win32DiskImager.
Uruchomiłem nowo utworzony SD. W tym momencie SD nadal zachowywał te same partycje, podstawowe, rozszerzone i logiczne. Więc boot powinien działać płynnie.
Za pomocą
Wykonaj zrzut ekranu na żywo z bieżącej tabeli partycji za pomocą
p
polecenia.Usuń nieużywaną i niepotrzebną partycję nr 3 (p3) znajdującą się na końcu fizycznego „dysku” (po partycji rozszerzonej nr 2) za pomocą
d
.Następnie, odważnie usuwając partycję 2 (p2), zagnieżdżona partycja logiczna również zniknie.
Odtwórz partycję rozszerzoną nr 2, ale teraz, korzystając z całej dostępnej przestrzeni.
Aby odtworzyć numer 2, użyj dokładnie tego samego początkowego sektora początkowego i daj
fdisk
sektor końcowy. Użyjp
sprawdzenia i czy typ jest rozszerzony, wpisz „85”, a nowy sektor końcowy jest rzeczywiście większy niż oryginał.Utwórz ponownie dwie poprzednie partycje logiczne: zacznij od partycji logicznej nr 5 (p5); dla sektora początkowego użyj dokładnego sektora z poprzedniego zrzutu ekranu, tak samo jak sektor końcowy (ten dysk logiczny nie powiększy się), użyj,
t
aby ustawić identyfikator nac
(MS-DOS). Następnie odtwórz partycję # 6 (p6) z tym samym sektorem początkowym niż poprzednio, ale z sektorem końcowym wybranym przezfdisk
ip' id
83`.Sprawdź swoje wpisy za pomocą
p
i czy i tylko wtedy, gdy wygląda to dobrze, po prostu napisz tabelę partycji, ww
przeciwnym razie po prostu ^ C i zacznij od nowa.Uruchom ponownie i skrzyżuj palce. Raspbian może zostać ponownie uruchomiony dwukrotnie.
Następnie rozwiń system plików za pomocą
To wynik końcowy, teraz z dodatkowymi 8 GB!
Tak więc teraz mój sektor końcowy to 14 442 496 z 6 840 320.
Rozruch
Wiem, że ten temat jest gdzie indziej, ale dobrze jest wiedzieć.
Raspberry ma dwa wbudowane procesory: GPU (Graphic Processing Unit) i ARM, każdy z innym zadaniem. Procesor graficzny współużytkuje pamięć z ARM, bardzo wydajnym procesorem RISC (komputer z ograniczonym zestawem instrukcji) ogólnego zastosowania, obsługującym standardowy zestaw instrukcji. Wszystko zamknięte w BCM2835 „SoC” (System on a Chip)
Po włączeniu sterowania formant jest najpierw przekazywany do GPU, tylko jądro, pod koniec procesu rozruchu, będzie działało na procesorze ARM.
W pierwszym etapie GPU uruchomi wbudowane oprogramowanie ROM ROM, aby załadować
bootcode.bin
do pamięci podręcznej L2 i przekazać kontrolę.bootcode.bin
włączy kartę SD, włączy SDRAM i użyje pierwszej partycji MS-DOS, aby znaleźć, załadować i uruchomić „start.elf”.W tym momencie rozważane są następujące pliki
bootcode.bin
z pierwszej partycji MS-DOS na karcie SD:Istnieje wiele opcji, które można dostosować
config.txt
. Możesz edytować plik mocujący kartę SD na komputerze zewnętrznym lub po prostu edytować na uruchomionej jednostce:Typowe zmiany w config.txt dotyczą podkręcania , HDMI , rozmiaru ekranu , proporcji , kamery , ustawiania adresu MAC itp.
Jak widać, wyznaczoną partycją rozruchową, w której
kernel.img
uruchomi się system, jest / dev / mmcblk0p6 i jest to druga partycja wymagana na karcie SD, sformatowana jako „ext4” (Linux lub Id „83” w języku fdisk lingo).Wreszcie
start.elf
załaduje się i uruchomikernel.img
jądro Linuksa.Możesz (powinieneś?) Zaktualizować jądro za pomocą
rpi-update
; jeśli nie tylkoapt-get install rpi-update
).Uwaga:
sudo
przedrostek został usunięty ze względu na zwięzłość.źródło
Jeśli korzystasz z procesu rozruchu Raspberry PI, znajdziesz wiele, w tym jaka jest sekwencja rozruchowa? (zaszły niewielkie zmiany).
What is stored on each partition (and why)?
Różni się to w zależności od konfiguracji i zastosowanej dystrybucji.Does the RPI boot from the SD card (sector zero) or the firmware reads from the disk structure?
Nie.Can I create and partition a new SD and just DD each partition to the new device?
Tak. Chociaż może być lepiej sklonować kartę i rozwinąć partycję.Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img
Podczas gdy Raspbian tak robi, partycja FAT32 zwykle zaczyna się od 8192, co jest idealne dla kart SD. (Partycje powinny znajdować się na granicy wymazywania grupy bloków 4M.)However I have one with as many as 6 partitions, some overlapping other sectors, perhaps this is the structure when started/inherited from NOOBS.
Musisz zrozumieć rozszerzone partycje. Wypróbuj Wiki.źródło