เป็นไปได้หรือไม่ที่จะรันls
บนอุปกรณ์โดยไม่ต้องติดตั้งก่อน
บางสิ่งเช่นนี้
# ls /dev/sda1
ls
แน่นอนคุณจะต้องเครื่องมือที่นอกเหนือจาก
เป็นไปได้หรือไม่ที่จะรันls
บนอุปกรณ์โดยไม่ต้องติดตั้งก่อน
บางสิ่งเช่นนี้
# ls /dev/sda1
ls
แน่นอนคุณจะต้องเครื่องมือที่นอกเหนือจาก
คำตอบ:
คุณสามารถใช้debugfs
โปรแกรมของe2fsprogs แม้จะมีชื่อในอดีตมันจะทำงานบนระบบไฟล์ ext2 / 3/4 การใช้งานง่าย:
# debugfs -R "ls -l" /dev/sda6
2 40755 (2) 1001 1001 4096 17-Sep-2013 04:03 .
2 40755 (2) 1001 1001 4096 17-Sep-2013 04:03 ..
16 100644 (1) 1001 1001 9085 17-Sep-2013 04:03 avserver.conf
17 100644 (1) 1001 1001 2177 17-Sep-2013 04:03 bash.bashrc
26 100644 (1) 1001 1001 722 17-Sep-2013 04:03 crontab
…
โดยที่ "ls -l" เป็นdebugfs
คำสั่งเฉพาะที่ทำหน้าที่ส่วนใหญ่ชอบls -l
; คุณไม่สามารถใช้คำสั่งเชลล์โดยพลการใด ๆ ได้ ตามค่าเริ่มต้น debugfs จะเปิดไดรฟ์ในโหมดอ่านอย่างเดียวดังนั้นจึงค่อนข้างปลอดภัย ตัวอย่างเช่นลองสิ่งนี้บนพาร์ติชั่นที่ไม่ใช่ ext2 / 3/4 จะให้การวินิจฉัย:
# debugfs -R "ls -l" /dev/sda2
/dev/sda2: Bad magic number in super-block while opening filesystem
ls: Filesystem not open
ฉันไม่สามารถพูดได้ว่าฉันพิจารณาการปฏิบัติที่แนะนำนี้ แต่จะทำในสิ่งที่คุณถาม
จุดรวมของการติดตั้งระบบไฟล์คือการเข้าถึงไฟล์ โดยทั่วไปแล้วคุณไม่สามารถเข้าถึงไฟล์ของระบบไฟล์โดยไม่ต้องติดตั้ง
มียูทิลิตี้บางอย่างที่เข้าถึงไฟล์โดยตรงโดยไม่ต้องเมานต์เช่นdebugfsสำหรับระบบไฟล์ ext2 / ext3 / ext4 และmtoolsสำหรับระบบไฟล์ FAT
สำหรับ ext2 / ext3 / ext4 แทนที่จะเรียกใช้โปรแกรมที่อันตรายและใช้งานยากdebugfs
คุณสามารถแสดงรายการตำแหน่งการเมานต์ล่าสุด:
tune2fs -l /dev/sda1 | grep 'Last mounted'
อย่างไรก็ตามสิ่งนี้มีประโยชน์เฉพาะเมื่อมีการบันทึกตำแหน่งการเมานต์ล่าสุด
ประเภทระบบไฟล์ส่วนใหญ่รองรับการให้ป้ายชื่อระบบไฟล์ (เช่นtune2fs -L foo
) ดังนั้นให้ระบบไฟล์ทั้งหมดของคุณมีป้ายกำกับที่เป็นเอกลักษณ์ จากนั้นเมานต์ระบบไฟล์ตามเลเบล:
mount /dev/disks/by-label/foo /media/foo
หรือ
mount LABEL=foo /media/foo
คำตอบง่ายๆ: คุณไม่สามารถ ls
ใช้รูทีน libc มาตรฐานซึ่งแปลเป็นการเรียกระบบที่ให้บริการโดยไดรเวอร์ระบบไฟล์ดังนั้นจึงไม่สามารถใช้ls
(หรือสิ่งใดก็ตามที่ใช้การเรียกระบบเหล่านั้นสำหรับเรื่องนั้น) โดยไม่ต้องติดตั้งระบบไฟล์
คุณสามารถเขียนโปรแกรมอรรถประโยชน์ที่จะหลีกเลี่ยงสิ่งนี้ได้โดยมีสำเนาบางส่วนของตัวเองของไดรเวอร์ระบบไฟล์ (มีอยู่เช่นอ่านไฟล์ Ext2 จาก Windows) แต่มันใช้ไม่ได้เลย
หากปัญหาของคุณเป็นเพียงการระบุพาร์ติชันคุณอาจเริ่มใช้GPTซึ่งมีพื้นที่สำหรับชื่อพาร์ติชัน (72 ไบต์ต่อพาร์ติชัน) โซลูชันที่ยกตัวอย่างบางอย่าง (ตัวอย่างเช่น Linux MD หรือ LVM) อนุญาตให้ตั้งชื่อได้เช่นกัน
ตามที่อธิบายไว้ก่อนหน้า debugfs ทำงานได้ดี
debugfs -R "ls -l" /dev/sda1
สำหรับ NTFS มี ntfsls จาก ntfs-3g
ntfsls /dev/sda2
สำหรับ FAT นั้นมี mdir จาก mtools
mdir -i /dev/sdc1
สำหรับ exFAT ฉันไม่แน่ใจ ดูเหมือนว่า exfat-utils ไม่รวมถึงเครื่องมือใด ๆ ที่คล้ายกับเครื่องมือที่อธิบายข้างต้น แม้ว่าจะมี dumpexfat แต่ฉันไม่คิดว่ามันจะให้ข้อมูลที่ขอ
เพื่อหารายละเอียดเพิ่มเติมเกี่ยวกับไดรฟ์ที่แนบมามี lsblk
lsblk
โดยส่วนตัวแล้วฉันชอบสิ่งนี้และตั้งชื่อแทนให้:
alias lsblk="lsblk -o MODEL,TRAN,NAME,FSTYPE,LABEL,MOUNTPOINT,SIZE,MAJ:MIN"