|
|
|
@ -164,20 +164,20 @@ use bsdiskinfo; |
|
|
|
use BSD::Sysctl; # Native FreeBSD kernel MIB traversal bindings |
|
|
|
|
|
|
|
# Query available physical drives straight from the kernel tree |
|
|
|
my \$disks_str = BSD::Sysctl::sysctl('kern.disks') // ""; |
|
|
|
my $disks_str = BSD::Sysctl::sysctl('kern.disks') || ""; |
|
|
|
|
|
|
|
for my \(disk (sort (split /\s+/,\)disks_str)) { |
|
|
|
for my $disk (sort (split /\s+/,$disks_str)) { |
|
|
|
# Protect routing logic by verifying character device existence |
|
|
|
next unless bsdiskinfo::exists(\$disk); |
|
|
|
next unless bsdiskinfo::exists($disk); |
|
|
|
|
|
|
|
my \(props = get_properties(\)disk); |
|
|
|
if (\$props) { |
|
|
|
print "Drive: /dev/\$disk [Model: props->model, Type: props->{type}]\n"; |
|
|
|
my $props = get_properties($disk); |
|
|
|
if ($props) { |
|
|
|
print "Drive: /dev/$disk [Model: $props->{model}, Type: $props->{type}]\n"; |
|
|
|
|
|
|
|
# Traverse active slices and mounted partitions |
|
|
|
my \(mounts = get_mounts(\)disk) // []; |
|
|
|
for my \(mnt (@\)mounts) { |
|
|
|
print " └─ Partition \$mnt->{device} mounted at mnt->path (mnt->{fstype})\n"; |
|
|
|
my $mounts = get_mounts($disk) || []; |
|
|
|
for my $mnt (@$mounts) { |
|
|
|
print " └─ Partition $mnt->{device} mounted at $mnt->{path} ($mnt->{fstype})\n"; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|