"Linux plaintext" partition
Giorgos Keramidas
keramida at ceid.upatras.gr
Sat May 27 02:38:17 EEST 2006
On 2006-05-27 01:57, Raoul <raoul at raoul.shacknet.nu> wrote:
>On Sat, 2006-05-27 at 01:34 +0300, Giorgos Keramidas wrote:
>> Παίζεις με νουμεράκια και το πρωτόγονο interface του loopback mount.
>> Εναλλακτικά, βάζεις κανένα "obsolete λειτουργικό", που τα έχει λύσει
>> αυτά τα προβλήματα εδώ και κάτι χρόνια:
>>
>> $ dd if=/dev/zero of=image.bin bs=1m count=32
>> 32+0 records in
>> 32+0 records out
>>
>> $ sudo fdisk -BI image.bin
>> fdisk: device image.bin is not character special
>> ******* Working on device image.bin *******
>> fdisk: invalid fdisk partition table found
>> fdisk: Geom not found
>>
>> $ sudo mdconfig -a -t vnode -f image.bin -u 10
>>
>> $ ls -l /dev/md10*
>> crw-r----- 1 root operator - 0, 111 May 26 19:12 /dev/md10
>> crw-r----- 1 root operator - 0, 112 May 26 19:12 /dev/md10s1
>>
>> $ sudo bsdlabel -w -B /dev/md10s1
>>
>> $ ls -l /dev/md10*
>> crw-r----- 1 root operator - 0, 111 May 26 19:12 /dev/md10
>> crw-r----- 1 root operator - 0, 112 May 27 01:28 /dev/md10s1
>> crw-r----- 1 root operator - 0, 113 May 26 19:12 /dev/md10s1a
>> crw-r----- 1 root operator - 0, 114 May 26 19:12 /dev/md10s1c
>>
>> Τα "έξυπνα" λειτουργικά συστήματα μπορούν να κάνουν auto-detect τα
>> partitions από ένα image file και δημιουργούν δυναμικά τα κατάλληλα
>> device nodes για ότι ανακαλύπτουν.
>
> Μήπως θα μπορούσες να εξηγήσεις με δυό λόγια τι ακριβώς κάνουν αυτά τα
> mdconfig και bsdlabel?
Ναι. Το mdconfig(8) είναι το εργαλείο που ρυθμίζει memory disks, image
files, κλπ. Με την παράμετρο `-a' κάνει attach ένα αρχείο ως device
/dev/md10 (επειδή του έδωσα και το `unit number' 10 με `-u').
Αυτόματα, χωρίς να χρειαστεί κάτι άλλο, το /dev/md10 μπορεί να
χρησιμοποιηθεί ως ένα partition ή ως δίσκος με ένα ή περισσότερα
partitions.
Λάθος έκανα κι έτρεξα το fdisk στο `image.bin', αφού κανονικά θα ήταν
πιο προφανές να το τρέξω στο εικονικό `/dev/md10' disk:
# fdisk -BI /dev/md10
******* Working on device /dev/md10 *******
fdisk: invalid fdisk partition table found
fdisk: Geom not found
# fdisk -s /dev/md10
/dev/md10: 4 cyl 255 hd 63 sec
Part Start Size Type Flags
1: 63 64197 0xa5 0x80
#
Από αυτο το σημείο κι έπειτα, το `/dev/md10s1' είναι ένα partition το
οποίο χειρίζεσαι όπως κι οποιοδήποτε άλλο BIOS partition. Στο BSD,
συνηθίζουμε να μην κάνουμε newfs(8) χύμα σε κάποιο BIOS partition, αλλά
να 'σπάμε' τα BIOS partitions σε λογικές ενότητες με το bsdlabel(8) (ή
το disklabel(8) σε παλιότερες εκδόσεις). Ετσι σε ένα BIOS partition
μπορεί να αποθηκευθεί ένα 'swap logical partition' μαζί με ένα 'κανονικό
data partition'.
Σε αυτή την περίπτωση απλά δημιουργείς με το bsdlabel(8) ένα νέο "disk
label" που πιάνει όλο το BIOS partition:
# bsdlabel -w -B /dev/md10s1
#
κι αμέσως εμφανίζονται νέα device nodes (md10s1a, md10s1c):
# ls -l /dev/md10s1*
crw-r----- 1 root operator - 0, 108 May 27 02:28 /dev/md10s1
crw-r----- 1 root operator - 0, 109 May 27 02:28 /dev/md10s1a
crw-r----- 1 root operator - 0, 110 May 26 19:12 /dev/md10s1c
#
Αυτά μπορείς να τα μεταχειριστείς με τα γνωστά εργαλεία: newfs(8),
mount(8) κλπ. σαν να ήταν κανονικότατα 'partitions', και δε σε νοιάζει
που ξεκινάει το ένα sector, που τελειώνει ο άλλος κύλινδρος ή κάτι
αντίστοιχο:
# newfs /dev/md10s1a
/dev/md10s1a: 31.3MB (64180 sectors) block size 16384, fragment size 2048
using 4 cylinder groups of 7.84MB, 502 blks, 1024 inodes.
super-block backups (for fsck -b #) at:
160, 16224, 32288, 48352
# mount /dev/md10s1a /mnt/jflash
# df /mnt/jflash
Filesystem 1K-blocks Used Avail Capacity Mounted on
/dev/md10s1a 30856 4 28384 0% /mnt/jflash
#
> Μπορεί αυτό το auto-detection των partitions που υπάρχουν σε ένα disk
> image και η δημιουργία των loop devices να γίνει στο linux με
> αντίστοιχα εργαλεία?
Δεν ξέρω. Σε όσα κείμενα έχω βρεί μέχρι τώρα χρειάζεται χειροκίνητη
δουλειά, που με αφήνει κάπως αδιάφορο.
More information about the Linux-greek-users
mailing list