mirror of
https://github.com/smxi/inxi.git
synced 2024-11-16 16:21:39 +00:00
Huge upgrade, major rewrite/refactor, new features, everything is polished!!!
Note that due to large number of internal changes to code, a separate INTERNAL CODE CHANGES section is at the bottom. Those are changes which in general do not impact what users see that much, but which definitely impact working on and with inxi! They also make errors less likely, and removed many possible bad data error situations. BUGS: 1. Obscure, but very old Tyan Mobo used a form of dmidecode data for RAM that I'd never gotten a dataset for before, this tripped a series of errors in inxi, which were actually caused by small errors and failures to check certain things, as well as simply never assigning data in corner cases. This system used only dmi handles 6 and 7, which is a very rare setup, from the very early days of dmi data being settled, but it was valid data, and actually inxi was supposed to support it, because I'd never gotten a dataset containing such legacy hardware data, the support didn't work. There were actually several bugs discovered while tracking this down, all were corrected. 2. Going along with the cpu fixes below, there was a bug that if stepping was 0, stepping would not show. I had not realized stepping could be 0, so did a true/false test instead of a defined test, which makes 0 in perl always test as false. This is corrected. 3. While going through code, discovered that missing second argument to main::grabber would have made glabel tool (BSD I think mostly) always fail, without exception. That explains why bsd systems were never getting glabel data, heh. 4. Many null get_size tests would not have worked because they were testing for null array but ('','') was actually being returned, which is not a null array. The testing and results for get_size were quite random, now hey are all the same and consistent, and confirmed correct. 5. In unmounted devices, the match sent to @lsblk to get extended device data would never work with dm-xx type names, failed to translate them to their mapped name, which is what is used in lsblk matches, this is corrected. This could lead to failures to match fs of members of luks, raid, etc, particularly noticeable with complex logical device structures. This means the fallback filters against internal logic volume names, various file system type matches, would always fail. 6. A small host of further bugs found and fixed during the major refactor, but not all of them were noted, they were just fixed, sorry, those will be lost to history unless you compare with diffs the two versions, but that's thousands of lines, but there were more bugs fixed than listed above, just can't remember them all. FIXES: 1. There was some ambiguity about when inxi falls back to showing hardware graphics driver instead of xorg gfx driver when it can't find an xorg driver. That can happen for instance because of wayland, or because of obscure xorg drivers not yet supported. Now the message is very clear, it says the gfx software driver is n/a, and that it's showing the hardware gfx driver. 2. Big redo of cpu microarch, finally handled cases where same stepping/model ID has two micorarches listed, now that is shown clearly to users, like AMD Zen family 17, model 18, which can be either Zen or Zen+, so now it shows that ambiguity, and a comment: note: check, like it shows for ram report when it's not sure. Shows for instance: arch: Zen/Zen+ note: check in such cases, in other words, it tells users that the naming convention basically changed during the same hardware/die cycle. 3. There were some raid component errors in the unmounted tests which is supposed to test the raid components and remove them from the mounted list. Note that inxi now also tests better if something is a raid component, or an lvm component, or various other things, so unmounted will be right more often now, though it's still not perfect since there are still more unhandled logical storage components that will show as unmounted when tney are parts of logical volumes. Bit by bit!! 4. Part of a significant android fine tuning and fix series, for -P, android uses different default names for partitions, so none showed, now a subset of standard android partitions, like /System, /firmware, etc, shows. Android will never work well though because google keeps locking down key file read/search permissions in /sys and /proc. 5. More ARM device detections, that got tuned quite a bit and cleaned up, for instance, it was doing case sensitive checks, but found cases where the value is all upper case, so it was missing it. Now it does case sensitive device type searches. 6. One of the oldest glitches in inxi was the failure to take the size of the raid arrays versus the size totals of the raid array components led to Local Storage results that were uselessly wrong, being based on what is now called 'raw' disk totals, that's the raw physical total of all system disks. Now if raid is detected the old total: used:... is expanded to: total: raw:... usable:....used:, the usable being the actual disk space that can be used to store data. Also in the case of LVM systems, a further item is added, lvm-free: to report the unused but available volume group space, that is, space not currently taken by logical volumes. This can provide a useful overview of your system storage, and is much improved over the previous version, which was technically unable to solve that issue because the internal structures did not support it, now they do. LVM data requires sudo/ root unfortunately, so you will see different disk raw totals depending on if it's root or not if there is LVM RAID running. Sample: inxi -D Drives: Local Storage: total: raw: 340.19 GiB usable: 276.38 GiB lvm-free: 84.61 GiB used: 8.49 GiB (3.1%) lvm-free is non assigned volume group size, that is, size not assigned to a logical volume in the volume group, but available in the volume group. raw: is the total of all detected block devices, usable is how much of that can be used in file systems, that is, raid is > 1 devices, but those devices are not available for storage, only the total of the raid volume is. Note that if you are not using LVM, you will never see lvm-free:. 7. An anonymous user sent a dataset that contained a reasonable alternate syntax for sensors output, that made inxi fail to get the sensors data. That was prepending 'T' to temp items, and 'F' to fan items, which made enough sense though I'd never seen it before, so inxi now supports that alternate sensors temp/fan syntax, so that should expand the systems it supports by default out of the box. 8. Finally was able to resolve a long standing issue of loading File::Find, which is only used in --debug 20-22 debugger, from top of inxi to require load in the debugger. I'd tried to fix this before, but failed, the problem is that redhat /fedora have broken apart Perl core modules, and made some of them into external modules, which made inxi fail to start due to missing use of required module that was not really required. Thanks to mrmazda for pointing this out to me, I'd tried to get this working before but failed, but this time I figured out how to recode some of the uses of File::Find so it would work when loaded without the package debugger, hard to figure it, turned out a specific sub routine call in that specific case required the parentheses that had been left off, very subtle. 9. Subtle issue, unlike most of the other device data processors, the USB data parser did not use the remove duplicates tool, which led in some cases to duplicated company names in the output for USB, which looks silly. 10. Somehow devtmpfs was not being detected in all cases to remove that from partitions report, that was added to the file systen filters to make sure it gets caught. 11. Removed LVM image/meta/data data slices from unmounted report, those are LVM items, but they are internal LVM volumes, not available or usable. I believe there are other data/meta type variants for different LVM features but I have added as many types as I could find.. Also explictly now remove any _member type item, which is always part of some other logical structure, like RAID or LVM, those were not explicitly handled before. 12. Corrected the varous terms ZFS can use for spare drives, and due to how those describe slightly different situations than simply spare, changed the spare section header to Available, which is more accureate for ZFS. ENHANCEMENTS: 1. Going along with FIX 2 is updating and adding to intel, elbrus microarch family/ model/stepping IDs (E8C2), so that is fairly up to date now. 2. Added in a very crude and highly unreliable default fallback for intel: /sys/devices/cpu/caps/pmu_name which will show the basic internal name used which can be quite different from what the actual microarch name is, but the hope is that for new intel cpus that come out after these last inxi updates, something may show, instead of nothing. Note these names are often much more generic, like using skylake for many different microarches. 3. More android enhancements, for androids that allow reading of /system/build.prop, which is a very useful informative system info file, more android data will show, like the device name and variant, and a few other specialized items. You can see if your android device lets inxi read build.prop if you see under -S Distro: Android 7.1 (2016-07-23) or just Android. If it shows just android, that means it can't read that file. Showing Android however is also new, since while inxi can't always read build.prop if that file is there, it's android, so inxi finally can recognize it's in android, even though it can't give much info if it's locked down. Inxi in fact did not previously know it was running in android, which is quite different from ARM systems in some ways, but now it does. If the data is available, it will be used in Distro: and in Machine: data to add more information about the android version and device. 4. A big one, for -p/-P/-o/-j now shows with -x the mapped device name, not just the /dev/dm-xx ID, which makes connecting the various new bits easier, for RAID, Logical reports. Note that /dev/mapper/ is removed from the mapped name since that's redundant and verbose and makes the output harder to read. For mapped devices, the new --logical / -L report lets you drill into the devices to find out what dm-xx is actually based on, though that is a limited feature which only supports drilling to a depth of 2 components/devices, there can be more, particularly for bcache, luks setups, but it's just too hard to code that level of depth, so something is better than nothing in this case, which is the actual choice I was faced, the perfect in this case really is/was the enemy of the good, as they say. 5. More big ones, for -a -p/-P/-o/-j shows kernel device major:minor number, which again lets you trace each device around the system and report. 6. Added mdadm if root for mdraid report, that let me add a few other details for mdraid not previously available. This added item 'state;' to the mdraid report with right -x options. 7. Added vpu component type to ARM gfx device type detection, don't know how video processing vcu had escaped my notice. 8. Added fio[a-z] block device, I'd never heard of that before, but saw use of it in dataset, so learned it's real, but was never handled as a valid block device type before, like sda, hda, vda, nvme, mmcblk, etc. fio works the same, it's fio + [a-z] + [0-9]+ partition number. 9. Expanded to alternate syntax Elbrus cpu L1, L2, L3 reporting. Note that in their nomenclature, L0 and L1 are actually both L1, so add those together when detected. 10. RAM, thanks to a Mint user, antikythera, learned, and handled something new, module 'speed:' vs module 'configured clock speed:'. To quote from supermicro: <<< Question: Under dmidecode, my 'Configured Clock Speed' is lower than my 'Speed'. What does each term mean and why are they not the same? Answer: Under dmidecode, Speed is the expected speed of the memory (what is advertised on the memory spec sheet) and Configured Clock Speed is what the actual speed is now. The cause could be many things but the main possibilities are mismatching memory and using a CPU that doesn't support your expected memory clock speed. Please use only one type of memory and make sure that your CPU supports your memory. >>> 11. Since RAM was gettng a look, also changed cases where ddr ram speed is reported in MHz, now it will show the speeds as: [speed * 2] MT/S ([speed] MHz). This will let users make apples to apples speed comparisons between different systems. Since MT/S is largely standard now, there's no need to translate that to MHz. 12. And, even more!! When RAM speeds are logically absurd, adds in note: check This is from a real user's data by the way, as you can see, it triggers all the new RAM per Device report features. Sample: Memory: RAM: total: 31.38 GiB used: 20.65 GiB (65.8%) Array-1: capacity: N/A slots: 4 note: check EC: N/A Device-1: DIMM_A1 size: 8 GiB speed: 1600 MT/s (800 MHz) Device-2: DIMM_A2 size: 8 GiB speed: spec: 1600 MT/s (800 MHz) actual: 61910 MT/s (30955 MHz) note: check Device-3: DIMM_B1 size: 8 GiB speed: 1600 MT/s (800 MHz) Device-4: DIMM_B2 size: 8 GiB speed: spec: 1600 MT/s (800 MHz) actual: 2 MT/s (1 MHz) note: check 13. More disks vendor!!! More disk vendor IDs!!! Yes, that's right, eternity exists, here, now, and manifests every day!! Thanks to linux-lite hardware database for this eternally generating list. Never underestimate the creativity of mankind to make more disk drive companies, and to release new model IDs for existing companies. Yes, I feel that this is a metaphore for something much larger, but what that is, I'm not entirely clear about. CHANGES: 1. Recent kernel changes have added a lot more sensor data in /sys, although this varies system to system, but now, if your system supports it, you can get at least partial hdd temp reports without needing hddtemp or root. Early results suggest that nvme may have better support than spinning disks, but it really varies. inxi will now look for the /sys based temp first, then fall back to the much slower and root / sudo only hddtemp. You can force hddtemp always with --hddtemp option, which has a corresponding configuration item. 2. The long requested and awaited yet arcane and obscure feature -L/--logical, which tries to give a reasonably good report on LVM, LUKS, VeraCrypt, as well as handling LVM raid, both regular and thin, is now working, more or less. This took a lot of testing and will probably not be reasonably complete for a while, mainly because the levels of abstraction possible between lvm, lvm raid, mdraid, LUKS, bcache, and other caching and other encryption options are just too deep to allow for easy handling, or easy outputs. But a very solid and good start in my view, going from nothing to something is always a big improvement!! LVM reports require root/sudo. This will, finally, close issue #135. 3. Going along with -L, and serving as a model for the logic of -L, was the complete refactor of -R, RAID, which was a real mess internally, definitely one of the messiest and hardest to work with features of inxi before the refactor. It's now completely cleaned up and modularized, and is easy to add raid types, which was not possible before, now it cleanly supports zfs, mdraid, and lvm raid, with in depth reports and added items like mdraid size, raid component device sizes and maj:min numbers if the -a option is used. Note that LVM RAID requires root/sudo. 4. Added some more sensors dimm, volts items, slight expansion. Note that the possible expansion of sensors made possible by the recently upgraded sensors output logic, as well as the new inxi internal sensors data structure, which is far more granular than the previous version, and allows for much more fine grained control and output, though only gpu data currently takes advantage of this new power under the covers, although as noted, the /sys based hdd temps use the same source, only straight from /sys, since it was actually easier using the data directly from sys than trying to map the drive locations to specific drives in sensors output. Well, to be accurate, since now only board type sensors are used for the temp/fan speed, voltage, etc, reports, the removal of entire sensor groups means less chance of wrong results. 5. To bring the ancient RAID logic to fit the rest of inxi style, made zfs, mdraid, and lvm raid components use incrementing numbers, like cpu cores does. This got rid of the kind of ugly hacks used previously which were not the same for zfs or mdraid, but now they are all the same, except that the numbers for mdraid are the actual device numbers that mdraid supplies, and the LVM and ZFS numbers are just autoincremented, starting at 1. 6. Changed message <root/superuser required> to <superuser required> because it's shorter and communicates the same thing. INTERNAL CODE CHANGES: 1. Small, transparent test, tested on Perl 5.032 for Perl 7 compatibility. All tests passed, no legacy code issues in inxi as of now. 2. Although most users won't notice, a big chunk of inxi was refactored internally, which is why the new -L, the revamped -R, and the fixed disk totals finally all can work now. This may hopefully result in more consistent output and fewer oddities and randomnesses, since more of the methods all use the same tools now under the covers. Ths refactor also significantly improved inxi's execution speed, by about 4-5%, but most of those gains are not visible due to the added new features, but the end result is new inxi runs roughly the same speed as pre 3.2.00 inxi, but does more, and does it better, internally at least. If you have a very good eye you may also note a few places where this manifests externally as well. Last I checked about 10-12% of the lines of inxi had been changed, but I think that number is higher now. Everything that could be optimized was, everything could be made more efficient was. 3. Several core tools in inxi were expanded to work much more cleanly, like reader(), which now supports returning just the index value you want, that always happened on the caller end before, which led to extra code. get_size likewise was expanded to do a string return, which let me remove a lot of internal redundant code in creating the size unit output, like 32 MiB. uniq() was also redone to work exclusively by reference. 4. Many bad reference and dereference practices that had slipped into inxi from the start are mostly corrected now, array assignments use push now, rather than assign to array, then add array to another array, and assign those to the master array. Several unnecessary and cpu/ram intensive copying steps, that is, were removed in many locations internally in inxi. Also now inxi uses more direct anonymous array and hash refernce assignments, which again removes redundant array/hash creation, copy, and assignment. 5. Also added explicit -> dereferencing arrows to make the code more clear and readable, and to make it easier for perl to know what is happening. The lack of consistency actually created confusion, I was not aware of what certain code was doing, and didn't realize it was doing the same thing as other code because of using different methods and syntaxes for referencing array/hash components. I probably missed some, but I got many of them, most probably. 6. Instituted a new perl builtin sub routine rule which is: if the sub takes 2 or more arguments, always put in parentheses, it makes the code much easier to follow because you see the closing ), like: push(@rows,@row); Most perl builtins that take only one arg do not use parentheses, except length, which just looks weird when used in math tests, that is: length($var) > 13 looks better than length $var > 13. This resolved inconsistent uses that had grown over time, so now all the main builtins follow these rules consistently internally. Due to certain style elements, and the time required to carefully go through all these rules, grep and map do not yet consistently use these rules, that's because the tendency has been to use the grep {..test..} @array and map {...actions...} @array 7. Mainly to deal with android failures to read standard system files due to google locking it down, moved most file queries to use -r, is readable, rather than -e, exists, or -f, is file, unless it only needs to know if it exists, of course. This fixed many null data errors in android even on locked androids. 8. Added in %mapper and %dmmapper hashes to allow for easy mapping and unmapping of mapped block devices. Got rid of other ways of doing that, and made it consistent throughout inxi. These are globals that load once. 9. Learned that perl builtin split() has a very strange and in my view originally terrible decision that involves treating as regex rules string characters in split string, like split('^^',$string), which should logically be a string value, not a ^ start search followed by a ^, but that's how it is, so that was carefully checked and made consistent as well. Also expanded split to take advantage of the number of splits to do, which I had only used occasionally before, but only updated field/value splits where I have a good idea of what the data is. This is very useful when the data is in the form of field: value, but value can contain : as well. You have to be very careful however, since some data we do want in fact the 2nd split, but not the subsequent ones, so I only updated the ones I was very sure about. 10. Going along with the cpu microarch fixes, updated and cleaned up all the lists of model/stepping matches, now they are all in order and much easier to scan and find, that had gotten sloppy over the years. 11. More ARM, moved dummy and codec device values into their own storage arrays, that let me remove the filters against those in the other detections. Makes logic easier to read and maintain as well.
This commit is contained in:
parent
0eedb2c89e
commit
5234e3903d
235
inxi.1
235
inxi.1
|
@ -1,4 +1,4 @@
|
|||
.TH INXI 1 "2020\-11\-11" inxi "inxi manual"
|
||||
.TH INXI 1 "2020\-12\-15" inxi "inxi manual"
|
||||
|
||||
.SH NAME
|
||||
inxi \- Command line system information script for console and IRC
|
||||
|
@ -6,7 +6,7 @@ inxi \- Command line system information script for console and IRC
|
|||
.SH SYNOPSIS
|
||||
\fBinxi\fR
|
||||
|
||||
\fBinxi\fR [\fB\-AbBCdDfFGhijJIlmMnNopPrRsSuUVwzZ\fR]
|
||||
\fBinxi\fR [\fB\-AbBCdDfFGhiIjJlLmMnNopPrRsSuUVwzZ\fR]
|
||||
|
||||
\fBinxi\fR [\fB\-c NUMBER\fR]
|
||||
[\fB\-\-sensors\-exclude SENSORS\fR] [\fB\-\-sensors\-use SENSORS\fR]
|
||||
|
@ -173,11 +173,21 @@ few more features.
|
|||
.B \-D\fR,\fB \-\-disk\fR
|
||||
Show Hard Disk info. Shows total disk space and used percentage. The disk used
|
||||
percentage includes space used by swap partition(s), since those are not usable
|
||||
for data storage. Note that with RAID disks, the percentage will be wrong since
|
||||
the total is computed from the disk sizes, but used is computed from mounted
|
||||
partition used percentages. This small defect may get corrected in the future.
|
||||
Also, unmounted partitions are not counted in disk use percentages since inxi
|
||||
has no access to the used amount.
|
||||
for data storage. Also, unmounted partitions are not counted in disk use percentages
|
||||
since inxi has no access to the used amount.
|
||||
|
||||
If the system has RAID or other logical storage, and if inxi can determine
|
||||
the size of those vs their components, you will see the storage total raw and usable
|
||||
sizes, plus the percent used of the usable size. The no argument short form
|
||||
of inxi will show only the usable (or total if no usable) and used percent.
|
||||
If there is no logical storage detected, only \fBtotal:\fR and \fBused:\fR will
|
||||
show. Sample (with RAID logical size calculated):
|
||||
|
||||
\fBLocal Storage: total: raw: 5.49 TiB usable: 2.80 TiB used: 1.35 TiB (48.3%)\fR
|
||||
|
||||
Without logical storage detected:
|
||||
|
||||
\fBLocal Storage: total: 2.89 TiB used: 1.51 TiB (52.3%)\fR
|
||||
|
||||
Also shows per disk information: Disk ID, type (if present), vendor (if detected),
|
||||
model, and size. See \fBExtra Data Options\fR (\fB\-x\fR options) and
|
||||
|
@ -284,6 +294,81 @@ The \fBrev: 2.0\fR item refers to the USB revision number, like \fB1.0\fR or
|
|||
Show partition labels. Default: main partitions \fB\-P\fR. For full \fB\-p\fR output,
|
||||
use: \fB\-pl\fR.
|
||||
|
||||
.TP
|
||||
.B \-L\fR, \fB\-\-logical\fR
|
||||
Show Logical volume information, for LVM, LUKS, bcache, MultiPath, etc. Shows
|
||||
size, free space (for LVM VG). For LVM, shows \fBDevice\-[xx]: VG:\fR
|
||||
(Volume Group) size/free, \fBLV\-[xx]\fR (Logical Volume). LV shows type,
|
||||
size, and components. Note that components are made up of either containers
|
||||
(aka, logical devices), or physical devices. The full report requires sudo/root.
|
||||
|
||||
Logical block devices can be thought of as devices that are made up out
|
||||
of either other logical devices, or physical devices. inxi does its best
|
||||
to show what each logical device is made out of. RAID devices form a subset
|
||||
of all possible Logical devices, but have their own section, \fB\-R\fR.
|
||||
|
||||
If \fB\-R\fR is used with \fB\-Lxx\fR, \fB\-Lxx\fR will not show RAID
|
||||
information for LVM RAID devices since it's redundant. If \fB\-R\fR is
|
||||
not used, a simple RAID line will appear for LVM RAID in \fB\-Lxx\fR.
|
||||
|
||||
\fB\-Lxx\fR also shows all components and devices. Note that since
|
||||
components can go in many levels, each level per primary component is
|
||||
indicated by either another 'c', or ends with a 'p' device, the physical
|
||||
device. The number of c's or p's indicates the depth, so you can see which
|
||||
component belongs to which.
|
||||
|
||||
\fB\-L\fR shows only the top level components/devices (like \fB\-R\fR).
|
||||
\fB\-La\fR shows component/device size, maj:min ID, mapped name
|
||||
(if applicable), and puts each component/device on its own line.
|
||||
|
||||
Sample:
|
||||
|
||||
\fBDevice\-10: mybackup type: LUKS dm: dm\-28 size: 6.36 GiB Components: c\-1: md1
|
||||
cc\-1: dm\-26 ppp\-1: sdj2 cc\-2: dm\-27 ppp\-1: sdk2\fR
|
||||
|
||||
.nf
|
||||
\fBLV-5: lvm_raid1 type: raid1 dm: dm\-16 size: 4.88 GiB
|
||||
RAID: stripes: 2 sync: idle copied: 100% mismatches: 0
|
||||
Components: c\-1: dm\-10 pp\-1: sdd1 c\-2: dm\-11 pp\-1: sdd1 c\-3: dm\-13
|
||||
pp\-1: sde1 c\-4: dm\-15 pp\-1: sde1\fR
|
||||
.fi
|
||||
|
||||
It is easier to follow the flow of components and devices using \fB\-y1\fR. In
|
||||
this example, there is one primary component (c\-1), md1, which is made up of two
|
||||
components (cc\-1,2), dm\-26 and dm\-27. These are respectively made from physical
|
||||
devices (p\-1) sdj2 and sdk2.
|
||||
|
||||
.nf
|
||||
\fBDevice-10: mybackup
|
||||
maj-min: 254:28
|
||||
type: LUKS
|
||||
dm: dm-28
|
||||
size: 6.36 GiB
|
||||
Components:
|
||||
c\-1: md1
|
||||
maj\-min: 9:1
|
||||
size: 6.37 GiB
|
||||
cc-1: dm\-26
|
||||
maj-min: 254:26
|
||||
mapped: vg5\-level1a
|
||||
size: 12.28 GiB
|
||||
ppp\-1: sdj2
|
||||
maj\-min: 8:146
|
||||
size: 12.79 GiB
|
||||
cc\-2: dm\-27
|
||||
maj\-min: 254:27
|
||||
mapped: vg5\-level1b
|
||||
size: 6.38 GiB
|
||||
ppp-1: sdk2
|
||||
maj\-min: 8:162
|
||||
size: 12.79 GiB\fR
|
||||
.fi
|
||||
|
||||
Other types of logical block handling like LUKS, bcache, multipath,
|
||||
show as:
|
||||
|
||||
\fBDevice\-[xx] [name/id] type: [LUKS|Crypto|bcache|MultiPath]:\fR
|
||||
|
||||
.TP
|
||||
.B \-m\fR,\fB \-\-memory\fR
|
||||
Memory (RAM) data. Does not display with \fB\-b\fR or \fB\-F\fR unless you use \fB\-m\fR
|
||||
|
@ -310,6 +395,30 @@ will put this data into \fB/sys\fR, and make it real data, taken from the actual
|
|||
not dmi data. For most people, the data will be right, but a significant percentage of
|
||||
users will have either a wrong max module size, if present, or max capacity.
|
||||
|
||||
Under dmidecode, \fBSpeed:\fR is the expected speed of the memory
|
||||
(what is advertised on the memory spec sheet) and \fBConfigured Clock Speed:\fR
|
||||
is what the actual speed is now. To handle this, if speed and configured speed values
|
||||
are different, you will see this instead:
|
||||
|
||||
\fBspeed: spec: [specified speed] MT/S actual: [actual] MT/S\fR
|
||||
|
||||
Also, if DDR, and speed in MHz, will change to: \fBspeed: [speed] MT/S ([speed] MHz\fR
|
||||
|
||||
If the detected speed is logically absurd, like 1 MT/s or 69910 MT/s, adds:
|
||||
\fBnote: check\fR. Sample:
|
||||
|
||||
.nf
|
||||
\fBMemory:
|
||||
RAM: total: 31.38 GiB used: 20.65 GiB (65.8%)
|
||||
Array-1: capacity: N/A slots: 4 note: check EC: N/A
|
||||
Device-1: DIMM_A1 size: 8 GiB speed: 1600 MT/s (800 MHz)
|
||||
Device-2: DIMM_A2 size: 8 GiB speed: spec: 1600 MT/s (800 MHz)
|
||||
actual: 61910 MT/s (30955 MHz) note: check
|
||||
Device-3: DIMM_B1 size: 8 GiB speed: 1600 MT/s (800 MHz)
|
||||
Device-4: DIMM_B2 size: 8 GiB speed: spec: 1600 MT/s (800 MHz)
|
||||
actual: 2 MT/s (1 MHz) note: check\fR
|
||||
.fi
|
||||
|
||||
See \fB\-\-memory\-modules\fR and \fB\-\-memory\-short\fR if you want a shorter report.
|
||||
|
||||
.TP
|
||||
|
@ -370,7 +479,8 @@ Show full Partition information (\fB\-P\fR plus all other detected mounted parti
|
|||
.TP
|
||||
.B \-P\fR,\fB \-\-partitions\fR
|
||||
Show basic Partition information.
|
||||
Shows, if detected: \fB/ /boot /home /opt /tmp /usr /usr/home /var /var/tmp /var/log\fR.
|
||||
Shows, if detected: \fB/ /boot /boot/efi /home /opt /tmp /usr /usr/home /var /var/tmp
|
||||
/var/log\fR (for android, shows \fB/cache /data /firmware /system\fR).
|
||||
If \fB\-\-swap\fR is not used, shows active swap partitions (never shows file or
|
||||
zram type swap).
|
||||
Use \fB\-p\fR to see all mounted partitions.
|
||||
|
@ -418,15 +528,19 @@ See \fB\-rx\fR, \fB\-rxx\fR, and \fB\-ra\fR for installed package count informat
|
|||
|
||||
.TP
|
||||
.B \-R\fR,\fB \-\-raid\fR
|
||||
Show RAID data. Shows RAID devices, states, levels and components, and
|
||||
extra data with \fB\-x\fR / \fB\-xx\fR.
|
||||
Show RAID data. Shows RAID devices, states, levels, device/array size,
|
||||
and components. See extra data with \fB\-x\fR / \fB\-xx\fR.
|
||||
|
||||
md\-raid: If device is resyncing, also shows resync progress line.
|
||||
|
||||
Note: Only md\-raid and ZFS are currently supported. Other software RAID types could
|
||||
be added, but only if users supply all data required, and if the software
|
||||
Note: Only md\-raid, ZFS and hardware RAID are currently supported.
|
||||
Other software RAID types may be added, if the software
|
||||
RAID actually can be made to give the required output.
|
||||
|
||||
The component ID numbers work like this: mdraid: the numerator
|
||||
is the actual mdraid component number; ZFS: the numerator is
|
||||
auto-incremented counter only. Eg. \fBOnline: 1: sdb1\fR
|
||||
|
||||
If hardware RAID is detected, shows basic information. Due to complexity
|
||||
of adding hardware RAID device disk / RAID reports, those will only be added
|
||||
if there is demand, and reasonable reporting tools.
|
||||
|
@ -474,8 +588,8 @@ Make sure that there is no space between letters and numbers (e.g. write as \fB\
|
|||
.TP
|
||||
.B \-t m\fR
|
||||
\- memory only. With \fB\-x\fR, also shows CPU for that process on same line.
|
||||
If the \-I line is not triggered, will also show the system RAM used/total
|
||||
information.
|
||||
If the \fB\-I\fR or \fB\-m\fR lines are not triggered, will also show the
|
||||
system RAM used/total information.
|
||||
|
||||
.TP
|
||||
.B \-t cm\fR
|
||||
|
@ -557,9 +671,9 @@ USB (\fB\-J\fR); triggers \fB\-xx\fR extra data option.
|
|||
|
||||
.TP
|
||||
.B \-v 8
|
||||
\- All system data available. Adds Repos (\fB\-r\fR), PCI slots (\fB\-\-slots\fR),
|
||||
processes (\fB\-tcm\fR), admin (\fB\-\-admin\fR). Useful for testing output and to
|
||||
see what data you can get from your system.
|
||||
\- All system data available. Adds Logical (\fB\-L\fR), Repos (\fB\-r\fR),
|
||||
PCI slots (\fB\-\-slots\fR), processes (\fB\-tcm\fR), admin (\fB\-\-admin\fR).
|
||||
Useful for testing output and to see what data you can get from your system.
|
||||
|
||||
.TP
|
||||
.B \-w\fR,\fB \-\-weather\fR
|
||||
|
@ -687,10 +801,14 @@ have this feature.
|
|||
|
||||
\- Adds CPU microarchitecture + revision (e.g. Sandy Bridge, K8, ARMv8, P6,
|
||||
etc.). Only shows data if detected. Newer microarchitectures will have
|
||||
to be added as they appear, and require the CPU family ID and model ID.
|
||||
to be added as they appear, and require the CPU family ID, model ID,
|
||||
and stepping.
|
||||
|
||||
Examples: \fBarch: Sandy Bridge rev: 2\fR, \fBarch: K8 rev.F+ rev: 2\fR
|
||||
|
||||
If unable to non\-ambiguosly determine architecture, will show something like:
|
||||
\fBarch: Amber Lake note: check rev: 9\fR
|
||||
|
||||
.TP
|
||||
.B \-x \-d\fR
|
||||
\- Adds more items to \fBFeatures\fR line of optical drive;
|
||||
|
@ -698,11 +816,33 @@ dds rev version to optical drive.
|
|||
|
||||
.TP
|
||||
.B \-x \-D\fR
|
||||
\- Adds HDD temperature with disk data if you have hddtemp installed, if you are root
|
||||
\- Adds HDD temperature with disk data.
|
||||
|
||||
Method 1: if you have hddtemp installed, if you are root
|
||||
or if you have added to \fB/etc/sudoers\fR (sudo v. 1.7 or newer):
|
||||
|
||||
.B <username> ALL = NOPASSWD: /usr/sbin/hddtemp (sample)
|
||||
|
||||
Method 2: systems running Linux kernels ~5.8 and newer may have drive temp data
|
||||
available from /sys. If your system has /sys hwmon drive data, the temps
|
||||
will come from /sys data for each drive with that data, and will not require
|
||||
root or hddtemp!! This method is MUCH faster than using hddtemp!
|
||||
|
||||
If you see drive temps running as regular user and you did not configure system
|
||||
to use sudo hddtemp, then your system supports this feature. Sometimes one type
|
||||
of drive will have the /sys temp data, and another won't, it varies widely.
|
||||
If no /sys data is found, inxi will try to use hddtemp methods instead
|
||||
for that drive.
|
||||
|
||||
Hint: is /sys sourced, the temps will be to 1 decimal, like 34.8, if hddtemp
|
||||
sourced, they will be integers.
|
||||
|
||||
You can force use of \fBhddtemp\fR for all drives using \fB\-\-hddtemp\fR.
|
||||
|
||||
\- If free LVM volume group size detected (root required), show \fBlvm-free:\fR
|
||||
on Local Storage line. This is how much unused space the VGs contain, that is,
|
||||
space not assigned to LVs.
|
||||
|
||||
.TP
|
||||
.B \-x \-G\fR
|
||||
\- Adds (if available and/or relevant) \fBvendor:\fR item, which shows
|
||||
|
@ -759,10 +899,19 @@ discover those.
|
|||
|
||||
\- If in shell (i.e. not in IRC client), adds shell version number, if available.
|
||||
|
||||
.TP
|
||||
.B \-x \-j\fR, \fB\-x \-\-swap\fR
|
||||
Add \fBmapper:\fR. See \fB\-x \-o\fR.
|
||||
|
||||
.TP
|
||||
.B \-x \-J\fR (\fB\-\-usb\fR)
|
||||
\- For Devices, adds driver(s).
|
||||
|
||||
.TP
|
||||
.B \-x \-L\fR, \fB\-x \-\-logical\fR
|
||||
\- Adds \fBdm: dm-x\fR to VG > LV and other Device types. This can help tracking
|
||||
down which device belongs to what.
|
||||
|
||||
.TP
|
||||
.B \-x \-m\fR, \fB\-\-memory\-modules\fR
|
||||
\- If present, adds maximum memory module/device size in the Array line.
|
||||
|
@ -780,6 +929,13 @@ specific vendor [product] information.
|
|||
|
||||
\- Adds PCI Bus ID/USB ID number of each Network card.
|
||||
|
||||
.TP
|
||||
.B \-x \-o\fR, \fB\-x \-p\fR, \fB\-x \-P\fR
|
||||
\- Adds \fBmapper:\fR (the \fB/dev/mapper/\fR partitioni ID)
|
||||
if mapped partition.
|
||||
|
||||
Example: \fBID-4: /home ... dev: /dev/dm-6 mapped: ar0-home\fR
|
||||
|
||||
.TP
|
||||
.B \-x \-r\fR
|
||||
\- Adds Package info. See \fB\-Ix\fR
|
||||
|
@ -901,6 +1057,15 @@ swap types (for \fB\-j\fR).
|
|||
.B \-xx \-J\fR (\fB\-\-usb\fR)
|
||||
\- Adds vendor:chip id.
|
||||
|
||||
.TP
|
||||
.B \-xx \-L\fR, \fB\-xx \-\-logical\fR
|
||||
\- Adds internal LVM Logical volumes, like raid image and meta data volumes.
|
||||
|
||||
\- Adds full list of Components, sub\-components, and their physical devices.
|
||||
|
||||
\- For LVM RAID, adds a RAID report line (if not \fB\-R\fR). Read up on LVM
|
||||
documentation to better understand their use of the term 'stripes'.
|
||||
|
||||
.TP
|
||||
.B \-xx \-m\fR, \fB\-\-memory\-modules\fR
|
||||
\- Adds memory device Manufacturer.
|
||||
|
@ -1137,6 +1302,8 @@ Using \fBsmartctl\fR (requires sudo/root privileges).
|
|||
|
||||
\- Adds SATA type (eg 1.0, 2.6, 3.0) if a SATA device.
|
||||
|
||||
\- Adds device kernel major:minor number (Linux only).
|
||||
|
||||
\- Adds SMART report line: status, enabled/disabled, health, powered on,
|
||||
cycles, and some error cases if out of range values. Note that for Pre\-fail items,
|
||||
it will show the VALUE and THRESHOLD numbers. It will also fall back for unknown
|
||||
|
@ -1241,7 +1408,7 @@ Info:
|
|||
.fi
|
||||
|
||||
.TP
|
||||
.B \-a \-j\fR, \fB\-a \-P\fR , \fB\-a \-P\fR
|
||||
.B \-a \-j\fR, \fB\-a \-P\fR [swap], \fB\-a \-P\fR [swap]
|
||||
\- Adds swappiness and vfs cache pressure, and a message to indicate
|
||||
if the value is the default value or not (Linux only, and only if available).
|
||||
If not the default value, shows default value as well, e.g.
|
||||
|
@ -1254,6 +1421,15 @@ For \fB\-j\fR row 1 output:
|
|||
|
||||
\fBKernel: swappiness: 60 (default) cache pressure: 90 (default 100)\fR
|
||||
|
||||
\- Adds device kernel major:minor number (Linux only).
|
||||
|
||||
.TP
|
||||
.B \-a \-L\fR
|
||||
\- Expands Component report, shows size / maj-min of components and devices, and
|
||||
mapped name for logical components. Puts each component/device on its own line.
|
||||
|
||||
\- Adds maj-min to LV and other devices.
|
||||
|
||||
.TP
|
||||
.B \-a \-n\fR, \fB\-a \-N\fR, \fB\-a \-i\fR
|
||||
\- Adds, if present, possible \fBalternate:\fR kernel modules capable of driving
|
||||
|
@ -1262,6 +1438,10 @@ modules found, shows nothing. NOTE: just because it lists a module does NOT mean
|
|||
available in the system, it's just something the kernel knows could possibly be used
|
||||
instead.
|
||||
|
||||
.TP
|
||||
.B \-a \-o\fR
|
||||
\- Adds device kernel major:minor number (Linux only).
|
||||
|
||||
.TP
|
||||
.B \-a \-p\fR,\fB\-a \-P\fR
|
||||
\- Adds raw partition size, including file system overhead, partition table, e.g.
|
||||
|
@ -1277,10 +1457,19 @@ not the raw size.
|
|||
|
||||
\- Adds partition filesystem block size if found (requires root and blockdev).
|
||||
|
||||
\- Adds device kernel major:minor number (Linux only).
|
||||
|
||||
.TP
|
||||
.B \-a \-r\fR
|
||||
\- Adds Packages. See \fB\-Ia\fR
|
||||
|
||||
.TP
|
||||
.B \-a \-R\fR
|
||||
\- Adds device kernel major:minor number (mdraid, Linux only).
|
||||
|
||||
\- Adds, if available, component size, major:minor number, state (Linux only).
|
||||
Turns Component report to 1 component per line if size and major:minor present.
|
||||
|
||||
.TP
|
||||
.B \-a \-S\fR
|
||||
\- Adds kernel boot parameters to \fBKernel\fR section (if detected). Support
|
||||
|
@ -1346,6 +1535,10 @@ e.g. \fB\-M\fR or \fB\-B\fR.
|
|||
.B \-\-downloader [curl|fetch|perl|wget]\fR
|
||||
Force inxi to use Curl, Fetch, Perl, or Wget for downloads.
|
||||
|
||||
.TP
|
||||
.B \-\-hddtemp\fR
|
||||
Force use of hddtemp instead of /sys temp data for disks.
|
||||
|
||||
.TP
|
||||
.B \-\-host\fR
|
||||
Turns on hostname in System line. Overrides inxi config file value (if set):
|
||||
|
@ -1618,7 +1811,7 @@ For alternate ftp upload locations: Example:
|
|||
|
||||
.SH DEBUGGING OPTIONS TO DEBUG DEBUGGER FAILURES
|
||||
|
||||
Only used the following in conjunction with \fB\-\-debug 2[012]\fR, and only
|
||||
Only use the following in conjunction with \fB\-\-debug 2[012]\fR, and only
|
||||
use if you experienced a failure or hang, or were instructed to do so.
|
||||
|
||||
.TP
|
||||
|
|
393
inxi.changelog
393
inxi.changelog
|
@ -1,3 +1,396 @@
|
|||
=====================================================================================
|
||||
Version: 3.2.00
|
||||
Patch: 00
|
||||
Date: 2020-12-15
|
||||
-----------------------------------
|
||||
Changes:
|
||||
-----------------------------------
|
||||
|
||||
Huge upgrade, major rewrite/refactor, new features, everything is polished!!!
|
||||
|
||||
Note that due to large number of internal changes to code, a separate
|
||||
INTERNAL CODE CHANGES section is at the bottom. Those are changes which in
|
||||
general do not impact what users see that much, but which definitely impact
|
||||
working on and with inxi! They also make errors less likely, and removed many
|
||||
possible bad data error situations.
|
||||
|
||||
BUGS:
|
||||
|
||||
1. Obscure, but very old Tyan Mobo used a form of dmidecode data for RAM that I'd
|
||||
never gotten a dataset for before, this tripped a series of errors in inxi, which
|
||||
were actually caused by small errors and failures to check certain things, as
|
||||
well as simply never assigning data in corner cases. This system used only dmi
|
||||
handles 6 and 7, which is a very rare setup, from the very early days of dmi
|
||||
data being settled, but it was valid data, and actually inxi was supposed to support
|
||||
it, because I'd never gotten a dataset containing such legacy hardware data, the
|
||||
support didn't work. There were actually several bugs discovered while tracking
|
||||
this down, all were corrected.
|
||||
|
||||
2. Going along with the cpu fixes below, there was a bug that if stepping was 0,
|
||||
stepping would not show. I had not realized stepping could be 0, so did a true/false
|
||||
test instead of a defined test, which makes 0 in perl always test as false. This is
|
||||
corrected.
|
||||
|
||||
3. While going through code, discovered that missing second argument to main::grabber
|
||||
would have made glabel tool (BSD I think mostly) always fail, without exception.
|
||||
That explains why bsd systems were never getting glabel data, heh.
|
||||
|
||||
4. Many null get_size tests would not have worked because they were testing
|
||||
for null array but ('','') was actually being returned, which is not a null array.
|
||||
The testing and results for get_size were quite random, now hey are all the same
|
||||
and consistent, and confirmed correct.
|
||||
|
||||
5. In unmounted devices, the match sent to @lsblk to get extended device data
|
||||
would never work with dm-xx type names, failed to translate them to their
|
||||
mapped name, which is what is used in lsblk matches, this is corrected.
|
||||
This could lead to failures to match fs of members of luks, raid, etc,
|
||||
particularly noticeable with complex logical device structures. This means
|
||||
the fallback filters against internal logic volume names, various file system
|
||||
type matches, would always fail.
|
||||
|
||||
6. A small host of further bugs found and fixed during the major refactor, but
|
||||
not all of them were noted, they were just fixed, sorry, those will be lost
|
||||
to history unless you compare with diffs the two versions, but that's thousands
|
||||
of lines, but there were more bugs fixed than listed above, just can't remember
|
||||
them all.
|
||||
|
||||
FIXES:
|
||||
|
||||
1. There was some ambiguity about when inxi falls back to showing hardware graphics
|
||||
driver instead of xorg gfx driver when it can't find an xorg driver. That can happen
|
||||
for instance because of wayland, or because of obscure xorg drivers not yet supported.
|
||||
Now the message is very clear, it says the gfx software driver is n/a, and that it's
|
||||
showing the hardware gfx driver.
|
||||
|
||||
2. Big redo of cpu microarch, finally handled cases where same stepping/model ID
|
||||
has two micorarches listed, now that is shown clearly to users, like AMD Zen family
|
||||
17, model 18, which can be either Zen or Zen+, so now it shows that ambiguity, and
|
||||
a comment: note: check, like it shows for ram report when it's not sure. Shows
|
||||
for instance:
|
||||
arch: Zen/Zen+ note: check
|
||||
in such cases, in other words, it tells users that the naming convention
|
||||
basically changed during the same hardware/die cycle.
|
||||
|
||||
3. There were some raid component errors in the unmounted tests which is supposed
|
||||
to test the raid components and remove them from the mounted list. Note that inxi
|
||||
now also tests better if something is a raid component, or an lvm component, or
|
||||
various other things, so unmounted will be right more often now, though it's still
|
||||
not perfect since there are still more unhandled logical storage components that
|
||||
will show as unmounted when tney are parts of logical volumes. Bit by bit!!
|
||||
|
||||
4. Part of a significant android fine tuning and fix series, for -P, android uses
|
||||
different default names for partitions, so none showed, now a subset of standard
|
||||
android partitions, like /System, /firmware, etc, shows. Android will never work
|
||||
well though because google keeps locking down key file read/search permissions in
|
||||
/sys and /proc.
|
||||
|
||||
5. More ARM device detections, that got tuned quite a bit and cleaned up, for
|
||||
instance, it was doing case sensitive checks, but found cases where the value
|
||||
is all upper case, so it was missing it. Now it does case sensitive device type
|
||||
searches.
|
||||
|
||||
6. One of the oldest glitches in inxi was the failure to take the size of the raid
|
||||
arrays versus the size totals of the raid array components led to Local Storage
|
||||
results that were uselessly wrong, being based on what is now called 'raw' disk
|
||||
totals, that's the raw physical total of all system disks. Now if raid is detected
|
||||
the old total: used:... is expanded to: total: raw:... usable:....used:, the usable
|
||||
being the actual disk space that can be used to store data. Also in the case of
|
||||
LVM systems, a further item is added, lvm-free: to report the unused but available
|
||||
volume group space, that is, space not currently taken by logical volumes. This
|
||||
can provide a useful overview of your system storage, and is much improved over
|
||||
the previous version, which was technically unable to solve that issue because
|
||||
the internal structures did not support it, now they do. LVM data requires sudo/
|
||||
root unfortunately, so you will see different disk raw totals depending on
|
||||
if it's root or not if there is LVM RAID running.
|
||||
|
||||
Sample: inxi -D
|
||||
Drives: Local Storage: total: raw: 340.19 GiB usable: 276.38 GiB
|
||||
lvm-free: 84.61 GiB used: 8.49 GiB (3.1%)
|
||||
|
||||
lvm-free is non assigned volume group size, that is, size not assigned
|
||||
to a logical volume in the volume group, but available in the volume group.
|
||||
raw: is the total of all detected block devices, usable is how much of that
|
||||
can be used in file systems, that is, raid is > 1 devices, but those devices
|
||||
are not available for storage, only the total of the raid volume is.
|
||||
Note that if you are not using LVM, you will never see lvm-free:.
|
||||
|
||||
7. An anonymous user sent a dataset that contained a reasonable alternate
|
||||
syntax for sensors output, that made inxi fail to get the sensors data. That was
|
||||
prepending 'T' to temp items, and 'F' to fan items, which made enough sense though
|
||||
I'd never seen it before, so inxi now supports that alternate sensors temp/fan
|
||||
syntax, so that should expand the systems it supports by default out of the box.
|
||||
|
||||
8. Finally was able to resolve a long standing issue of loading File::Find, which
|
||||
is only used in --debug 20-22 debugger, from top of inxi to require load in the
|
||||
debugger. I'd tried to fix this before, but failed, the problem is that redhat
|
||||
/fedora have broken apart Perl core modules, and made some of them into external
|
||||
modules, which made inxi fail to start due to missing use of required module that
|
||||
was not really required. Thanks to mrmazda for pointing this out to me, I'd tried
|
||||
to get this working before but failed, but this time I figured out how to recode
|
||||
some of the uses of File::Find so it would work when loaded without the package
|
||||
debugger, hard to figure it, turned out a specific sub routine call in that
|
||||
specific case required the parentheses that had been left off, very subtle.
|
||||
|
||||
9. Subtle issue, unlike most of the other device data processors, the USB
|
||||
data parser did not use the remove duplicates tool, which led in some cases
|
||||
to duplicated company names in the output for USB, which looks silly.
|
||||
|
||||
10. Somehow devtmpfs was not being detected in all cases to remove that from
|
||||
partitions report, that was added to the file systen filters to make sure it
|
||||
gets caught.
|
||||
|
||||
11. Removed LVM image/meta/data data slices from unmounted report, those are LVM
|
||||
items, but they are internal LVM volumes, not available or usable. I believe
|
||||
there are other data/meta type variants for different LVM features but I have
|
||||
added as many types as I could find.. Also explictly now remove any _member type
|
||||
item, which is always part of some other logical structure, like RAID or
|
||||
LVM, those were not explicitly handled before.
|
||||
|
||||
12. Corrected the varous terms ZFS can use for spare drives, and due to how
|
||||
those describe slightly different situations than simply spare, changed the spare
|
||||
section header to Available, which is more accureate for ZFS.
|
||||
|
||||
ENHANCEMENTS:
|
||||
|
||||
1. Going along with FIX 2 is updating and adding to intel, elbrus microarch family/
|
||||
model/stepping IDs (E8C2), so that is fairly up to date now.
|
||||
|
||||
2. Added in a very crude and highly unreliable default fallback for intel:
|
||||
/sys/devices/cpu/caps/pmu_name which will show the basic internal name used
|
||||
which can be quite different from what the actual microarch name is, but the hope
|
||||
is that for new intel cpus that come out after these last inxi updates, something
|
||||
may show, instead of nothing. Note these names are often much more generic, like
|
||||
using skylake for many different microarches.
|
||||
|
||||
3. More android enhancements, for androids that allow reading of /system/build.prop,
|
||||
which is a very useful informative system info file, more android data will show,
|
||||
like the device name and variant, and a few other specialized items. You can see if
|
||||
your android device lets inxi read build.prop if you see under -S Distro:
|
||||
Android 7.1 (2016-07-23) or just Android. If it shows just android, that means
|
||||
it can't read that file. Showing Android however is also new, since while inxi
|
||||
can't always read build.prop if that file is there, it's android, so inxi
|
||||
finally can recognize it's in android, even though it can't give much info if
|
||||
it's locked down. Inxi in fact did not previously know it was running in android,
|
||||
which is quite different from ARM systems in some ways, but now it does.
|
||||
|
||||
If the data is available, it will be used in Distro: and in Machine: data to add
|
||||
more information about the android version and device.
|
||||
|
||||
4. A big one, for -p/-P/-o/-j now shows with -x the mapped device name, not just
|
||||
the /dev/dm-xx ID, which makes connecting the various new bits easier, for RAID,
|
||||
Logical reports. Note that /dev/mapper/ is removed from the mapped name since
|
||||
that's redundant and verbose and makes the output harder to read. For mapped
|
||||
devices, the new --logical / -L report lets you drill into the devices to find
|
||||
out what dm-xx is actually based on, though that is a limited feature which only
|
||||
supports drilling to a depth of 2 components/devices, there can be more,
|
||||
particularly for bcache, luks setups, but it's just too hard to code that
|
||||
level of depth, so something is better than nothing in this case, which
|
||||
is the actual choice I was faced, the perfect in this case really is/was
|
||||
the enemy of the good, as they say.
|
||||
|
||||
5. More big ones, for -a -p/-P/-o/-j shows kernel device major:minor number,
|
||||
which again lets you trace each device around the system and report.
|
||||
|
||||
6. Added mdadm if root for mdraid report, that let me add a few other
|
||||
details for mdraid not previously available. This added item 'state;'
|
||||
to the mdraid report with right -x options.
|
||||
|
||||
7. Added vpu component type to ARM gfx device type detection, don't know
|
||||
how video processing vcu had escaped my notice.
|
||||
|
||||
8. Added fio[a-z] block device, I'd never heard of that before, but saw
|
||||
use of it in dataset, so learned it's real, but was never handled as a
|
||||
valid block device type before, like sda, hda, vda, nvme, mmcblk,
|
||||
etc. fio works the same, it's fio + [a-z] + [0-9]+ partition number.
|
||||
|
||||
9. Expanded to alternate syntax Elbrus cpu L1, L2, L3 reporting. Note
|
||||
that in their nomenclature, L0 and L1 are actually both L1, so add those
|
||||
together when detected.
|
||||
|
||||
10. RAM, thanks to a Mint user, antikythera, learned, and handled something
|
||||
new, module 'speed:' vs module 'configured clock speed:'.
|
||||
To quote from supermicro:
|
||||
|
||||
<<<
|
||||
Question: Under dmidecode, my 'Configured Clock Speed' is lower than my
|
||||
'Speed'. What does each term mean and why are they not the same?
|
||||
Answer: Under dmidecode, Speed is the expected speed of the memory
|
||||
(what is advertised on the memory spec sheet) and Configured Clock Speed
|
||||
is what the actual speed is now. The cause could be many things but the
|
||||
main possibilities are mismatching memory and using a CPU that doesn't
|
||||
support your expected memory clock speed.
|
||||
Please use only one type of memory and make sure that your CPU supports
|
||||
your memory.
|
||||
>>>
|
||||
|
||||
11. Since RAM was gettng a look, also changed cases where ddr ram speed is reported
|
||||
in MHz, now it will show the speeds as: [speed * 2] MT/S ([speed] MHz). This
|
||||
will let users make apples to apples speed comparisons between different systems.
|
||||
Since MT/S is largely standard now, there's no need to translate that to MHz.
|
||||
|
||||
12. And, even more!! When RAM speeds are logically absurd, adds in note: check
|
||||
This is from a real user's data by the way, as you can see, it triggers all
|
||||
the new RAM per Device report features.
|
||||
|
||||
Sample:
|
||||
Memory:
|
||||
RAM: total: 31.38 GiB used: 20.65 GiB (65.8%)
|
||||
Array-1: capacity: N/A slots: 4 note: check EC: N/A
|
||||
Device-1: DIMM_A1 size: 8 GiB speed: 1600 MT/s (800 MHz)
|
||||
Device-2: DIMM_A2 size: 8 GiB speed: spec: 1600 MT/s (800 MHz)
|
||||
actual: 61910 MT/s (30955 MHz) note: check
|
||||
Device-3: DIMM_B1 size: 8 GiB speed: 1600 MT/s (800 MHz)
|
||||
Device-4: DIMM_B2 size: 8 GiB speed: spec: 1600 MT/s (800 MHz)
|
||||
actual: 2 MT/s (1 MHz) note: check
|
||||
|
||||
13. More disks vendor!!! More disk vendor IDs!!! Yes, that's right, eternity
|
||||
exists, here, now, and manifests every day!! Thanks to linux-lite hardware
|
||||
database for this eternally generating list. Never underestimate the
|
||||
creativity of mankind to make more disk drive companies, and to release
|
||||
new model IDs for existing companies. Yes, I feel that this is a metaphore
|
||||
for something much larger, but what that is, I'm not entirely clear about.
|
||||
|
||||
CHANGES:
|
||||
|
||||
1. Recent kernel changes have added a lot more sensor data in /sys, although
|
||||
this varies system to system, but now, if your system supports it, you can
|
||||
get at least partial hdd temp reports without needing hddtemp or root. Early
|
||||
results suggest that nvme may have better support than spinning disks, but it
|
||||
really varies. inxi will now look for the /sys based temp first, then fall
|
||||
back to the much slower and root / sudo only hddtemp. You can force hddtemp
|
||||
always with --hddtemp option, which has a corresponding configuration item.
|
||||
|
||||
2. The long requested and awaited yet arcane and obscure feature -L/--logical,
|
||||
which tries to give a reasonably good report on LVM, LUKS, VeraCrypt, as well
|
||||
as handling LVM raid, both regular and thin, is now working, more or less.
|
||||
This took a lot of testing and will probably not be reasonably complete for
|
||||
a while, mainly because the levels of abstraction possible between lvm,
|
||||
lvm raid, mdraid, LUKS, bcache, and other caching and other encryption
|
||||
options are just too deep to allow for easy handling, or easy outputs.
|
||||
But a very solid and good start in my view, going from nothing to something
|
||||
is always a big improvement!! LVM reports require root/sudo. This will,
|
||||
finally, close issue #135.
|
||||
|
||||
3. Going along with -L, and serving as a model for the logic of -L, was the
|
||||
complete refactor of -R, RAID, which was a real mess internally, definitely
|
||||
one of the messiest and hardest to work with features of inxi before the
|
||||
refactor. It's now completely cleaned up and modularized, and is easy to add
|
||||
raid types, which was not possible before, now it cleanly supports zfs, mdraid,
|
||||
and lvm raid, with in depth reports and added items like mdraid size, raid
|
||||
component device sizes and maj:min numbers if the -a option is used. Note
|
||||
that LVM RAID requires root/sudo.
|
||||
|
||||
4. Added some more sensors dimm, volts items, slight expansion. Note that the
|
||||
possible expansion of sensors made possible by the recently upgraded sensors
|
||||
output logic, as well as the new inxi internal sensors data structure,
|
||||
which is far more granular than the previous version, and allows for much
|
||||
more fine grained control and output, though only gpu data currently takes
|
||||
advantage of this new power under the covers, although as noted, the /sys based
|
||||
hdd temps use the same source, only straight from /sys, since it was actually
|
||||
easier using the data directly from sys than trying to map the drive locations to
|
||||
specific drives in sensors output. Well, to be accurate, since now only
|
||||
board type sensors are used for the temp/fan speed, voltage, etc, reports,
|
||||
the removal of entire sensor groups means less chance of wrong results.
|
||||
|
||||
5. To bring the ancient RAID logic to fit the rest of inxi style, made
|
||||
zfs, mdraid, and lvm raid components use incrementing numbers, like cpu
|
||||
cores does. This got rid of the kind of ugly hacks used previously
|
||||
which were not the same for zfs or mdraid, but now they are all the same,
|
||||
except that the numbers for mdraid are the actual device numbers that
|
||||
mdraid supplies, and the LVM and ZFS numbers are just autoincremented,
|
||||
starting at 1.
|
||||
|
||||
6. Changed message <root/superuser required> to <superuser required> because
|
||||
it's shorter and communicates the same thing.
|
||||
|
||||
INTERNAL CODE CHANGES:
|
||||
|
||||
1. Small, transparent test, tested on Perl 5.032 for Perl 7 compatibility. All
|
||||
tests passed, no legacy code issues in inxi as of now.
|
||||
|
||||
2. Although most users won't notice, a big chunk of inxi was refactored
|
||||
internally, which is why the new -L, the revamped -R, and the fixed
|
||||
disk totals finally all can work now. This may hopefully result in more
|
||||
consistent output and fewer oddities and randomnesses, since more of the
|
||||
methods all use the same tools now under the covers. Ths refactor also
|
||||
significantly improved inxi's execution speed, by about 4-5%, but most
|
||||
of those gains are not visible due to the added new features, but the
|
||||
end result is new inxi runs roughly the same speed as pre 3.2.00 inxi, but
|
||||
does more, and does it better, internally at least. If you have a very
|
||||
good eye you may also note a few places where this manifests externally
|
||||
as well. Last I checked about 10-12% of the lines of inxi had been changed,
|
||||
but I think that number is higher now. Everything that could be optimized
|
||||
was, everything could be made more efficient was.
|
||||
|
||||
3. Several core tools in inxi were expanded to work much more cleanly,
|
||||
like reader(), which now supports returning just the index value you want,
|
||||
that always happened on the caller end before, which led to extra code.
|
||||
get_size likewise was expanded to do a string return, which let me
|
||||
remove a lot of internal redundant code in creating the size unit output,
|
||||
like 32 MiB. uniq() was also redone to work exclusively by reference.
|
||||
|
||||
4. Many bad reference and dereference practices that had slipped into inxi
|
||||
from the start are mostly corrected now, array assignments use push now,
|
||||
rather than assign to array, then add array to another array, and assign
|
||||
those to the master array. Several unnecessary and cpu/ram intensive copying
|
||||
steps, that is, were removed in many locations internally in inxi. Also
|
||||
now inxi uses more direct anonymous array and hash refernce assignments,
|
||||
which again removes redundant array/hash creation, copy, and assignment.
|
||||
|
||||
5. Also added explicit -> dereferencing arrows to make the code more clear
|
||||
and readable, and to make it easier for perl to know what is happening.
|
||||
The lack of consistency actually created confusion, I was not aware of
|
||||
what certain code was doing, and didn't realize it was doing the same
|
||||
thing as other code because of using different methods and syntaxes for
|
||||
referencing array/hash components. I probably missed some, but I got many
|
||||
of them, most probably.
|
||||
|
||||
6. Instituted a new perl builtin sub routine rule which is: if the sub
|
||||
takes 2 or more arguments, always put in parentheses, it makes the
|
||||
code much easier to follow because you see the closing ), like:
|
||||
push(@rows,@row); Most perl builtins that take only one arg do not
|
||||
use parentheses, except length, which just looks weird when used in
|
||||
math tests, that is: length($var) > 13 looks better than length $var > 13.
|
||||
This resolved inconsistent uses that had grown over time, so now all the
|
||||
main builtins follow these rules consistently internally.
|
||||
|
||||
Due to certain style elements, and the time required to carefully go through
|
||||
all these rules, grep and map do not yet consistently use these rules, that's
|
||||
because the tendency has been to use the grep {..test..} @array and
|
||||
map {...actions...} @array
|
||||
|
||||
7. Mainly to deal with android failures to read standard system files due to
|
||||
google locking it down, moved most file queries to use -r, is readable, rather
|
||||
than -e, exists, or -f, is file, unless it only needs to know if it exists,
|
||||
of course. This fixed many null data errors in android even on locked androids.
|
||||
|
||||
8. Added in %mapper and %dmmapper hashes to allow for easy mapping and
|
||||
unmapping of mapped block devices. Got rid of other ways of doing that,
|
||||
and made it consistent throughout inxi. These are globals that load once.
|
||||
|
||||
9. Learned that perl builtin split() has a very strange and in my view originally
|
||||
terrible decision that involves treating as regex rules string characters in split
|
||||
string, like split('^^',$string), which should logically be a string value, not
|
||||
a ^ start search followed by a ^, but that's how it is, so that was carefully checked
|
||||
and made consistent as well. Also expanded split to take advantage of the number of
|
||||
splits to do, which I had only used occasionally before, but only updated field/value
|
||||
splits where I have a good idea of what the data is. This is very useful when the
|
||||
data is in the form of field: value, but value can contain : as well. You have to
|
||||
be very careful however, since some data we do want in fact the 2nd split, but not
|
||||
the subsequent ones, so I only updated the ones I was very sure about.
|
||||
|
||||
10. Going along with the cpu microarch fixes, updated and cleaned up all the lists
|
||||
of model/stepping matches, now they are all in order and much easier to scan and
|
||||
find, that had gotten sloppy over the years.
|
||||
|
||||
11. More ARM, moved dummy and codec device values into their own storage arrays,
|
||||
that let me remove the filters against those in the other detections. Makes logic
|
||||
easier to read and maintain as well.
|
||||
|
||||
|
||||
-----------------------------------
|
||||
-- Harald Hope - Tue, 15 Dec 2020 15:08:05 -0800
|
||||
|
||||
=====================================================================================
|
||||
Version: 3.1.09
|
||||
Patch: 00
|
||||
|
|
Loading…
Reference in a new issue