คำสั่ง Linux — fdisk

fdisk เป็น command-line พาร์ทิชัน ตัวแก้ไขที่ให้คุณสร้าง แก้ไข และจัดการพาร์ติชั่นบนฮาร์ดไดรฟ์ของคอมพิวเตอร์ของคุณจากบรรทัดคำสั่ง มีเครื่องมือที่คล้ายกันอื่นๆ เช่น cfdisk และ parted แต่ fdisk เป็นเครื่องมือที่เป็นสากลมากที่สุดและน่าจะง่ายที่สุด

แม้ว่าคุณจะไม่ได้วางแผนที่จะใช้งานมันเป็นประจำ แต่ก็เป็นการดีสำหรับผู้ใช้ Linux ที่จะมีแนวคิดทั่วไปเกี่ยวกับวิธีการทำงานด้วย fdisk เนื่องจากเป็นทางเลือกที่ดีเมื่อไม่มีตัวเลือกกราฟิก และอาจมีอยู่แล้วใน Linux ของคุณ ระบบ.

ห้องทำงานว่างเปล่า
Jetta Productions / Blend Images / Getty Images

แบ่งพาร์ติชั่นไดรฟ์ด้วย fdisk

คู่มือนี้จะแนะนำคุณเกี่ยวกับพื้นฐานของการแบ่งพาร์ติชั่นฮาร์ดไดรฟ์ด้วย fdisk นี่เป็นเครื่องมือที่เรียบง่ายแต่ทรงพลังที่มีตัวเลือกมากมายในการจัดการไดรฟ์ของคุณ สำหรับรายละเอียดทางเทคนิคที่สมบูรณ์ยิ่งขึ้น โปรดดูคู่มือทางเทคนิคที่ส่วนท้ายของคู่มือ

