$ อัปเดตb
ค้นหาไดรเวอร์ที่เกี่ยวข้องกับ scsi
$ ค้นหา scsi*.ko
ค้นหาไดรเวอร์ที่เกี่ยวข้องกับ USB
$ ค้นหา usb*.ko
ไดรเวอร์เหล่านี้คือ
.koเป็นคำต่อท้ายและถูกคอมไพล์เป็นโมดูลตามค่าเริ่มต้นเมื่อทำการติดตั้งระบบ ในความเป็นจริงสามารถคอมไพล์เป็นส่วนหนึ่งของเคอร์เนลได้ คุณเพียงแค่ต้องเลือกให้คอมไพล์เมื่อคอมไพล์เคอร์เนล
-แค่นั้นแหละ. อย่างไรก็ตาม ในหลายกรณี พวกมันจะถูกคอมไพล์เป็นโมดูล ซึ่งจะลดขนาดของเคอร์เนลและให้ความยืดหยุ่นในการโหลดและยกเลิกการโหลดได้ตามต้องการ ข้อมูลต่อไปนี้สาธิตโดยย่อถึงวิธีการยกเลิกการโหลดโมดูล โหลดโมดูล และดูสถานะของโมดูลที่โหลด
ผ่านได้
/procระบบไฟล์
โมดูลไฟล์เพื่อตรวจสอบสถานะของโมดูลต่างๆ ที่โหลดในเคอร์เนล หรือโดย
lsmodสั่งให้ดูโดยตรง
$ cat /proc/โมดูล
หรือ
$lsmod
ตรวจสอบไดรเวอร์ที่เกี่ยวข้องกับ scsi และ usb ผลลัพธ์จะแสดงเป็นชื่อโมดูล ขนาดโมดูล อ้างอิงโดยโมดูลอื่น (จำนวนการอ้างอิง โมดูลที่อ้างอิง)
$ lsmod | .egrep scsi|usbusbhid 29536 0hid 28928 1 usbhidusbcore 138632 4 usbhid,ehci_hcd,ohci_hcdscsi_mod 147084 4 sg,sr_mod,sd_mod,libata
ถอนการติดตั้งด้านล่าง
usbhidลองดูที่โมดูล (อย่าถอนการติดตั้งไดรเวอร์ scsi! เพราะระบบของคุณอาจทำงานอยู่ หากคุณต้องการเล่นกับมันจริงๆ อย่าลืมบันทึกข้อมูลก่อนถอนการติดตั้ง) ให้ผ่าน
rmmodซึ่งสามารถทำได้โดยการรันคำสั่ง ขั้นแรกให้สลับไปที่ผู้ใช้รูท:
$ sudo -s# rmmod usbhid
ตรวจสอบข้อมูลโมดูลอีกครั้ง คุณไม่สามารถดูได้อีกต่อไป
$ lsmod | .grep ^usbhid
หากคุณมีเมาส์ USB ให้ย้ายแล้วพบว่าไม่สามารถเคลื่อนย้ายได้? เนื่องจากไดรเวอร์อุปกรณ์ไม่พร้อมใช้งานอีกต่อไป อุปกรณ์จึงไม่สามารถใช้งานได้ แต่อย่ากังวล เมื่อคุณทราบเหตุผลแล้ว คุณสามารถโหลดไดรเวอร์ใหม่ได้
อินสโมดมัด
usbhidโมดูลถูกโหลดซ้ำ
$ sudo -s# insmod `ค้นหา usbhid.ko`
ค้นหา usbhid.koคือการค้นหา
usbhid.koเส้นทางไปยังโมดูลหากไม่มีมาก่อน
ปรับปรุงbฉันคิดว่าคุณไม่สามารถหามันได้โดยใช้มัน แต่คุณสามารถไปที่โดยตรงได้
/lib/โมดูลใช้ในไดเร็กทอรี
หามัด
usbhid.koพบไฟล์.
# insmod $(ค้นหา /lib/โมดูล -name *usbhid.ko* | grep `uname -r`)
ตอนนี้สามารถใช้เมาส์ได้อีกครั้ง หากคุณไม่เชื่อ ให้เลื่อนเมาส์อีกครั้ง :-)
ณ จุดนี้ ความสัมพันธ์ระหว่างอุปกรณ์ฮาร์ดแวร์และไดรเวอร์อุปกรณ์ควรจะค่อนข้างชัดเจน ถ้าไม่เช่นนั้นให้ดำเนินการต่อด้านล่าง
ไดรเวอร์อุปกรณ์ Linux เชื่อมโยงกับไฟล์อุปกรณ์ที่เกี่ยวข้อง และไฟล์อุปกรณ์สอดคล้องกับอุปกรณ์ฮาร์ดแวร์แบบหนึ่งต่อหนึ่ง ไฟล์อุปกรณ์เหล่านี้จะถูกจัดเก็บไว้ในระบบอย่างสม่ำเสมอ
/พัฒนา/ไดเรกทอรี
ตัวอย่างเช่น อุปกรณ์ scsi สอดคล้องกับ
/dev/sda-
/dev/sda1-
/dev/sda2...ดูข้อมูลอุปกรณ์เหล่านี้ด้านล่าง
$ ls -l /dev/sda*brw-rw---- 1 รูทดิสก์ 8, 0 28-12-2550 22:49 /dev/sdabrw-rw---- 1 รูทดิสก์ 8, 1 2007-12- 28 22:50 /dev/sda1brw-rw---- 1 รูทดิสก์ 8, 3 28-12-2550 22:49 /dev/sda3brw-rw---- 1 รูทดิสก์ 8, 4 28-12-2550 22:49 /dev/sda4brw-rw---- 1 รูทดิสก์ 8, 5 28-12-2550 22: 50 /dev/sda5brw-rw---- 1 รูทดิสก์ 8, 6 28-12-2550 22:50 /dev/sda6brw-rw---- 1 รูทดิสก์ 8, 7 28-12-2550 22:50 /dev/sda7brw-rw---- 1 รูทดิสก์ 8, 8 28-12-2550 22: 50/ผู้พัฒนา/sda8
จะเห็นว่าตัวอักษรตัวแรกในคอลัมน์แรกคือ
ขคอลัมน์ที่ห้าคือหมายเลข 8
ขบ่งชี้ว่าไฟล์นั้นเป็นไฟล์อุปกรณ์บล็อก ตามลำดับ หากเป็นเช่นนั้น
คหมายถึงอุปกรณ์อักขระ (เช่น `/dev/ttyS0) เกี่ยวกับความแตกต่างระหว่างอุปกรณ์บล็อกและอุปกรณ์อักขระ คุณสามารถดูได้ที่นี่:
อุปกรณ์อักขระ: อุปกรณ์อักขระคืออุปกรณ์ที่สามารถเข้าถึงได้เหมือนกับสตรีมไบต์ เทอร์มินัลอักขระและพอร์ตอนุกรมคืออุปกรณ์อักขระ
อุปกรณ์บล็อก: ระบบไฟล์สามารถรองรับได้บนอุปกรณ์บล็อก ต่างจากอุปกรณ์ตัวละคร อุปกรณ์บล็อกสามารถถ่ายโอนบล็อกที่สมบูรณ์ได้ครั้งละหนึ่งบล็อกขึ้นไปเท่านั้นเมื่ออ่านหรือเขียน ในระบบปฏิบัติการ Linux แอปพลิเคชันสามารถอ่านและเขียนอุปกรณ์บล็อกได้เหมือนกับอุปกรณ์อักขระ (อ่านหรือเขียนข้อมูลไบต์ตามอำเภอใจในแต่ละครั้ง) ดังนั้นความแตกต่างระหว่างอุปกรณ์บล็อคและอุปกรณ์ตัวอักษรจึงเป็นเพียงการจัดการข้อมูลในเคอร์เนลเท่านั้น
หมายเลข 8 คือหมายเลขอุปกรณ์ที่สอดคล้องกับอุปกรณ์ฮาร์ดแวร์ในเคอร์เนล ซึ่งสามารถพบได้ในเคอร์เนล
เอกสารประกอบ/devices.txtและ
/proc/อุปกรณ์ค้นหาการกำหนดหมายเลขอุปกรณ์ในไฟล์ แต่เหตุใดอุปกรณ์เดียวกันจึงสอดคล้องกับไฟล์อุปกรณ์ต่างกัน (
/dev/sdaทำไมลงท้ายเลขต่างกันและ
LSคอลัมน์ 6 ในผลลัพธ์สอดคล้องกับคอลัมน์เหล่านั้น) นี่เป็นการแยกแยะความแตกต่างระหว่างส่วนต่างๆ ของอุปกรณ์ต่างๆ สำหรับฮาร์ดไดรฟ์ จะจัดการพาร์ติชันต่างๆ ภายในฮาร์ดไดรฟ์ สำหรับเคอร์เนลนั้น จำเป็นต้องค้นหาอุปกรณ์ฮาร์ดแวร์ที่เกี่ยวข้องผ่านหมายเลขอุปกรณ์ในคอลัมน์ 5 เท่านั้น แต่สำหรับโมดูลไดรเวอร์นั้น จำเป็นต้องทราบวิธีจัดการพาร์ติชันต่างๆ ด้วย ดังนั้นจึงมีหมายเลขอุปกรณ์เสริมเพิ่มเติม นั่นคือเนื้อหาที่สอดคล้องกับคอลัมน์ 6 ด้วยวิธีนี้ อุปกรณ์จะมีหมายเลขอุปกรณ์หลัก (คอลัมน์ 5) และหมายเลขอุปกรณ์เสริม (คอลัมน์ 6) จึงช่วยอำนวยความสะดวกในการจัดการอุปกรณ์ฮาร์ดแวร์ต่างๆ
เนื่องจากไฟล์อุปกรณ์สอดคล้องกับฮาร์ดแวร์ คุณจึงสามารถเข้าถึงไฟล์ได้โดยตรง
/dev/sda(ในกรณีของ
ไอดีฮาร์ดไดรฟ์จากนั้นอุปกรณ์ที่เกี่ยวข้องก็คือ
/dev/hda(la) อ่านข้อมูลฮาร์ดดิสก์จากอุปกรณ์ เช่น
ใช้
ววคำสั่งคัดลอก 512 ไบต์แรกของฮาร์ดดิสก์และต้องการผู้ใช้รูท
$ sudo dd if=/dev/sda of=mbr.bin bs=512 นับ=1
ใช้
ไฟล์คำสั่งเพื่อดูข้อมูลที่เกี่ยวข้อง
$ ไฟล์ mbr.binmbr.bin: เซกเตอร์สำหรับบูต x86, LInux i386 บูต LOader; พาร์ติชัน 3: ID=0x82, starthead 254, เริ่มเซกเตอร์ 19535040, 1959930 เซกเตอร์; พาร์ติชัน 4: ID=0x5, starthead 254, เริ่มเซกเตอร์ 21494970, 56661255 เซกเตอร์, รหัส ชดเชย 0x48
ยังสามารถใช้ได้
อ.อคำสั่งถูกอ่านในรูปแบบเลขฐานสิบหกและวิเคราะห์
$ od -x mbr.bin
บีคือขนาดของบล็อก (เป็นไบต์
ไบต์เป็นหน่วย)
นับคือจำนวนบล็อก
เนื่องจากข้อมูลนี้ไม่เป็นไปตามสัญชาตญาณ (และจะมีการวิเคราะห์เพิ่มเติมด้านล่าง) เรามาดูไฟล์อุปกรณ์อื่นก่อน ซึ่งจะสามารถแสดงให้เห็นถึงความสอดคล้องระหว่างไฟล์อุปกรณ์และฮาร์ดแวร์ได้อย่างสังหรณ์ใจ ลองใช้เมาส์เป็นตัวอย่าง ลองอ่านข้อมูลของไฟล์อุปกรณ์ที่ตรงกับเมาส์
$ sudo -s# cat /dev/input/mouse1 | .od -x
ไดรเวอร์เมาส์ของคุณอาจแตกต่างกัน ดังนั้นไฟล์ของอุปกรณ์อาจเป็นไฟล์อื่น แต่จะอยู่ในนั้นทั้งหมด
/dev/inputลง.
เลื่อนเมาส์และดูว่าคุณพบข้อมูลที่แตกต่างกันหรือไม่ ตามหลักการนี้เรามักจะอ่านไฟล์อุปกรณ์ที่ปลายด้านหนึ่งด้วย
/dev/ttyS0เนื้อหาในไฟล์อุปกรณ์ที่อยู่อีกด้านหนึ่ง
/dev/ttyS0เขียนเนื้อหาเพื่อตรวจสอบว่าสายพอร์ตอนุกรมเสียหายหรือไม่
ณ จุดนี้ คุณควรประทับใจมากขึ้นกับความสัมพันธ์ระหว่างไดรเวอร์อุปกรณ์ ไฟล์อุปกรณ์ และอุปกรณ์ฮาร์ดแวร์ หากคุณต้องการความเข้าใจเชิงลึกเกี่ยวกับหลักการทำงานของไดรเวอร์อุปกรณ์และการเขียนไดรเวอร์อุปกรณ์ โปรดดูข้อมูลที่เกี่ยวข้องตามรายการด้านล่าง และเริ่มกระบวนการเขียนไดรเวอร์อุปกรณ์
อ้างอิง:
คอมไพล์เคอร์เนล linux 2.6.1
หลักการเขียนไดรเวอร์ฮาร์ดแวร์สำหรับระบบ Linux
หลักการ การกำหนดค่า และปัญหาทั่วไปของอุปกรณ์ USB ภายใต้ Linux
คู่มือการเขียนโปรแกรมโมดูลเคอร์เนล Linux
การพัฒนาไดรเวอร์อุปกรณ์ Linux
ในความเป็นจริง หน่วยความจำ ดิสก์ USB ฯลฯ สามารถใช้เป็นอุปกรณ์ "จัดเก็บข้อมูล" พื้นฐานของระบบไฟล์ได้ แต่ที่นี่ เราใช้ฮาร์ดดิสก์เป็นตัวอย่างเพื่อแนะนำความสัมพันธ์ระหว่างดิสก์และพาร์ติชันเท่านั้น
ปัจจุบัน การแบ่งพาร์ติชัน Linux ยังคงใช้หลักการแบ่งพาร์ติชันที่ใช้โดยฮาร์ดดิสก์พีซีเครื่องแรก มีการวิเคราะห์และสาธิตทีละขั้นตอนด้านล่าง
มาดูแนวคิดบางประการก่อน:
การจัดการอุปกรณ์และการแบ่งพาร์ติชัน
ภายใต้ Linux อุปกรณ์เก็บข้อมูลแต่ละตัวจะสอดคล้องกับไฟล์อุปกรณ์ระบบ ฯลฯ
ไอดีและ
SCSIอุปกรณ์ในระบบ
/devอักขระที่มีเนื้อหาที่เกี่ยวข้องสามารถพบได้ในไดเร็กทอรี
ความละเอียดสูงและ
SDไฟล์อุปกรณ์ ขึ้นอยู่กับอินเทอร์เฟซอุปกรณ์เมนบอร์ดและอินเทอร์เฟซสายเคเบิลข้อมูลที่เชื่อมต่อฮาร์ดดิสก์
ความละเอียดสูงหรือ
SDหลังจากอักขระคุณสามารถเพิ่มอักขระจากได้
กมาถึง
zอักขระเช่น
เอชดีเอ-
เอชดีบี-
เอชดีซีและ
สดา-
เอสดีบี-
เอสดีซีเป็นต้น นอกจากนี้ เพื่อที่จะแยกแยะพาร์ติชั่นต่าง ๆ ของอุปกรณ์ฮาร์ดแวร์เดียวกัน คุณสามารถเพิ่มตัวเลขที่ส่วนท้ายได้ เช่น
hda1-
hda2-
hda3และ
sda1-
sda2-
sda3เข้าไปเลย
/ผู้พัฒนาไดเร็กทอรี คุณสามารถดูไฟล์อุปกรณ์ที่คล้ายกันจำนวนมากได้
บทบาทของแต่ละพาร์ติชัน
เมื่อทำการแบ่งพาร์ติชั่น เรามักจะประสบปัญหาเกี่ยวกับพาร์ติชั่นหลักและโลจิคัลพาร์ติชั่น ซึ่งจริงๆ แล้วมีไว้เพื่ออำนวยความสะดวกในการขยายพาร์ติชั่น เช่นเดียวกับการนำโลจิคัลวอลุ่มในภายหลังมาใช้ในการจัดการฮาร์ดดิสก์หลายตัวได้ดีขึ้น การนำพาร์ติชั่นหลักและโลจิคัลพาร์ติชั่นสามารถ จัดการพาร์ติชั่นได้อย่างง่ายดาย
อุปกรณ์ฮาร์ดดิสก์แต่ละตัวในระบบ Linux ประกอบด้วยพาร์ติชันหลักสูงสุด 4 พาร์ติชัน (รวมถึงพาร์ติชันเสริม)
คอมพิวเตอร์ใช้พาร์ติชันหลักเพื่อเริ่มระบบปฏิบัติการ ดังนั้นควรเก็บโปรแกรมเริ่มต้นของแต่ละระบบปฏิบัติการหรือโปรแกรมบูตไว้บนพาร์ติชันหลัก Linux กำหนดว่าพาร์ติชันหลัก (หรือพาร์ติชันเสริม) จะใช้หมายเลขพาร์ติชัน 4 ตัวแรก ดังนั้นคุณจะเห็นว่าไฟล์อุปกรณ์ที่สอดคล้องกับพาร์ติชันหลักคือ
/dev/hda1-4หรือ
/dev/sda1-4แทนที่จะเป็น
hda5หรือ
sda5-
พาร์ติชันเสริมถูกใช้เพื่อขยายโลจิคัลพาร์ติชันเพิ่มเติม ภายใต้ Linux โลจิคัลพาร์ติชันจะครอบครอง
hda5-16หรือ
sda5-16รอเลข12ครับ
ประเภทพาร์ติชัน
ระบุประเภทของระบบไฟล์บนพาร์ติชันนี้ Linux รองรับระบบไฟล์หลายประเภท เช่น msdoc, vfat, ext2, ext3 และอื่นๆ เราจะแนะนำข้อมูลเพิ่มเติมในส่วนถัดไป
ต่อไปโดยการวิเคราะห์ 512 ไบต์แรกของฮาร์ดดิสก์ (เช่น
เอ็มบีอาร์) เพื่อวิเคราะห์และทำความเข้าใจพาร์ติชัน
มาดูภาพนี้กันก่อน:

มันถูกใช้เพื่ออธิบาย
เอ็มบีอาร์โครงสร้าง.
เอ็มบีอาร์รวมถึงส่วนบูต ตารางพาร์ติชัน และเครื่องหมายสิ้นสุด `(55AAH) ตามลำดับครอบครอง 446 ไบต์ 64 ไบต์ และ 2 ไบต์ 512 ไบต์ ที่นี่เราเน้นเฉพาะส่วนของตารางพาร์ติชันนั่นคือ 64 ไบต์ตรงกลางและส่วนด้านซ้ายในรูป
เนื่องจากผมใช้
SCSIฮาร์ดไดรฟ์ ต่อไปนี้มาจาก
/dev/sdaคัดลอก 512 ไบต์แรกของฮาร์ดดิสก์ไปยังไฟล์ในอุปกรณ์
mbr.binกลาง.
$ sudo -s# dd if=/dev/sda of=mbr.bin bs=512 นับ=1
ใช้ด้านล่าง
ไฟล์-
อ.อ-
fdiskรอคำสั่งวิเคราะห์ย่อหน้านี้
เอ็มบีอาร์แล้วเปรียบเทียบกับกราฟด้านบนเพื่อความเข้าใจที่ลึกซึ้งยิ่งขึ้น
$ ไฟล์ mbr.binmbr.bin: เซกเตอร์สำหรับบูต x86, LInux i386 บูต LOader; พาร์ติชัน 3: ID=0x82, starthead 254, เริ่มเซกเตอร์ 19535040, 1959930 เซกเตอร์; พาร์ติชัน 4: ID=0x5, starthead 254, เริ่มเซกเตอร์ 21494970, 56661255 เซกเตอร์, รหัส ชดเชย 0x48$ od -x mbr.bin |. tail -6 #เน้นเฉพาะตรงกลาง 64 ไบต์ ดังนั้น 6 บรรทัดสุดท้ายในผลลัพธ์จึงถูกดัก 0000660 0000 0000 0000 0000 a666 a666 0000 01800000700 0001 fe83 ffff 003f 0000 148 1 012a 00000000720 0000 0000 0000 0000 0000 0000 0000 fe000000740 ffff fe82 ffff 14c0 012a e7fa 001d fe000000760 ffff fe05 ffff fcba 0147 9507 0360 aa55$ sudo -s# fdisk -l |. grep ^/ #วิเคราะห์เฉพาะส่วนที่เกี่ยวข้องกับ MBR เท่านั้น ห้ามวิเคราะห์ส่วนโลจิคัลพาร์ติชัน /dev/sda1 * 1 1216 9767488+ 83 Linux/dev/sda3 1217 1338 979965 82 Linux สลับ / Solaris/dev/sda4 1339 4865 28330627+ 5 ขยาย
ไฟล์ผลลัพธ์ของคำสั่งแสดงว่า 512 ไบต์ที่เพิ่งคัดลอกคือเซกเตอร์สำหรับบูต และส่วนที่คั่นด้วยเครื่องหมายอัฒภาคคือ
บูตโหลดเดอร์พาร์ติชั่น 3 และพาร์ติชั่น 4 ประเภทของพาร์ติชัน 3 คือ 82 นั่นคือ
แลกเปลี่ยนพาร์ติชั่น (สามารถทำได้ผ่าน
fdiskผู้บังคับบัญชา
ลคำสั่งให้แสดงรายการข้อมูลที่เกี่ยวข้อง) ซึ่งสอดคล้องกับ
fdiskในผลลัพธ์ของ
/dev/sda3ในคอลัมน์ที่ 5 ของแถว จำนวนเซกเตอร์ในพาร์ติชัน 3 คือ 1959930 ซึ่งแปลงเป็นไบต์คือ
1959930*512(ปัจจุบันขนาดเซกเตอร์เริ่มต้นสำหรับฮาร์ดไดรฟ์คือ 512 ไบต์) ในขณะที่
แลกเปลี่ยนขนาดบล็อกเริ่มต้นสำหรับพาร์ติชันคือ 1,024 ไบต์ ดังนั้นจำนวนบล็อกจึงเท่ากับ
-
$ เสียงสะท้อน 1959930*512/1024 |. bc979965
อย่างแน่นอน
fdiskผลลัพธ์ใน
/dev/sda3สามารถเปรียบเทียบจำนวนบล็อกที่ตรงกับคอลัมน์ที่สี่ของแถวได้เช่นเดียวกัน
fdiskและ
ไฟล์ผลลัพธ์จะถูกวิเคราะห์สำหรับพาร์ติชัน 4
มาดูกันอีกครั้ง
อ.อผลลัพธ์ของคำสั่งจะแสดงเป็นเลขฐานสิบหกด้วย ให้พิจารณาพาร์ติชัน 3 ด้วย หลังจากการคำนวณพบว่าพาร์ติชัน 3 สอดคล้องกัน
อ.อผลลัพธ์ของคำสั่งคือ:
fe00 ffff fe82 ffff 14c0 012a e7fa 001d
อันแรกคือเครื่องหมายพาร์ติชัน
00Hจากภาพด้านบนจะเห็นว่าไม่ใช่พาร์ติชันสำหรับบูต (
80ชมอันที่ทำเครื่องหมายไว้คือพาร์ติชั่นสำหรับบูต) แล้วประเภทของพาร์ติชั่นล่ะ? สำหรับ
82H,และ
ไฟล์ผลลัพธ์การแสดงผลสอดคล้องกัน ทีนี้มาใส่ใจกับขนาดพาร์ติชั่นกันดีกว่า
ไฟล์จำนวนเซกเตอร์ในผลลัพธ์
$ echo ibase=10;obase=16;1959930 |.bc1DE7FA
แค่สอดคล้องกัน
e7fa 001dให้พิจารณาผลลัพธ์ของพาร์ติชันสำหรับเริ่มระบบในทำนองเดียวกัน:
0180 0001 fe83 ffff 003f 0000 1481 012a
แท็กพาร์ติชัน:
80ชมซึ่งเพิ่งสะท้อนให้เห็นว่าพาร์ติชันนี้เป็นพาร์ติชันสำหรับเริ่มระบบ ตามด้วยสถานการณ์เซกเตอร์ดิสก์ที่มีพาร์ติชันสำหรับเริ่มระบบอยู่ 010100 นั่นคือ 1 ด้าน 0 แทร็ก และ 1 เซกเตอร์ เนื้อหาอื่นๆสามารถเปรียบเทียบและวิเคราะห์ได้
เมื่อพิจารณาถึงข้อจำกัดด้านเวลา โปรดดูข้อมูลด้านล่างหรือคู่มือระบบที่เกี่ยวข้องสำหรับรายละเอียดเพิ่มเติม
ภาคผนวก : เมื่อติดตั้งระบบสามารถใช้งานได้
fdisk-
cfdiskรอให้คำสั่งแบ่งพาร์ติชัน หากคุณต้องการบู๊ตจากพาร์ติชั่นบางตัว คุณต้องพิมพ์
80ชมแท็ก เช่น ผ่าน
cfdiskตั้งค่าพาร์ติชั่นเป็น
สามารถบูตได้เพื่อให้บรรลุ
อ้างอิง:
ภายในกระบวนการบูต Linux
พัฒนาระบบปฏิบัติการของคุณเอง: การบูท
รู้เบื้องต้นเกี่ยวกับพาร์ติชันดิสก์ Redhat9
พาร์ติชัน Linux HOWTO
ก่อนที่จะมีการแนะนำโลจิคัลวอลุ่ม ประเภทพาร์ติชั่นและประเภทระบบไฟล์ได้รับการปฏิบัติแทบจะเท่าเทียมกัน กระบวนการตั้งค่าประเภทพาร์ติชั่นคือกระบวนการฟอร์แมตพาร์ติชั่นและการสร้างประเภทระบบไฟล์ที่เกี่ยวข้อง
เนื้อหาต่อไปนี้จะแนะนำวิธีสร้างความสัมพันธ์ระหว่างพาร์ติชันและประเภทระบบไฟล์เป็นหลัก ซึ่งก็คือ วิธีจัดรูปแบบพาร์ติชันตามประเภทระบบไฟล์ที่ระบุ
ก่อนอื่นเรามาดูประเภทระบบไฟล์ทั่วไปใน Linux กันก่อน (หากคุณต้องการดูไฟล์ทุกประเภทที่ Linux รองรับ คุณสามารถใช้
fdiskผู้บังคับบัญชา
ลคำสั่งให้ดูหรือผ่าน
ผู้ชาย fsหากต้องการดูคุณสามารถใช้
/proc/ระบบไฟล์ตรวจสอบประเภทระบบไฟล์ที่เคอร์เนลปัจจุบันรองรับ)
ต่อ 2-
ต่อ 3-
ต่อ 4: ทั้งสามนี้เป็นประเภทที่ใช้กันทั่วไปโดยระบบไฟล์รูทของ Linux
แลกเปลี่ยน: นี่คือระบบไฟล์ที่ใช้ในการนำหน่วยความจำเสมือน Linux ไปใช้ ในระหว่างการติดตั้ง โดยทั่วไปจำเป็นต้องสร้างพาร์ติชันพิเศษและจัดรูปแบบเป็น
แลกเปลี่ยนระบบไฟล์ (ถ้าคุณต้องการเพิ่มมากขึ้น
แลกเปลี่ยนสำหรับการแบ่งพาร์ติชัน คุณสามารถดูเอกสารอ้างอิงในส่วนนี้เพื่อทำความคุ้นเคย
วว-
mkswap-
สวาปอน-
การแลกเปลี่ยนการใช้คำสั่งอื่นๆ)
โครงการ: นี่เป็นระบบไฟล์ที่ค่อนข้างพิเศษซึ่งมีอยู่เป็นส่วนต่อประสานระหว่างเคอร์เนลและผู้ใช้และมีหน่วยความจำในตัว (สามารถเข้าถึงได้ผ่าน
แมวมุมมองคำสั่ง
/procไฟล์ที่อยู่ในระบบสามารถแก้ไขได้ด้วย
/proc/sysไฟล์ด้านล่างสามารถปรับการกำหนดค่าเคอร์เนลได้แบบเรียลไทม์ หลักฐานปัจจุบันคือสิ่งที่คุณต้องการ
โครงการในการเมานต์ระบบไฟล์:
เมานต์ -t proc proc /proc
นอกเหนือจากประเภทระบบไฟล์ข้างต้นแล้ว ยังรองรับ Linux ด้วย
วีแฟต-
ไอโซ-
xfs-
เอ็นเอฟเอสในบรรดาระบบไฟล์ทั่วไปประเภทต่างๆ ภายใต้ Linux คุณสามารถดูและใช้งานระบบไฟล์ที่ใช้โดยระบบปฏิบัติการอื่น เช่น Windows ได้อย่างอิสระ
แล้วคุณจะสร้างความสัมพันธ์ระหว่างดิสก์กับระบบไฟล์เหล่านี้ได้อย่างไร? รูปแบบ
กระบวนการฟอร์แมตเป็นกระบวนการจัดระเบียบพาร์ติชันใหม่ซึ่งอาจเป็นได้
เอ็มเคเอฟเอสคำสั่งให้บรรลุแน่นอนคุณสามารถผ่านได้เช่นกัน
fdiskรอให้คำสั่งถูกนำมาใช้ ที่นี่เราเพียงแนะนำ
เอ็มเคเอฟเอส-
เอ็มเคเอฟเอสสามารถใช้เพื่อฟอร์แมตพาร์ติชันที่มีอยู่ได้ แต่ไม่สามารถดำเนินการพาร์ติชันได้ (หากคุณต้องการแบ่งพาร์ติชันและฟอร์แมตดิสก์ คุณสามารถใช้
fdisk- หลังจากการฟอร์แมต ข้อมูลบนพาร์ติชันที่เกี่ยวข้องจะถูกจัดระเบียบตามประเภทระบบไฟล์พิเศษ
ตัวอย่างเช่น: ใส่
/dev/sda9พาร์ติชันถูกฟอร์แมตเป็น
ต่อ 3ระบบไฟล์
$ sudo -s# mkfs -t ext3 /dev/sda9
หากคุณต้องการแสดงรายการประเภทระบบไฟล์ของแต่ละพาร์ติชันคุณสามารถใช้
fdisk -lคำสั่ง.
โปรดดูเอกสารต่อไปนี้สำหรับข้อมูลเพิ่มเติม
อ้างอิง:
ขั้นตอนในการโหลดพาร์ติชั่น swap ภายใต้ Linux
การผลิตและเบิร์นไฟล์อิมเมจ ISO บน Linux
คำอธิบายพาร์ติชั่นดิสก์ RAM:[1],[2]
คู่มือการติดตั้งระบบไฟล์ขั้นสูง
ส่วนก่อนหน้านี้ได้ฟอร์แมตพาร์ติชั่นโดยตรงให้เป็นระบบไฟล์ประเภทหนึ่ง แต่เมื่อพิจารณาถึงความจำเป็นในการขยายอุปกรณ์จัดเก็บข้อมูลใหม่ นักพัฒนาได้แนะนำโลจิคัลวอลุ่มระหว่างระบบไฟล์และพาร์ติชั่น เมื่อคำนึงถึงข้อจำกัดด้านเวลา ฉันจะไม่ลงรายละเอียดที่นี่ โปรดดูข้อมูลอ้างอิง: คำอธิบายโดยละเอียดเกี่ยวกับการจัดการโลจิคัลวอลุ่ม Linux
สิ่งที่ระบบไฟล์นำเสนอในที่สุดคือโครงสร้างภาพ ซึ่งสามารถนำเสนอได้โดยใช้คำสั่ง เช่น ls, find และ tree มันเหมือนกับ "ต้นไม้" ที่กลับหัว และ "ต้นไม้" ใหม่สามารถติดตั้งบนโหนดของต้นไม้ได้
ต่อไปนี้เป็นคำแนะนำโดยย่อเกี่ยวกับการติดตั้งระบบไฟล์
ระบบไฟล์สามารถติดตั้งผ่านอุปกรณ์ (
เมานต์) ไปยังไดเร็กทอรีซึ่งเรียกว่าจุดเชื่อมต่อ สิ่งที่น่าสนใจคือภายใต้ Linux ไดเร็กทอรีสามารถติดตั้งกับไดเร็กทอรีอื่นได้และสามารถติดตั้งไฟล์ที่จัดรูปแบบแล้วผ่านอุปกรณ์พิเศษได้
/dev/วนซ้ำเพื่อเมานต์ (เช่น
ไอโซเอกสาร). นอกจากนี้ ในส่วนของระบบไฟล์ Linux ไม่เพียงแต่สนับสนุนระบบไฟล์ในเครื่องเท่านั้น แต่ยังสนับสนุนระบบไฟล์ระยะไกลด้วย (เช่น
เอ็นเอฟเอส-
ต่อไปนี้จะแนะนำตัวอย่างต่างๆ ของการติดตั้งระบบไฟล์โดยย่อ
การติดตั้งระบบไฟล์รูท
การติดตั้งต้องใช้สิทธิ์รูท เช่น การติดตั้งระบบไฟล์รูทของระบบ
/dev/sda1มาถึง
/เดือน
$ sudo -s# mount -t ext3 /dev/sda1 /mnt/
ตรวจสอบ
/dev/sda1ดังที่คุณเห็นจากสถานการณ์การติดตั้ง อุปกรณ์สามารถติดตั้งได้หลายครั้ง
$ mount | .grep sda1/dev/sda1 บน / พิมพ์ ext3 (rw, errors=remount-ro)/dev/sda1 บน /mnt พิมพ์ ext3 (rw)
สำหรับระบบไฟล์ที่เมาท์แล้ว สามารถต่อเชื่อมใหม่ได้เพื่อรองรับแอ็ตทริบิวต์ที่แตกต่างกัน
$ mount -n -o ติดตั้งใหม่, rw /
ติดตั้งอุปกรณ์ใหม่
หากเคอร์เนลรองรับอินเทอร์เฟซ USB อยู่แล้วเมื่อเสียบแฟลชไดรฟ์ USB คุณก็ผ่านได้
ดีเอ็มเอสจีคำสั่งเพื่อดูหมายเลขอุปกรณ์ที่เกี่ยวข้องและต่อเชื่อม
ตรวจสอบ
ดีเอ็มเอสจีสำหรับสองสามบรรทัดสุดท้ายของผลลัพธ์ ให้ค้นหาสิ่งที่ต้องการ
/dev/sdNข้อมูลเพื่อค้นหาหมายเลขอุปกรณ์ที่สอดคล้องกับดิสก์ USB
$dmesg
สันนิษฐานที่นี่ว่าเป็นดิสก์ USB
วีแฟตรูปแบบเพื่อให้สามารถใช้กับ Windows ในโรงพิมพ์บางแห่งได้
# mount -t vfat /dev/sdN /path/to/mountpoint_directory
เมานต์ไฟล์ iso หรือซีดี
คุณสามารถใช้ไฟล์ ISO หรือดิสก์รูปแบบ ISO บางไฟล์ได้
เมานต์คำสั่งให้เมานต์
สำหรับไฟล์ iso:
# mount -t iso9660 /path/to/isofile /path/to/mountpoint_directory
สำหรับซีดี:
# mount -t iso9660 /dev/cdrom /path/to/mountpoint_directory
ติดตั้งระบบไฟล์ระยะไกล
# เมานต์ -t nfs remote_ip:/path/to/share_directory /path/to/local_directory
ติดตั้งระบบไฟล์ proc
# mount -t proc proc /proc
โครงการระบบไฟล์ถูกจัดระเบียบในหน่วยความจำ แต่สามารถติดตั้งเข้ากับไดเร็กทอรีได้ ปกติจะติดไว้.
/procไดเร็กทอรีเพื่อให้เครื่องมือการจัดการและการกำหนดค่าระบบบางอย่างสามารถใช้งานได้ ตัวอย่างเช่น
สูงสุดคำสั่งใช้เพื่อวิเคราะห์การใช้งานหน่วยความจำ (read
/proc/meminfoและ
/proc/statไฟล์ ฯลฯ );
lsmodคำสั่งเพื่อรับสถานะของโมดูลเคอร์เนล (read
/proc/โมดูล-
เน็ตสแตทคำสั่งเพื่อรับสถานะของเครือข่ายผ่านมัน (อ่าน
/proc/net/devและเอกสารอื่นๆ) แน่นอนว่าเครื่องมือที่เกี่ยวข้องก็สามารถเขียนได้เช่นกัน อีกทั้งโดยการปรับ
/proc/sysไฟล์ในไดเร็กทอรีสามารถปรับการกำหนดค่าระบบแบบไดนามิก เช่น ไปที่
/proc/sys/net/ipv4/ip_forwardการเขียนหมายเลข 1 ลงในไฟล์จะทำให้เคอร์เนลสามารถรองรับการส่งต่อแพ็กเก็ตได้ (สำหรับข้อมูลเพิ่มเติมโปรดดูที่
โครงการช่วย,
มนุษย์``-
เมานต์ไดเร็กทอรี
$ mount --bind /path/to/needtomount_directory /path/to/mountpoint_directory
สิ่งนี้น่าสนใจมาก ตัวอย่างเช่น คุณสามารถเมานต์ไดเร็กทอรีกับไดเร็กทอรีรากของบริการ ftp และจัดเตรียมทรัพยากรในไดเร็กทอรีที่เกี่ยวข้องเพื่อให้ผู้อื่นแชร์ได้โดยไม่ต้องคัดลอกเนื้อหา
การติดตั้งที่กล่าวถึงข้างต้นเท่านั้น แล้วจะถอนการติดตั้งได้อย่างไร? ใช้
จำนวนเพียงปฏิบัติตามคำสั่งด้วยที่อยู่ต้นทางหรือจุดเมานท์ (อุปกรณ์ ไฟล์ ไดเร็กทอรีระยะไกล ฯลฯ) ของการเมานต์ ตัวอย่างเช่น:
$ umount /path/to/mountpoint_directory
หรือ
$ umount /path/to/mount_source
หากคุณต้องการจัดการบริการที่ติดตั้งจำนวนมากหรือบ่อยครั้ง การติดตั้งด้วยตนเองในแต่ละครั้งถือเป็นความคิดที่ไม่ดี คุณสามารถใช้มันได้เลย
เมานต์ไฟล์การกำหนดค่า
/etc/fstab,มัดรวม
เมานต์พารามิเตอร์ที่เกี่ยวข้องจะถูกเขียนเป็น
/etc/fstabการติดตั้งแบบแบตช์สามารถทำได้ในคอลัมน์ที่สอดคล้องกับไฟล์ (
ภูเขา -a) และถอนการติดตั้ง (
จำนวน -a-
/etc/fstabคอลัมน์ได้แก่ ระบบไฟล์ จุดเชื่อมต่อ ประเภท และตัวเลือกที่เกี่ยวข้อง สำหรับข้อมูลเพิ่มเติม โปรดดูที่
fstabช่วย (
ผู้ชาย fstab-
อ้างอิง:
พาร์ติชันฮาร์ดดิสก์ Linux และหลักการติดตั้ง
ดูระบบไฟล์เสมือน Linux จากไฟล์ I/O
การวิเคราะห์ซอร์สโค้ด: การวิเคราะห์แบบคงที่แผนภาพการเรียกฟังก์ชันโปรแกรม C
มีไดเร็กทอรีพื้นฐานบางส่วนภายใต้ระบบไฟล์ Linux และไฟล์ต่างๆ ที่มีฟังก์ชันต่างกันจะถูกจัดเก็บไว้ในไดเร็กทอรีที่ต่างกัน ไดเร็กทอรีพื้นฐานที่สุดคือ
/ฯลฯ-
/lib-
/ผู้พัฒนา-
/binฯลฯ ซึ่งจัดเก็บไฟล์การกำหนดค่าระบบ ไฟล์ไลบรารี ไฟล์อุปกรณ์ และโปรแกรมปฏิบัติการตามลำดับ โดยทั่วไปแล้วไดเร็กทอรีเหล่านี้มีความจำเป็น เมื่อทำการพัฒนาแบบฝัง คุณจะต้องดำเนินการด้วยตนเองหรือใช้
กล่องยุ่งรอให้เครื่องมือสร้างระบบไฟล์พื้นฐานดังกล่าว ที่นี่เราเพียงแต่สร้างระบบไฟล์ที่เรียบง่ายและดำเนินการต่างๆ ตามปกติบนระบบไฟล์เพื่อให้เข้าใจระบบไฟล์ของเราให้ลึกซึ้งยิ่งขึ้น
ยังจำได้
ววคำสั่ง? เพียงใช้มันเพื่อสร้างไฟล์ขนาดคงที่นี่คือ
1M(1024*1024 ไบต์)ไฟล์
$ dd if=/dev/zero of=minifs bs=1024 นับ=1024
ดูประเภทไฟล์ได้ที่นี่
มินิฟคือเต็ม
\0ไฟล์โดยไม่มีโครงสร้างข้อมูลเฉพาะใดๆ
$ ไฟล์ minifsminifs: data
แสดงให้เห็น:
/dev/ศูนย์เป็นอุปกรณ์ที่พิเศษมากหากอ่านแล้วจะได้จำนวนเท่าใดก็ได้
\0-
จากนั้นไฟล์จะถูกจัดรูปแบบเป็นระบบไฟล์ตามประเภทไฟล์ที่ระบุ (ดูเหมือนเหลือเชื่อไหมที่ไฟล์สามารถฟอร์แมตได้ด้วย ใช่ ไม่เพียงแต่อุปกรณ์เท่านั้นที่สามารถจัดรูปแบบได้ ไฟล์ยังสามารถจัดระเบียบในระบบไฟล์บางประเภทได้ แต่ควรสังเกตว่าระบบไฟล์บางระบบ (เช่น
ต่อ 3) กำหนดให้เป้าหมายต้องจัดรูปแบบให้มีอย่างน้อย
64มช่องว่าง).
$ mkfs.ext2 มินิฟ
ตรวจสอบประเภทไฟล์ในขณะนี้
มินิฟเพียงแค่ใช้เวลา
ต่อ 2จัดรูปแบบระบบไฟล์
$ file minifsminifs: ข้อมูลระบบไฟล์ Linux rev 1.0 ext2
เนื่องจากไฟล์ถูกจัดระเบียบตามประเภทระบบไฟล์คุณจึงสามารถใช้งานได้
เมานต์คำสั่งให้ mount และใช้งาน
กรุณาเปลี่ยนไปที่
รากผู้ใช้เมานต์และผ่าน
-o วนซ้ำตัวเลือกเพื่อเชื่อมโยงกับอุปกรณ์เฉพาะ
/dev/วนซ้ำ
$ sudo -s# เมานต์ minifs /mnt/ -o วนซ้ำ
ดูข้อมูลระบบไฟล์และดูเพียงไฟล์ไดเร็กทอรีเดียวเท่านั้น
สูญหาย+พบ
$ ls /mnt/lost+found
ดำเนินการต่างๆ ตามปกติภายใต้ระบบไฟล์นี้ รวมถึงการอ่าน การเขียน การลบ ฯลฯ (ก่อนดำเนินการแต่ละครั้งกรุณา
มินิฟบันทึกสำเนาของไฟล์เพื่อการเปรียบเทียบ เมื่อรวมกับข้อมูลที่เกี่ยวข้อง คุณสามารถดำเนินการวิเคราะห์เชิงลึกของการเปลี่ยนแปลงระบบไฟล์ที่เกิดจากการดำเนินการต่างๆ จึงเข้าใจเชิงลึกเกี่ยวกับหลักการใช้งานของระบบไฟล์เป็นแนวทาง เพื่อจัดระเบียบข้อมูล ฯลฯ)
$ cp minifs minifs.bak$ cd /mnt$ touch สวัสดี$ cd -$ cp minifs minifs-touch.bak$ od -x minifs.bak > orig.od$ od -x minifs-touch.bak > touch.od
หลังจากสร้างไฟล์แล้ว ให้เปรียบเทียบความเหมือนและความแตกต่างระหว่างระบบไฟล์ปัจจุบันและระบบไฟล์ก่อนหน้า
$ diff orig.od touch.oddiff orig.od touch.od61,63c61,64< 0060020 000c 0202 2e2e 0000 000b 0000 03e8 020a< 0060040 6f6c 7473 662b 756f 646e 0000 0000 0000< 0060060 0000 0000 0000 0000 0000 0000 0000 0000---> 0060020 000c 0202 2e2e 0000 000b 0000 0014 020a> 0060040 6f6c 7473 662b 756f 646e 0000 000c 0000> 0060060 03d4 0105 6568 6c6c 006f 0000 0000 0000> 0060100 0000 0000 0000 0000 0000 0000 0000 0000
จากการเปรียบเทียบ พบว่าเมื่อมีการเพิ่มไฟล์ ตำแหน่งที่สอดคล้องกันของระบบไฟล์จะเปลี่ยนไปอย่างมาก
$ echo สวัสดีชาวโลก > /mnt/hello
ดำเนินการ
ซิงค์คำสั่งเพื่อให้แน่ใจว่าข้อมูลในแคชถูกเขียนลงดิสก์แล้ว (จำรูปที่ 1 ของส่วนนี้
แคชบัฟเฟอร์นี่มัน.
แคชข้อมูลในถูกเขียนลงดิสก์)
$ ซิงค์$ cp minifs minifs-echo.bak$ od -x minifs-echo.bak > echo.od
หลังจากเขียนเนื้อหาไฟล์แล้ว ให้เปรียบเทียบความเหมือนและความแตกต่างระหว่างระบบไฟล์กับระบบไฟล์ก่อนหน้า
$ diff touch.od echo.od
ดูสตริงในระบบไฟล์
$ strings minifslost+foundhellohello ชาวโลก
ลบ
สวัสดีไฟล์ ดูการเปลี่ยนแปลงระบบไฟล์
$ rm /mnt/hello$ cp minifs minifs-rm.bak$ od -x minifs-rm.bak > rm.od$ ส่วนต่าง echo.od rm.od
เมื่อดูที่สตริงในระบบไฟล์ เราพบว่าเนื้อหาไฟล์ไม่ได้ถูกเขียนทับเมื่อไฟล์ถูกลบ ดังนั้นตามทฤษฎีแล้ว เนื้อหายังคงสามารถกู้คืนได้ในขณะนี้
$ strings minifslost+foundhellohello ชาวโลก
ข้างต้นสาธิตเฉพาะเครื่องมือทั่วไปบางอย่างสำหรับการวิเคราะห์ระบบไฟล์และวิเคราะห์การดำเนินการทั่วไปหลายประการ หากคุณต้องการทำความเข้าใจหลักการใช้งานระบบไฟล์อย่างลึกซึ้ง โปรดทำความคุ้นเคยกับการใช้เครื่องมือข้างต้นและอ่านเอกสารที่เกี่ยวข้อง
อ้างอิง:
สร้างระบบไฟล์ขนาดเล็กใน linux ตั้งแต่เริ่มต้น
สร้างระบบไฟล์ขนาดเล็กใน Linux ด้วย BusyBox
ระบบไฟล์ ext2
พร้อมด้วย
ฟิวส์ด้วยการเกิดขึ้นของฟิวส์ ทำให้สามารถพัฒนาระบบไฟล์ในพื้นที่ผู้ใช้ได้ หากคุณต้องการพัฒนาระบบไฟล์ของคุณเอง แนะนำให้อ่าน: ใช้ฟิวส์เพื่อพัฒนาระบบไฟล์ของคุณเอง
เมื่อวันที่ 22 ธันวาคม 2550 ฉันรวบรวมข้อมูลจำนวนมากและเขียนกรอบการทำงานโดยรวม
ร่างแรกแล้วเสร็จในช่วงบ่ายของวันที่ 28 ธันวาคม 2550 เมื่อพิจารณาจากข้อจำกัดด้านเวลาแล้ว ยังไม่มีการวิเคราะห์รายละเอียดเพิ่มเติมมากนัก นอกจากนี้ ยังอาจมีปัญหาในการทำความเข้าใจในบางส่วนก็ได้
เมื่อช่วงเย็นของวันที่ 28 ธันวาคม 2550 มีการแก้ไขข้อมูลบางส่วนและเผยแพร่เอกสารอย่างเป็นทางการ
หมายเลข 29 เพิ่มหัวข้อเกี่ยวกับไดรเวอร์อุปกรณ์และอุปกรณ์ฮาร์ดแวร์