עבודה עם GPT - לינוקס, Mac ומערכות הפעלה אחרות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עבודה עם GPT


Recommended Posts

היי חברים,

קיבלתי משימה אשר מקבלת image file של , ועבור כל partition שבו יש לבצע בו שינויים, לדוגמא: מחיקה, הגדלה, הקטנה וכדומה..

הדרך הכי פשוטה שלי לעשות זאת היא לגשת לפרטישן של הimg file, להעתיקו להתקן נפרד (ההתקן מדמה טלפון, עם כרטיס של טלפון eMMC), ולשנות אותו בהתאם לנדרש (יחסוך לי הרבה בעיות אם נדרש להגדיל/להקטין את הפרטישן)

כל העתקות של הפרטישן יהיו על ידי פקודת dd.

ועל כל יש לי מספר בעיות/דילמות:

1. אם אני מעתיק Partition על ידי dd, לדיסק חדש נוצר לי אוטומטית GPT? אם לא מה הפקודה שאומרת לדיסק ליצור GPT?

2. איך משנים GPT? האידיאל- פקודת אחת שמאחדת partition שהועתקו על ידי dd לטבלה בודדת.

3. אם אני רושם fdisk -ls האם אני למעשה קורא את הGPT בכל דיוויס?

4. אם אני עושה dd לpartition הראשון אני מעתיק על הדרך את PGT?

תודה רבה,

מושיקו

קישור לתוכן
שתף באתרים אחרים

תוכן הדיסק במחשב מותקן בנוי בערך כמו :

0. בהפעלת המחשב לך לבלוק 10 ובצע את הקוד שנמצא שם

1. מיקומי המחיצות על הדיסק :

2. מחיצה sda1 - בלוקים 9..23

3. מחיצה sda2 - בלוקים 17..325544

4. מחיצה sda3 - בלוקים 325545..1000405645

5.

6.

7.

8.

9. מיקומי הקבצים במחיצה :

10. קובץ syslinux - בלוק 16

11. קובץ syslinux (המשך) - בלוק 19

12. קובץ kernel - בלוק 18

13. קובץ kernel (המשך) - בלוק 15

14.

15. 0010101100100001011001010001100101

16. 1010010100101001000100011110010101

17.

18. 1010101010010010000101010001001001

19. 1010101100001010101000001010101101

20.

21. 1001011110101000010111101000100010

22.

23.

24. קובץ dev - בלוק 194

25. קובץ etc - בלוק 262

26. קובץ home - בלוק 94533

....

....

החלקים הם :

MBR - Master Boot Record

קוד שיש להריץ להפעלת מערכת ההפעלה. הרבה boot loaders היום גדולים (מכילים הרבה פיצ'רים פנימיים) ולא נכנסים למקום הקטן בתחילת הדיסק, במקומו יש שם קוד שמעלה ומריץ את המשך ה boot loader ממקום אחר בהמשך

Partition Table

פשוט רשימה של איפה מתחילה ומסתיימת כל מחיצה

partition sda1 contents

partition sda2 contents

תוכן המחיצות. בדוגמה כאן יש בפנים מערכות קבצים כמו FAT וניתן לראות שהתחלת המחיצה היא טבלת מערכת קבצים וההמשך הוא תוכן של קבצים, אבל זה לא מחייב (תיתכן מחיצה שמכילה מידע בינארי שמתחיל סתם החל מהלוק הראשון של המחיצה). טבלת המחיצות או פקודות כמו dd אינן "מבינות" מה נמצא בתוך המחיצה, מבחינתן כל מה שהוא באותה מחיצה (אותו צבע) מועתק לאותם מקומות בדיוק באימג'/מחיצת היעד

הדוגמה שתיארתי דומה יותר לטבלת מחיצות MS DOS, אבל אין ממש הבדל עקרוני ביניהם. פשוט ב GPT סידרו מחדש את החלקים של המבנה הזה בצורה שנותנת כמה יתרונות :

- אין יותר מגבלות של המערכת הישנה על כמות מחיצות : ניתן לחלחק דיסק ליותר מ 4 מחיצות (ולא כמו בעבר, עד 4 מחיצות ואז את אחת מהן מחלקים הלאה)

- זיהוי המחיצות על ידי GUID, שאינו מועד לתקלות כמו זיהוי לפי "0 1 2 3 ...." כשמבנה המחיצות משתנה

מכאן התשובה, לפחות איך שנראה לי :

אם אתה dd לכל הדיסק, אתה מעתיק את כל המידע החל מבלוק 0, כולל טבלת מחיצות וכו'. בדיסק היעד יופיעו מחיצות לאחר ה dd

אם אתה dd למחיצה, אתה מעתיק את התוכן של אותה מחיצה (כל האזור שבאותו צבע), אבל לא את טבלת המחיצות

בכל מקרה, חשוב ש "גיאומטריית" המידע (כלומר הגודל של כל בלוק וכו') יהיו זהים במקור וביעד. אם למשל ביעד כל בלוק קצר יותר פי 2, מידע שהיה בבלוק יחיד במקור ייכתב ל 2 בלוקים ביעד, אבל dd אינה "מבינה" ולכן גם אינה "מתקנת" את ההפניות כמו "בהפעלת המחשב לך לבלוק 10" או "קובץ syslinux - בלוק 16" לערכים הנכונים עכשו (בלוקים 20 ו 32). אם זה יקרה ותנסה להפעיל את המחשב, הוא ילך לבצע את הקוד בשורה 10 - אבל עכשו נמצא שם מה שהיה בשורה 5 (כלומר אין שם כלום) - המחשב פשוט יישאר על מסך שחור או no operating system וכו'

עריכת טבלת המחיצות נעשית על ידי כלים מתאימים לכך. בלינוקס הכלים לעריכת מחיצות GPT הם cgdisk ו gdisk, (זהים למקבילים שלהם cfdisk ו fdisk למחיצות MS DOS), וכן כלי ה GUI שתומכים במחיצות כאלה

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...