การแบ่งพาร์ติชันฮาร์ดไดรฟ์ของคุณจะลบข้อมูลทั้งหมดในนั้น อย่าลืมสำรองข้อมูลของคุณหรือทำงานกับไดรฟ์เปล่า

  1. เริ่มต้นด้วยการค้นหาตำแหน่งของคุณ ฮาร์ดไดรฟ์. คุณสามารถลอง:

    ls /dev. 

    จากนั้นลองหาว่าเป็นไดรฟ์ใด ไดรฟ์หลักของคุณน่าจะเป็น /dev/sda แต่คุณต้องแน่ใจว่า

    คุณยังสามารถดูที่ /etc/fstab เพื่อดูว่าไดรฟ์ใดติดตั้งอยู่ที่ใด ถ้ามันให้หมายเลข UUID แก่คุณ คุณสามารถค้นหา UUID ของแต่ละพาร์ติชั่น และดูว่าอันไหนตรงกัน

    sudo blkid /dev/sda1.x 
  2. ถัดไป แสดงรายการตารางพาร์ติชั่นปัจจุบันบนไดรฟ์โดยใช้ปุ่ม -l ธง. แทนที่ "/dev/sda" ด้วยไดรฟ์จริงของคุณ

    sudo fdisk -l /dev/sda.js 
    ลินุกซ์ fdisk รายการพาร์ติชั่น

    หากคุณกำลังทำงานกับไดรฟ์เปล่า ไม่น่าจะมีอะไรมาก

  3. รันคำสั่ง fdisk อีกครั้ง คราวนี้ไม่มีธง สิ่งนี้จะนำคุณเข้าสู่คอนโซล fdisk

    sudo fdisk /dev/sda.js 
    Linux fdisk console
  4. เมื่อคุณอยู่ในคอนโซล fdisk คุณสามารถเริ่มทำงานกับพาร์ติชั่นของคุณได้ ขั้นแรก หากคุณต้องการแสดงรายการพาร์ติชั่นเหมือนเมื่อก่อน คุณสามารถป้อน NS กุญแจ.

    NS. 
    Linux fdisk แสดงรายการพาร์ติชั่นจากคอนโซล
  5. จากนั้นใช้ NS คีย์เพื่อสร้างพาร์ติชันใหม่

    NS. 
  6. พร้อมท์จะถามว่าคุณต้องการสร้างหลักหรือ พาร์ติชันเสริม. เลือก NS(หลัก).

    NS. 
    Linux fdisk ตั้งค่าประเภทพาร์ติชั่น
  7. เลือกหมายเลขพาร์ติชั่น ค่าเริ่มต้นคือ 1สำหรับพาร์ติชั่นแรก ให้ใช้อันนั้น

    1. 
    Linux fdisk ตั้งค่าหมายเลขพาร์ติชั่น
  8. จากนั้นระบบจะขอให้คุณเลือกภาคแรก อย่ากังวลมากเกินไปเกี่ยวกับเรื่องนี้ แค่กด เข้า สำหรับค่าเริ่มต้น

    Linux fdisk ตั้งค่าเซกเตอร์แรก
  9. พรอมต์ถัดไปจะให้คุณเลือกขนาดของพาร์ติชั่นของคุณ คุณสามารถระบุขนาดพาร์ติชันเป็นเมกะไบต์ (M) หรือกิกะไบต์ (G) สมมติว่าคุณกำลังตั้งค่าไดรฟ์เพื่อติดตั้ง Linux 512M จะเป็นจุดเริ่มต้นที่ดีสำหรับพาร์ติชันสำหรับเริ่มระบบ

    +512ม. 
    Linux fdisk ตั้งค่าขนาดพาร์ติชั่น
  10. เมื่อเสร็จแล้ว คุณสามารถดูพาร์ติชั่นใหม่ของคุณได้อีกครั้งด้วยปุ่ม NS กุญแจ.

    สร้างพาร์ติชั่น Linux fdisk แล้ว
  11. หากคุณวางแผนที่จะใช้พาร์ติชั่นใหม่เป็นพาร์ติชั่นสำหรับบู๊ต คุณจะต้องเปิดแฟล็กที่สามารถบู๊ตได้ ทำได้โดยการกด NS. จากนั้นหากระบบถาม ให้ป้อนหมายเลขพาร์ติชั่น หากนี่เป็นรายการเดียวในไดรฟ์ของคุณ แสดงว่าเป็น 1.

    NS
    1.
  12. ตอนนี้คุณสามารถสร้างพาร์ติชั่นอื่นๆ บนไดรฟ์ของคุณได้ เริ่มต้นด้วยการป้อน NS อีกครั้ง.

  13. กด 1 อีกครั้งสำหรับพาร์ติชันหลัก

  14. ใช้หมายเลขพาร์ติชั่นเริ่มต้น หากคุณกำลังเริ่มต้นใหม่ มันคือ 2.

  15. ใช้ภาคแรกที่เป็นค่าเริ่มต้นด้วย มันจะเริ่มทันทีหลังจากพาร์ติชั่นก่อนหน้า กด เข้า เพื่อจะดำเนินการต่อ.

  16. อีกครั้ง เลือกขนาดไดรฟ์ของคุณ หากคุณต้องการตั้งค่าพาร์ติชั่นรูทด้วยโฮมพาร์ติชั่นแยกต่างหาก บางอย่างเช่น +20G จะทำงานได้ดี หากคุณต้องการใช้พื้นที่ที่เหลืออยู่เพียงกด เข้า.

    +20G. 
    Linux fdisk สร้างพาร์ติชั่นที่เหลือ
  17. ทำซ้ำขั้นตอนเหล่านี้สำหรับพาร์ติชันใหม่แต่ละพาร์ติชันที่คุณต้องการสร้างบนไดรฟ์ เสร็จแล้วกด w เพื่อเขียนตารางพาร์ติชั่นลงในไดรฟ์

    ว. 
  18. ตอนนี้คุณสามารถใช้คำสั่ง mkfs เพื่อฟอร์แมตพาร์ติชั่นเพื่อใช้งาน สำหรับระบบ Linux ส่วนใหญ่ ระบบไฟล์ EXT4 คือสิ่งที่คุณต้องการ คุณจึงสามารถเรียกใช้ชุดคำสั่งต่อไปนี้เพื่อตั้งค่าพาร์ติชันของคุณได้ นี่ถือว่าคุณกำลังทำงานกับ /dev/sda และคุณตั้งค่าพาร์ติชั่นโฮมและรูทแยกกัน

    sudo mkfs.ext4 /dev/sda1
    sudo mkfs.ext4 /dev/sda2
    sudo mkfs.ext4 /dev/sda3.
    พาร์ติชั่นรูปแบบ Linux
  19. ไดรฟ์ที่แบ่งพาร์ติชันและฟอร์แมตใหม่ของคุณพร้อมใช้งานแล้ว หากคุณได้ติดตามมา คุณสามารถติดตั้งและรันลีนุกซ์ลีนุกซ์ได้เช่น Arch Linux จากพาร์ติชั่นที่คุณเพิ่งสร้างขึ้น

