रास्पियन बूट प्रक्रिया और विभाजन तालिका


13

रास्पबेरी पाई बूट प्रक्रिया और डिस्क विभाजन संरचना का कोई अच्छा विवरण?

प्रत्येक विभाजन पर (और क्यों) संग्रहीत किया जाता है?

क्या आरपीआई एसडी कार्ड (सेक्टर शून्य) से बूट होता है या फर्मवेयर डिस्क संरचना से पढ़ता है?

मुझे लगता है कि NOOBS किसी भी O / S के तहत कुछ फ़ाइलों की प्रतिलिपि बना रहा है, RPI फर्मवेयर MS-DOS डिस्क संरचना के बारे में (उच्च स्तर) जानता है और इसे एसडी मेमोरी में ढूंढता है।

मैं उपलब्ध स्थान का विस्तार करने के लिए एक अच्छे एसडी कार्ड को एक बड़े एसडी कार्ड से क्लोन करना चाहता हूं।
क्या मैं एक नया एसडी बना सकता हूं और विभाजन कर सकता हूं और नए डिवाइस में सिर्फ प्रत्येक विभाजन को डीडी कर सकता हूं? किन विभाजनों की आवश्यकता है?

'linux'नए डिवाइस में विभाजन मूल की तुलना में बड़ा हो सकता है और उसके बाद डिस्क स्थान का विस्तार?

हो सकता है कि एक नए कार्ड में क्लोन करें और उपलब्ध स्थान का उपयोग करने के लिए केवल पिछले विभाजन (p6) का विस्तार करें, लेकिन मैं एक कोशिश और त्रुटि विधि का उपयोग नहीं करना चाहता हूं, यह जानना चाहूंगा कि कैसे और क्यों।

मेरा सवाल क्यों?

अधिकांश RPI SD कार्ड में दो (fdisk) विभाजन होते हैं, शायद जब एक .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

हालाँकि मेरे पास 6 विभाजनों के साथ एक है, यह 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

मुझे लगता है कि इस तस्वीर में कुछ गड़बड़ है। दो W95 विभाजन?

मैं एक नए कार्ड में केवल सही विभाजन का क्लोन बनाना चाहूंगा। मुझे इस पर बहुत काम करना है SD फिर से शुरू करने के लिए! (BTW मैं कुछ अच्छा बैकअप है)।

कुछ नोट।

विभाजन 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

विभाजन p2

mount: /dev/mmcblk0p2: can't read superblock

विभाजन 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

विभाजन p4मौजूद नहीं है।

विभाजन 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
...

विभाजन p6( वास्तविक रास्पियन विभाजन)

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एक विस्तारित विभाजन बनना चाहिए (जैसे कि) एक विस्तारित विभाजन है - इस मामले में "लिनक्स" एक है और यह शेष के लिए एक कंटेनर है 4 से ऊपर के लोगों की जरूरत है - और विस्तारित तरीके से उन 'तार्किक' विभाजनों को व्यवस्थित करने का एक से अधिक तरीका है।
स्लीवेन डिसेन्स

जवाबों:


6

मेरे अंतिम परिणाम एक बड़े एसडी कार्ड पर एक noobs सेटिंग पर माइग्रेट करने के लिए, इस प्रकार है।

मैं एक अस्थायी बाहरी ड्राइव पर मूल लाइव छवि का बैकअप लेता हूं, एक विंडोज़ बॉक्स के साथ साझा किया जाता है, एक अतिरिक्त मेमोरी स्टिक यह करेगी।

dd if=/dev/mmcblk0 of=~/backup.img

आप win32DiskImager के साथ भी बैकअप ले सकते हैं, फिर, मैंने इस बार win32DiskImager का उपयोग करके छवि को एक बड़े एसडी कार्ड (मैं 8 से 16GB तक) में जला दिया।

