Growlight: Difference between revisions
| (36 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
[[File:glight.png|right|thumb|alt="Growlight logo"|Grow, baby, grow]] | [[File:glight.png|right|thumb|alt="Growlight logo"|Grow, baby, grow]] | ||
[ | Growlight is a powerful open source tool for visualizing and managing persistent storage under Linux, built atop [[Notcurses]]. It began life as Sprezzatech's system installation prep tool, designed for use with [http://www.sprezzatech.com/sprezzos.html SprezzOS], but is now aimed at more mainstream (and non-defunct) distributions. | ||
* Code lives at [https://github.com/dankamongmen/growlight GitHub]. | * Code lives at [https://github.com/dankamongmen/growlight GitHub]. | ||
* Downloads are available | * Downloads are available from [https://github.com/dankamongmen/growlight/releases GitHub]. | ||
* Growlight is present in [https://src.fedoraproject.org/rpms/growlight Fedora Core], [https://tracker.debian.org/pkg/growlight Debian], Alpine Edge, the AUR, and OpenSUSE. | |||
* There is a [https://groups.google.com/forum/#!forum/growlight-dev mailing list]. You can post by mailing [mailto:growlight-dev@googlegroups.com growlight-dev@googlegroups.com]. | * There is a [https://groups.google.com/forum/#!forum/growlight-dev mailing list]. You can post by mailing [mailto:growlight-dev@googlegroups.com growlight-dev@googlegroups.com]. | ||
* | * Bugs are now being tracked via [https://github.com/dankamongmen/growlight/issues Github issues] | ||
==Debian installer== | |||
My talk, "[https://debconf21.debconf.org/talks/3-proposing-a-new-d-i-disk-preparation-tool-growlight/ proposing a new d-i disk preparation tool]" at [https://debconf21.debconf.org/ debconf21] introduces the idea of using growlight within the mainstream Debian Installer. | |||
==Some capabilities== | ==Some capabilities== | ||
{|class="wikitable" border="1" | {|class="wikitable" border="1" | ||
| Line 11: | Line 16: | ||
! Helpers | ! Helpers | ||
|- | |- | ||
| | | <tt>CDROM_TIMED_MEDIA_CHANGE</tt> | ||
| 1.0.0 | | | ||
| | | Linux 5.16 | ||
|- | |||
| EFIstub setup | |||
| | |||
| efibootmgr | |||
|- | |||
| [https://phoronix.com/scan.php?page=news_item&px=Linux-5.15-Disk-Seq-No BLKGETDISKSEQ] | |||
| | |||
| Linux 5.15 | |||
|- | |||
| [https://systemd.io/DISCOVERABLE_PARTITIONS Discoverable partitions] | |||
| | |||
| | |||
|- | |||
| NVMe-ZNS recognition | |||
| | |||
| Linux 5.9 | |||
|- | |||
| exFAT support | |||
| | |||
| Linux 5.6, exfat-utils | |||
|- | |||
| Linux 5.6 "drivetemp" support | |||
| | |||
| Linux 5.6 | |||
|- | |||
| [[NVMe|Optane]] DCPMM device support | |||
| | |||
| ipmctl | |||
|- | |||
| Collect and display statistics | |||
| 1.1.0 | |||
| procfs | |||
|- | |||
| [[NVMe]] device support | |||
| 1.0.5 | |||
| nvme-cli | |||
|- | |- | ||
| Pass stride_width and stripe parameters to mkfs.ext* | | Pass stride_width and stripe parameters to mkfs.ext* | ||
| Line 30: | Line 71: | ||
| 1.0.2 | | 1.0.2 | ||
| mkfs.xfs | | mkfs.xfs | ||
|- | |- | ||
| Make HFS/HFS+ filesystems | | Make HFS/HFS+ filesystems | ||
| Line 39: | Line 76: | ||
| mkfs.hfs, mkfs.hfsplus | | mkfs.hfs, mkfs.hfsplus | ||
|- | |- | ||
| | | Filesystem signature wiping | ||
| 1.0. | | 1.0.2 | ||
| | | wipefs | ||
|- | |- | ||
| | | Create/manipulate MSDOS partition tables | ||
| 1.0. | | 1.0.2 | ||
| | | | ||
|- | |- | ||
| | | Create/manipulate Apple Partition Maps | ||
| 1.0. | | Create added in 1.0.4 | ||
| | | | ||
|- | |- | ||
| Create MD aggregates | | Create MD aggregates | ||
| Line 57: | Line 94: | ||
| Create DM aggregates | | Create DM aggregates | ||
| needs testing | | needs testing | ||
| | |||
|- | |||
| MD / zpool aggregate scan + import | |||
| 1.0.1 | |||
| mdadm, zpool | |||
|- | |||
| Temperature sensing (where supported) | |||
| 1.0.1 | |||
| libatasmart | |||
|- | |||
| Rotation speed / Transport detection | |||
| 1.0.1 | |||
| | | | ||
|- | |- | ||
| Line 63: | Line 112: | ||
| zpool, zfs | | zpool, zfs | ||
|- | |- | ||
| | | Make ext2, ext3, ext4 filesystems | ||
| 1.0.0 | |||
| e2fsprogs (mkfs.ext*) | |||
|- | |||
| Make swap devices | |||
| 1.0.0 | |||
| mkswap | |||
|- | |||
| Labeled filesystem creation | |||
| 1.0.0 | | 1.0.0 | ||
| | | | ||
|- | |- | ||
| Create/manipulate | | Make vfat filesystems | ||
| 1.0. | | 1.0.0 | ||
| mkfs.vfat | |||
|- | |||
| Create/manipulate GPT partition tables | |||
| 1.0.0 | |||
| | | | ||
|- | |- | ||
| Line 74: | Line 135: | ||
| 1.0.0 | | 1.0.0 | ||
| | | | ||
|- | |- | ||
| SMART status check | | SMART status check | ||
| Line 83: | Line 140: | ||
| libatasmart | | libatasmart | ||
|- | |- | ||
|- | |- | ||
| UEFI boot preparation (UEFI bootloader, ESP, /etc/fstab) | | UEFI boot preparation (UEFI bootloader, ESP, /etc/fstab) | ||
| | | 1.0.0 | ||
| grub2 | | grub2 | ||
|- | |- | ||
| Line 106: | Line 156: | ||
* From [[C]]: use the BLKRRPART or BLKPG ioctls | * From [[C]]: use the BLKRRPART or BLKPG ioctls | ||
** BLKRRPART is deprecated. It fails if any partition on the disk is in use, wheras BLKPG fails only if given invalid arguments, or attempting to modify a partition that is being used. | ** BLKRRPART is deprecated. It fails if any partition on the disk is in use, wheras BLKPG fails only if given invalid arguments, or attempting to modify a partition that is being used. | ||
Growlight handles all of this for you, of course. | |||
==Identifying Block Devices== | ==Identifying Block Devices== | ||
| Line 163: | Line 214: | ||
| 9.4ZB | | 9.4ZB | ||
| 128 * ''n'' | | 128 * ''n'' | ||
|- | |||
! APM | |||
| 2TB | |||
| 2TB | |||
| n, requiring n + 1 512-byte sectors | |||
|- | |- | ||
|} | |} | ||
===Unique Identification=== | ===Unique Identification=== | ||
It is useful to uniquely identify block devices in a persistent manner. Device topology and thus <tt>/dev</tt> entry naming can change dynamically -- devices can be moved between boots; hot pluggable drives can be attached and removed; media can be ejected and replaced or reinserted. For physical devices, the unique identification ought be associated with the physical device. For virtual devices, the unique identification ought be associated with the virtual device and its component devices. | It is useful to uniquely identify block devices in a persistent manner. Device topology and thus <tt>/dev</tt> entry naming can change dynamically -- devices can be moved between boots; hot pluggable drives can be attached and removed; media can be ejected and replaced or reinserted. For physical devices, the unique identification ought be associated with the physical device. For virtual devices, the unique identification ought be associated with the virtual device and its component devices. | ||
| Line 176: | Line 233: | ||
==Resources== | ==Resources== | ||
Note that even using DMI 2.0, | Note that even using DMI 2.0, a 4x southbridge uplink can be supersaturated by four SATA3 devices. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
! Interface | ! Interface | ||
| Line 243: | Line 300: | ||
| 32 | | 32 | ||
|- | |- | ||
| DMI lane | | DMI lane | ||
| | | n/a | ||
| 5 | | 5 | ||
| 10 | | 10 | ||
|- | |- | ||
| DMI 2.0 | | DMI 2.0 lane | ||
| | | n/a | ||
| 10 | | 10 | ||
| 20 | | 20 | ||
|- | |||
| DMI 3.0 lane | |||
| n/a | |||
| 20 | |||
| 40 | |||
|- | |- | ||
|} | |} | ||