จะหาชื่อพา ธ ของพาร์ติชั่น swap บนการ์ด SD ได้อย่างไร?


9

ตามคำเตือนนี้คุณไม่ควรเปิดใช้งานการสลับบนพาร์ติชันที่ไม่ถูกต้องหรือคุณสามารถทำลายโทรศัพท์ของคุณ:

ตกลงก่อนที่เราจะไปไกลกว่านี้! โทรศัพท์ก่อนหน้านี้มีเค้าโครงพาร์ติชันที่ mmcblck0 เป็น SDcard (ภายนอก) โทรศัพท์ของเราใช้ mmcblck1 สำหรับ sd ภายนอก สิ่งนี้มีความสำคัญเพราะถ้าคุณใช้แอพอาจมีการตั้งค่าล่วงหน้าให้ใช้ mmcblck0 เป็น swap partition การใช้การตั้งค่านี้จะทำให้คุณใช้ sbl2 หรือ sbl3 ของคุณเนื่องจาก swap partition.this จะทำให้โทรศัพท์ของคุณและคู่มือที่ไม่ได้ใช้

ดังนั้นพาร์ทิชัน swap อาจเป็นได้/dev/block/mmcblk0p3ถ้าฉันมี 3 พาร์ติชัน (fat32, sdext, swap) บนการ์ด SD ของฉันหรือ/dev/block/mmcblk0p2ถ้าฉันมีพาร์ติชัน 2 (fat43 และ swap) หรือ/dev/block/mmcblk1p?ถ้าคุณมีโทรศัพท์ที่แตกต่างกันเป็นต้น โทรศัพท์ของคุณ.

คุณจะทำอย่างไรหาที่พาร์ทิชันเป็นที่? มันควรจะเป็นพาร์ทิชันเดียวในไดรฟ์ของโทรศัพท์ด้วยswapระบบไฟล์

  • fdisk -lทำสิ่งนี้บน Ubuntuแต่ไม่มีผลกับ Android
  • blkid ไม่แสดงพาร์ติชันสลับ
  • cat /proc/partitions แสดงรายการพาร์ติชั่นเป็นจำนวนมาก แต่ไม่ได้ระบุว่าการสลับใด
  • cat /proc/swapsแสดง swaps ที่ถูกใช้แล้วเท่านั้น
  • cat /proc/mtdพูดเท่านั้นdev: size erasesize nameและไม่มีอะไรอื่น
  • ls /dev/block/voldแสดงพาร์ติชั่นบางส่วนว่า179:64 179:65 179:66แต่ไม่ได้ระบุว่ามันคืออะไร?
  • การกู้คืน 4ext จะแสดงในตารางพาร์ติชัน ( swap swap 129 MiB) แต่ไม่ได้พูดชื่อ dev
  • ...

แม้ว่าจะไม่มีเครื่องมือบรรทัดคำสั่งที่จะพิมพ์โดยตรงแน่นอนมีวิธีการอนุมานจากข้อมูลอื่น ๆ ?


มีอะไรในตัวคุณ/proc/swapsบ้างไหม?
ott--

@ ott--: cat /proc/swapsเพียงแค่แสดง swapfile ที่สร้างขึ้นโดย swapper 2 ไม่ใช่พาร์ติชันบนการ์ด SD
endolith