मैंने नए बनाए गए एसडी को बूट किया। इस बिंदु पर, एसडी ने अभी भी समान विभाजन, प्राइमरी, विस्तारित और तार्किक रखा। इसलिए बूट को आसानी से काम करना चाहिए।

का उपयोग करते हुए

fdisk /dev/mmcblk0

pकमांड का उपयोग करके वर्तमान विभाजन तालिका का लाइव स्क्रीनशॉट लें ।

भौतिक 'डिस्क' के अंत में स्थित अप्रयुक्त और अनावश्यक विभाजन # 3 (p3) को हटाएं (विस्तारित विभाजन # 2 के बाद) d

अगला, बहादुरी से विभाजन # 2 (P2) को हटा दें, नेस्टेड तार्किक विभाजन भी गायब हो जाएगा।

सभी उपलब्ध स्थान का उपयोग करते हुए, विभाजन को विस्तारित किया # 2, लेकिन अब।
# 2 को फिर से बनाने के लिए, बहुत ही सटीक मूल क्षेत्र शुरू करें और fdiskआपको अंतिम क्षेत्र देने की अनुमति दें । pसत्यापित करें का उपयोग करें और वह प्रकार विस्तारित '85' है और यह कि नया समाप्त होने वाला क्षेत्र वास्तव में मूल से बड़ा है।

दो पिछले तार्किक विभाजनों को फिर से बनाएँ: तार्किक विभाजन के साथ शुरू करें # 5 (p5); प्रारंभ क्षेत्र के लिए पिछले स्क्रीनशॉट से सटीक क्षेत्र का उपयोग करें, समाप्त होने वाले क्षेत्र के साथ ही (यह तार्किक डिस्क नहीं बढ़ेगा), tआईडी को c(MS-DOS) सेट करने के लिए उपयोग करें । फिर, विश्राम विभाजन # 6 पहले की तुलना में, लेकिन द्वारा चयनित अंत क्षेत्र के साथ एक ही शुरू क्षेत्र के साथ (p6) fdiskऔर p' id83`।

अपनी प्रविष्टियों को सत्यापित करें pऔर यदि और केवल यदि, ठीक लगे तो बस विभाजन तालिका को wअन्यथा ^ C के साथ लिखें और फिर से शुरू करें।

रिबूट करें और अपनी उंगलियों को पार करें। रास्पियन दो बार रिबूट हो सकता है।

तो बस के साथ फ़ाइल सिस्टम का विस्तार करें

resize2fs /dev/mmcblk0p6

यह अंतिम परिणाम है, अब अतिरिक्त 8 जीबी के साथ!

 Device Boot             Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192     1675781      833795    e  W95 FAT16 (LBA)
/dev/mmcblk0p2         1679360    30703615    14512128   85  Linux extended
/dev/mmcblk0p5         1687552     1810431       61440    c  W95 FAT32 (LBA)
/dev/mmcblk0p6         1818624    30703615    14442496   83  Linux

इसलिए, अब मेरा अंतिम क्षेत्र 6,840,320 से 14,442,496 है।

बूट

मुझे पता है कि यह विषय कहीं और है, हालांकि यह जानना अच्छा है।

रास्पबेरी में बोर्ड प्रोसेसर पर दो होते हैं: GPU (ग्राफिक प्रोसेसिंग यूनिट) और ARM, प्रत्येक एक अलग कार्य के साथ। GPU एआरएम के साथ मेमोरी साझा करता है, एक बहुत ही कुशल सामान्य उद्देश्य आरआईएससी (कम इंस्ट्रक्शन सेट कंप्यूटर) प्रोसेसर, उद्योग मानक निर्देश सेट चला रहा है। सभी एक BCM2835 'SoC' (सिस्टम ऑन ए चिप) पर संलग्न हैं

नियंत्रण पर बिजली को पहले GPU पर दिया जाता है, केवल कर्नेल, बूट प्रक्रिया के अंत में, ARM प्रोसेसर पर चलेगा।