Fdisk เรื่องย่อ

นี่คือรายละเอียดทางเทคนิคของ fdisk รวมถึงตัวเลือกและความสามารถ:

fdisk [-u] [-b เซกเตอร์ขนาด][-ค กระบอก] [-ชม หัว] [-NS นิกายอุปกรณ์

fdisk -l [-u] [อุปกรณ์ ...]

fdisk -s พาร์ทิชั่น ...

fdisk -v

Fdisk และพาร์ติชั่น

ฮาร์ดดิสก์สามารถแบ่งออกเป็นโลจิคัลดิสก์หนึ่งตัวหรือมากกว่าที่เรียกว่า พาร์ทิชัน. หมวดนี้มีอธิบายไว้ใน ตารางพาร์ทิชัน พบในเซกเตอร์ 0 ของดิสก์

ในโลก BSD มีคนพูดถึง 'disk slices' และ 'disklabel'

Linux ต้องการอย่างน้อยหนึ่งพาร์ติชั่น กล่าวคือสำหรับรูท ระบบไฟล์. มันสามารถใช้ไฟล์สว็อปและ/หรือพาร์ติชั่นสว็อปได้ แต่อย่างหลังจะมีประสิทธิภาพมากกว่า ดังนั้น โดยปกติแล้ว เราต้องการพาร์ติชั่น Linux ตัวที่สองสำหรับพาร์ติชั่นสว็อปโดยเฉพาะ

บนฮาร์ดแวร์ที่เข้ากันได้กับ Intel, the ไบออส ที่บูทระบบมักจะสามารถเข้าถึง 1024 กระบอกสูบแรกของดิสก์เท่านั้น ด้วยเหตุผลนี้ ผู้ที่มีดิสก์ขนาดใหญ่มักจะสร้างพาร์ติชั่นที่สาม ซึ่งมีขนาดใหญ่เพียงไม่กี่ MB ซึ่งมักจะติดตั้งบน /bootเพื่อจัดเก็บเคอร์เนลอิมเมจและไฟล์เสริมบางไฟล์ที่จำเป็นในขณะบู๊ต เพื่อให้แน่ใจว่า BIOS สามารถเข้าถึงสิ่งนี้ได้

อาจมีสาเหตุของความปลอดภัย ความง่ายในการดูแลและสำรองข้อมูล หรือการทดสอบ เพื่อใช้มากกว่าจำนวนพาร์ติชั่นขั้นต่ำ

Fdisk ทำงานอย่างไร

fdisk (ในรูปแบบแรกของการเรียกใช้) เป็นโปรแกรมที่ขับเคลื่อนด้วยเมนูสำหรับการสร้างและจัดการตารางพาร์ติชั่น เข้าใจตารางพาร์ติชั่นประเภท DOS และดิสก์เลเบลประเภท BSD หรือ SUN

NS อุปกรณ์ มักจะเป็นอย่างใดอย่างหนึ่งต่อไปนี้:

  • /dev/hda /dev/hdb /dev/sda /dev/sdb
  • (/dev/hd[a-h] สำหรับดิสก์ IDE /dev/sd[a-p] สำหรับดิสก์ SCSI /dev/ed[a-d] สำหรับดิสก์ ESDI /dev/xd[ab] สำหรับดิสก์ XT)

(ชื่ออุปกรณ์หมายถึงดิสก์ทั้งหมด)

NS พาร์ทิชัน คือ อุปกรณ์ ชื่อตามด้วยหมายเลขพาร์ติชั่น ตัวอย่างเช่น, /dev/hda1 เป็นพาร์ติชั่นแรกบนฮาร์ดดิสก์ IDE ตัวแรกในระบบ ดิสก์สามารถมีได้ถึง 15 พาร์ติชั่น ดูสิ่งนี้ด้วย/usr/src/linux/Documentation/devices.txt.

Disklabel ประเภท BSD/SUN

ฉลากดิสก์ประเภท BSD/SUN สามารถอธิบายได้ 8 พาร์ติชั่น โดยพาร์ติชั่นที่สามควรเป็นพาร์ติชั่น 'ทั้งดิสก์' อย่าเริ่มพาร์ติชั่นที่ใช้เซกเตอร์แรกของมันจริงๆ (เช่น พาร์ติชั่นสว็อป) ที่กระบอกสูบ 0 เพราะนั่นจะทำลายป้ายกำกับดิสก์

RIX/SGI-Type Disklabel

ดิสก์ป้ายกำกับประเภท IRIX/SGI สามารถอธิบายได้ 16 พาร์ติชัน โดยส่วนที่ 11 ควรเป็นพาร์ติชัน 'volume' ทั้งหมด ในขณะที่ส่วนที่เก้าควรเป็น ที่มีป้ายกำกับว่า 'ส่วนหัวของไดรฟ์ข้อมูล' ส่วนหัวของโวลุ่มจะครอบคลุมตารางพาร์ติชั่นด้วย กล่าวคือ เริ่มต้นที่บล็อกศูนย์และขยายตามค่าเริ่มต้นมากกว่าห้า กระบอกสูบ พื้นที่ที่เหลืออยู่ในส่วนหัวของไดรฟ์ข้อมูลอาจถูกใช้โดยรายการไดเรกทอรีส่วนหัว

ไม่มีพาร์ติชันใดทับซ้อนกับส่วนหัวของโวลุ่ม อย่าเปลี่ยนประเภทและสร้างระบบไฟล์ขึ้นมาเพราะคุณจะสูญเสียตารางพาร์ติชั่น ใช้ป้ายกำกับประเภทนี้เมื่อทำงานกับ Linux บนเครื่อง IRIX/SGI หรือดิสก์ IRIX/SGI ภายใต้ Linux เท่านั้น

ตารางพาร์ทิชันแบบ DOS

ตารางพาร์ติชั่นประเภท DOS สามารถอธิบายพาร์ติชั่นได้ไม่จำกัดจำนวน ในเซกเตอร์ 0 มีที่ว่างสำหรับคำอธิบายของ 4 พาร์ติชั่น (เรียกว่า 'primary') หนึ่งในนั้นอาจเป็นพาร์ติชันเสริม นี่คือกล่องที่มีโลจิคัลพาร์ติชั่น โดยมีตัวอธิบายที่พบในรายชื่อเซกเตอร์ที่เชื่อมโยง โดยแต่ละอันนำหน้าโลจิคัลพาร์ติชันที่เกี่ยวข้อง พาร์ติชั่นหลักสี่พาร์ติชั่น มีอยู่หรือไม่ก็ได้ ได้ตัวเลข 1-4 โลจิคัลพาร์ติชันเริ่มนับจาก 5

ในตารางพาร์ติชั่นชนิด DOS ออฟเซ็ตเริ่มต้นและขนาดของแต่ละพาร์ติชั่นจะถูกจัดเก็บในสองวิธี: as จำนวนเซกเตอร์ที่แน่นอน (กำหนดเป็น 32 บิต) และแบบสามสูบ/หัว/เซกเตอร์ (กำหนดใน 10+8+6 บิต) อดีตก็โอเค ด้วยเซ็กเตอร์ขนาด 512 ไบต์ สิ่งนี้จะใช้งานได้สูงสุด 2 TB หลังมีปัญหาสองประการที่แตกต่างกัน ก่อนอื่น ช่อง C/H/S เหล่านี้สามารถกรอกได้ก็ต่อเมื่อทราบจำนวนหัวและจำนวนส่วนต่อแทร็กเท่านั้น

ประการที่สอง แม้ว่าเราจะรู้ว่าตัวเลขเหล่านี้ควรเป็นเท่าใด แต่ 24 บิตที่มีอยู่ก็ยังไม่เพียงพอ DOS ใช้ C/H/S เท่านั้น Windows ใช้ทั้งสองอย่าง Linux ไม่เคยใช้ C/H/S

เรขาคณิตของดิสก์

ถ้าเป็นไปได้, fdisk จะได้รับรูปทรงเรขาคณิตของดิสก์โดยอัตโนมัติ นี่ไม่จำเป็นต้องเป็นรูปทรงของดิสก์ทางกายภาพ (อันที่จริง ดิสก์สมัยใหม่ไม่มีอะไรที่เหมือนกับเรขาคณิตทางกายภาพจริงๆ ไม่ใช่เลย สิ่งที่สามารถอธิบายได้ในรูปแบบ Cylinders/Heads/Sectors แบบง่าย) แต่เป็นรูปทรงของดิสก์ที่ MS-DOS ใช้สำหรับพาร์ติชัน ตาราง.

โดยปกติทุกอย่างเป็นไปด้วยดีตามค่าเริ่มต้น และไม่มีปัญหาหาก Linux เป็นระบบเดียวในดิสก์ อย่างไรก็ตาม หากต้องแชร์ดิสก์กับระบบปฏิบัติการอื่น คุณควรปล่อยให้ fdisk จากระบบปฏิบัติการอื่นสร้างอย่างน้อยหนึ่งพาร์ติชัน เมื่อบูทลินุกซ์ มันจะดูที่ตารางพาร์ติชั่นและพยายามอนุมานว่าเรขาคณิต (ของปลอม) อะไรที่จำเป็นสำหรับการทำงานร่วมกันที่ดีกับระบบอื่น

ตรวจสอบความสม่ำเสมอ

เมื่อใดก็ตามที่พิมพ์ตารางพาร์ติชั่น จะมีการตรวจสอบความสอดคล้องในรายการตารางพาร์ติชั่น การตรวจสอบนี้จะตรวจสอบว่าจุดเริ่มต้นและปลายทางทั้งแบบฟิสิคัลและแบบลอจิคัลเหมือนกัน และพาร์ติชั่นเริ่มต้นและสิ้นสุดที่ขอบกระบอกสูบ (ยกเว้นพาร์ติชั่นแรก)

MS-DOS บางเวอร์ชันจะสร้างพาร์ติชั่นแรกที่ไม่ได้เริ่มที่ขอบเขตของกระบอกสูบ แต่ในเซกเตอร์ที่ 2 ของกระบอกสูบแรก พาร์ติชั่นที่เริ่มต้นในกระบอกสูบ 1 ไม่สามารถเริ่มบนขอบเขตของกระบอกสูบได้ แต่สิ่งนี้ไม่น่าจะทำให้เกิดความยุ่งยาก เว้นแต่ว่าคุณจะมี OS/2 ในเครื่องของคุณ

ทำการ sync() และ a BLKRRPART ioctl() (อ่านตารางพาร์ติชั่นซ้ำจากดิสก์) ก่อนออกจากตารางเมื่ออัพเดตตารางพาร์ติชั่น เมื่อนานมาแล้ว มีความจำเป็นต้องรีบูตหลังจากใช้ fdisk ฉันไม่คิดว่าเป็นเช่นนี้อีกต่อไป การรีบูตเร็วเกินไปอาจทำให้ข้อมูลที่ยังไม่ได้เขียนสูญหาย โปรดทราบว่าทั้งเคอร์เนลและฮาร์ดแวร์ดิสก์อาจบัฟเฟอร์ข้อมูล

Dos 6.x คำเตือน

คำสั่ง DOS 6.x FORMAT จะค้นหาข้อมูลบางส่วนในส่วนแรกของพื้นที่ข้อมูลของพาร์ติชั่น และถือว่าข้อมูลนี้มีความน่าเชื่อถือมากกว่าข้อมูลในตารางพาร์ติชั่น DOS FORMAT คาดว่า DOS FDISK จะล้าง 512 ไบต์แรกของพื้นที่ข้อมูลของพาร์ติชั่นทุกครั้งที่มีการเปลี่ยนแปลงขนาด DOS FORMAT จะพิจารณาข้อมูลเพิ่มเติมนี้แม้ว่าจะให้แฟล็ก /U เราก็ถือว่านี่เป็นจุดบกพร่องใน DOS FORMAT และ DOS FDISK

สิ่งสำคัญที่สุดคือถ้าคุณใช้ cfdisk หรือ fdisk เพื่อเปลี่ยนขนาดของรายการตารางพาร์ติชั่น DOS คุณต้องใช้ dd ให้เป็นศูนย์ 512 ไบต์แรกของพาร์ติชั่นนั้นก่อนที่จะใช้ DOS FORMAT เพื่อฟอร์แมตพาร์ติชั่น ตัวอย่างเช่น หากคุณใช้ cfdisk เพื่อสร้างรายการตารางพาร์ติชั่น DOS สำหรับ /dev/hda1 ดังนั้น (หลังจากออกจาก fdisk หรือ cfdisk และรีบูตเครื่อง Linux เพื่อให้ข้อมูลตารางพาร์ติชั่นถูกต้อง) คุณจะใช้คำสั่ง "dd if=/dev/zero of=/dev/hda1 bs=512 count=1" เพื่อทำให้เป็นศูนย์ 512 .แรก ไบต์ ของพาร์ติชัน

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

เพื่อผลลัพธ์ที่ดีที่สุด คุณควรใช้โปรแกรมตารางพาร์ติชั่นเฉพาะระบบปฏิบัติการเสมอ ตัวอย่างเช่น คุณควรสร้างพาร์ติชัน DOS ด้วยโปรแกรม DOS FDISK และ ลินุกซ์ พาร์ติชันด้วยโปรแกรม Linux fdisk หรือ Linux cfdisk

ตัวเลือก fdisk

-NS เซกเตอร์ขนาด:ระบุขนาดเซกเตอร์ของดิสก์ ค่าที่ถูกต้องคือ 512, 1024 หรือ 2048 (เมล็ดล่าสุดรู้ขนาดเซกเตอร์. ใช้เฉพาะกับเมล็ดเก่าหรือเพื่อแทนที่แนวคิดของเคอร์เนล)

-ค กระบอก:ระบุจำนวนกระบอกสูบของดิสก์ เราไม่รู้ว่าทำไมใครๆ ก็อยากจะทำเช่นนั้น

-ชม หัว:ระบุจำนวนหัวของดิสก์ (ไม่ใช่ตัวเลขจริง แต่เป็นตัวเลขที่ใช้สำหรับตารางพาร์ติชัน) ค่าที่เหมาะสมคือ 255 และ 16

-NS นิกาย:ระบุจำนวนเซกเตอร์ต่อแทร็กของดิสก์ (ไม่ใช่ตัวเลขจริง แต่เป็นตัวเลขที่ใช้สำหรับตารางพาร์ติชั่น) ค่าที่เหมาะสมคือ 63

-l:แสดงรายการตารางพาร์ติชั่นสำหรับอุปกรณ์ที่ระบุ จากนั้นออก หากไม่มีอุปกรณ์ใด ๆ ระบุไว้ใน /proc/partitions (ถ้ามี) มาใช้

-ยู:เมื่อแสดงรายการตารางพาร์ติชั่น ให้ระบุขนาดเป็นส่วนๆ แทนกระบอกสูบ

-NS พาร์ทิชัน: NS ขนาด ของพาร์ติชัน (ในบล็อก) ถูกพิมพ์บนเอาต์พุตมาตรฐาน

-v:พิมพ์หมายเลขเวอร์ชันของ fdisk โปรแกรมและออก