เมื่อคุณรู้จักอุปกรณ์ (SDCard) แล้วคุณได้ลองใช้mount(โดยไม่มีพารามิเตอร์) เพื่อค้นหาอุปกรณ์บล็อกที่เกี่ยวข้อง ( /dev/block/*) และตรวจสอบว่าตรงกับรายการ/proc/partitions(หรือ/proc/mtd) หรือไม่? หากคุณไม่มีพาร์ติชั่นเพิ่มเติมในการ์ดของคุณพาร์ทิชัน swap ของคุณควรเป็น "อีกพาร์ติชั่นหนึ่งลงท้ายด้วยตัวเลข" เว้นแต่จะmountชี้ไปที่voldเท่านั้น ในกรณีดังกล่าวการเปรียบเทียบขนาด (หรือการถอดการ์ดชั่วคราวสำหรับ "diff") อาจช่วยได้
Izzy

คำตอบ:


8

ฉันติดตั้งแอป Disk Infoและในตัวเลือกฉันเปิดใช้งานโหมดผู้เชี่ยวชาญและพาร์ติชันที่ไม่ได้ต่อเชื่อม ไม่ได้พูดว่า "swap" แต่มันแสดงให้เห็นอย่างชัดเจนว่ามันเป็นพาร์ติชั่นอื่น ๆ ในการ์ด SD และมันมีขนาดที่เหมาะสมดังนั้น/dev/block/mmcblk1p2ต้องเป็นพาร์ติชั่น:

สกรีนช็อตของ Disk Info

Swapper 2 ถูกกำหนดค่าให้ใช้เป็น/dev/block/mmcblk0p3ค่าเริ่มต้นดังนั้นฉันดีใจที่ฉันไม่ได้ใช้ค่าเริ่มต้น


8

fdisk -lทำงานหากคุณส่งชื่ออุปกรณ์ดิสก์ทั้งหมดอย่างชัดเจน (เช่นfdisk -l /dev/block/mmcblk1); สิ่งที่ใช้งานไม่ได้คือการค้นพบอุปกรณ์บล็อกโดยอัตโนมัติ (เห็นได้ชัดว่า Android วางไฟล์บล็อกอุปกรณ์ไว้ใต้/dev/blockไดเรกทอรี แต่fdiskคาดว่าจะเห็นไฟล์เหล่านั้นโดยตรง/dev) ดังนั้นทางเลือกหนึ่งคือการรวบรวมรายชื่อของอุปกรณ์ทั้งดิสก์ (คน/dev/block/mmcblk0, /dev/block/mmcblk1, ... ) และดูที่ตารางพาร์ทิชันของตนโดยใช้ อุปกรณ์ดิสก์ทั้งหมดเหล่านี้มีการระบุไว้ก่อนหน้าพาร์ติชันที่สอดคล้องกันfdisk -l <device>/proc/partitions

blkidยูทิลิตี้ไม่ได้ดูตารางพาร์ทิชันที่ทั้งหมด - เปิดอุปกรณ์ป้องกันทุกคนที่รู้จักโดยระบบและตรวจสอบชนิดของระบบแฟ้มจากข้อมูลที่เกิดขึ้นจริงบนอุปกรณ์เหล่านั้น ดังนั้นจึงblkidจะไม่แสดงข้อมูลที่ถูกต้องสำหรับพาร์ทิชัน swap mkswapจนกว่าพาร์ทิชันที่ถูกเตรียมโดย ซึ่งหมายความว่าblkidไม่มีประโยชน์สำหรับงานปัจจุบันของคุณ (การค้นหาพาร์ติชันที่ควรส่งผ่านไปmkswap)

mountมักจะแสดงอุปกรณ์ภายใต้/dev/block/voldซึ่งตั้งชื่อตามหมายเลขหลักและรอง ในการรับชื่ออุปกรณ์ตามปกติคุณสามารถค้นหา/proc/partitionsเพื่อค้นหาแถวที่มีหมายเลขเดียวกันในสองคอลัมน์แรก จากนั้นคุณสามารถนำชิ้นส่วนออกจากส่วนท้ายของชื่ออุปกรณ์เพิ่มเมื่อเริ่มต้นและส่งชื่อผลลัพธ์ไปยังเพื่อดูตารางพาร์ติชันของอุปกรณ์ที่เกี่ยวข้องp<number>/dev/block/fdisk -l

ระวังว่าถ้าคุณดูfdisk -lเอาต์พุตสำหรับแฟลช eMMC ภายในคุณอาจพบพาร์ติชันที่มีประเภทแปลก ๆ มากมายโดยเฉพาะบนอุปกรณ์ที่ใช้ Qualcomm เช่นดูตารางพาร์ติชันสำหรับ Samsung Galaxy W (GT-I8150):

# fdisk -lu /dev/block/mmcblk0                                  

Disk /dev/block/mmcblk0: 3959 MB, 3959422976 bytes
1 heads, 16 sectors/track, 483328 cylinders, total 7733248 sectors
Units = sectors of 1 * 512 = 512 bytes

              Device Boot      Start         End      Blocks  Id System
/dev/block/mmcblk0p1               1      212991      106495+  c Win95 FAT32 (LBA)
Partition 1 does not end on cylinder boundary
/dev/block/mmcblk0p2   *      212992      213991         500  4d Unknown
Partition 2 does not end on cylinder boundary
/dev/block/mmcblk0p3          213992      221183        3596  46 Unknown
Partition 3 does not end on cylinder boundary
/dev/block/mmcblk0p4          221184     7733247     3756032   5 Extended
Partition 4 does not end on cylinder boundary
/dev/block/mmcblk0p5          229376      239615        5120  47 Unknown
/dev/block/mmcblk0p6          245760      285759       20000  49 Unknown
/dev/block/mmcblk0p7          286720      292863        3072  58 Unknown
/dev/block/mmcblk0p8          294912      306175        5632  48 Unknown
/dev/block/mmcblk0p9          311296      324271        6488  50 Unknown
/dev/block/mmcblk0p10         327680      333823        3072  4a Unknown
/dev/block/mmcblk0p11         335872      342015        3072  4b Unknown
/dev/block/mmcblk0p12         344064      360447        8192  90 Unknown
/dev/block/mmcblk0p13         360448      375807        7680  91 Unknown
/dev/block/mmcblk0p14         376832      387071        5120  92 Unknown
/dev/block/mmcblk0p15         393216     1488895      547840  93 Unknown
/dev/block/mmcblk0p16        1490944     1613823       61440  94 Unknown
/dev/block/mmcblk0p17        1613824     3887103     1136640  95 Unknown
/dev/block/mmcblk0p18        3891200     3993599       51200  96 Unknown
/dev/block/mmcblk0p19        3997696     3998695         500  97 Unknown
/dev/block/mmcblk0p20        4005888     4013079        3596  98 Unknown
/dev/block/mmcblk0p21        4014080     4024319        5120  99 Unknown
/dev/block/mmcblk0p22        4030464     4070463       20000  9a Unknown
/dev/block/mmcblk0p23        4071424     4081663        5120  9b Unknown
/dev/block/mmcblk0p24        4087808     4101807        7000  9c Unknown
/dev/block/mmcblk0p25        4104192     4114431        5120  9d Unknown
/dev/block/mmcblk0p26        4120576     4130815        5120  9e Unknown
/dev/block/mmcblk0p27        4136960     4147199        5120  9f BSD/OS
/dev/block/mmcblk0p28        4153344     7733247     1789952  a0 Thinkpad hibernation

รหัสประเภทของพาร์ติชันนั้นมีความผิดพลาดที่อันตรายเนื่องจาก/dev/block/mmcblk0p1มีการประกาศว่าWin95 FAT32 (LBA)จริง ๆ แล้วมีข้อมูลระบบบางส่วน (รวมถึงตำแหน่งและ MD5 แฮชของส่วน ROM ต่างๆ) อย่างไรก็ตาม/dev/block/mmcblk0p28ซึ่งเป็นรูปแบบ FAT16“ การจัดเก็บข้อมูลภายใน” มีรูปแบบที่ดูปลอมอย่างสมบูรณ์ ในกรณีนี้ผู้ผลิตไม่ได้ใช้0x82รหัสประเภทการสลับ (Linux สลับ) เพื่อวัตถุประสงค์ของตนเอง แต่ฉันไม่แน่ใจว่าการชนดังกล่าวไม่เคยเกิดขึ้นดังนั้นคุณไม่ควรลองใช้พาร์ติชันใด ๆ ขนาดอุปกรณ์และการจัดวางพาร์ติชั่นเป็นสิ่งที่คุณคาดว่าจะเห็นในการ์ด SD ของคุณ

/proc/mtd ไม่เคยมีประโยชน์สำหรับการหาพาร์ติชัน swap บนการ์ด SD (ไดรเวอร์ MTD ถูกใช้เพื่อเข้าถึงชิปแฟลชดิบที่แนบมาโดยตรงพวกเขาไม่สามารถทำงานกับการ์ด SD ภายนอกได้)


1
Aha! fdisk -l /dev/block/mmcblk1พูดว่า/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
endolith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.