पहले चरण में, GPU bootcode.binL2 कैश मेमोरी में लोड करने और नियंत्रण पास करने के लिए ऑन-चिप ROM फर्मवेयर चलाएगा । bootcode.binSD कार्ड को सक्षम करेगा, SDRAM को सक्षम करेगा, और 'start.elf' को खोजने, लोड करने और चलाने के लिए पहले MS-DOS विभाजन का उपयोग करेगा।

इस बिंदु bootcode.binपर, एसडी कार्ड पर पहले एमएस-डॉस विभाजन से निम्नलिखित फाइलों पर विचार किया जाता है :

/boot/config.txt,  
/boot/cmdline.txt  (kernel parameters)
/boot/bcm????-rpi-*.dtb  (device dependent) 

विकल्पों की एक अच्छी संख्या है जिन पर अनुकूलित किया जा सकता है config.txt। आप बाहरी कंप्यूटर पर एसडी बढ़ते फ़ाइल को संपादित कर सकते हैं या सिर्फ एक रनिंग यूनिट पर संपादित कर सकते हैं:

nano /boot/config.txt

पर विशिष्ट परिवर्तन config.txt से जुड़े हुए हैं overclock , HDMI , स्क्रीन आकार , पहलू , कैमरा , तो आप सेट मैक पता आदि

nano cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait

जैसा कि आप देख सकते हैं, निर्दिष्ट बूट विभाजन, जहाँ kernel.imgबूट होगा / dev / mmcblk0p6 और यह आपके SD कार्ड पर आवश्यक दूसरा विभाजन है, जिसे 'ext4' (Linux या Id '83' fdisk pingo) के रूप में स्वरूपित किया गया है।

अंत में, आपका लिनक्स कर्नेल start.elfलोड और चलेगा kernel.img

आप कर्नेल को अपडेट कर सकते हैं (चाहिए?) rpi-update; अगर वहाँ नहीं है apt-get install rpi-update)।

नोट: sudoसंक्षिप्तता संक्षिप्तता के लिए नष्ट कर दिया।


3

यदि आप रास्पबेरी पीआई बूट प्रक्रिया के लिए Google करते हैं, तो आपको बहुत सारे मिल जाएंगे, जिसमें बूट अनुक्रम क्या है? (कुछ मामूली बदलाव हुए हैं)।

What is stored on each partition (and why)? यह अलग-अलग है, यह इस बात पर निर्भर करता है कि यह कैसे सेटअप किया गया था, और किस वितरण का उपयोग किया जाता है।

Does the RPI boot from the SD card (sector zero) or the firmware reads from the disk structure? नहीं।

Can I create and partition a new SD and just DD each partition to the new device? हाँ। यद्यपि आप कार्ड को क्लोन करने और विभाजन का विस्तार करने के लिए बेहतर हो सकते हैं।

Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img जबकि रास्पियन करता है, FAT32 विभाजन सामान्य रूप से 8192 पर शुरू होता है, जो एसडी कार्ड के लिए आदर्श है। (विभाजन Erase Block Group 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. आपको विस्तारित विभाजन को समझने की आवश्यकता है। विकी को आजमाएं।


मेरे सवाल पर ध्यान केंद्रित किया जाता है कि एनओओबीएस के एसडी पर डिस्क स्थान का विस्तार करते समय क्या विभाजन की आवश्यकता होती है और कौन से विभाजन नहीं होते हैं।
fcm

1
आपको इन सबकी जरूरत है। आप पुनर्प्राप्ति विभाजन पर कुछ फ़ाइलों को हटा सकते हैं। NOOBS को मानक रास्पियन में परिवर्तित किया जा सकता है, लेकिन कुछ (वास्तव में काफी थोड़ा) की आवश्यकता होती है। आप एक मानक रास्पियन FAT32 बूट विभाजन के साथ न्यूनतम परिवर्तन (/ / / fstab) के साथ रास्पियन (p6) का उपयोग कर सकते हैं।
मिलिअवेज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.