Check out my first novel, midnight's simulacra!
Growlight
From dankwiki
Growlight is Sprezzatech's open source installer project, designed for use with SprezzOS. It lives at GitHub.
Identifying Block Devices
Terminology!
- UUID A 128-bit RFC 4122 number. Used in GPT for disks and partitions. Used in many filesystems.
- WWN A 64- or 128-bit number associated with physical components. Makes use of IEEE OUIs.
- Partition table: A structure describing logical volumes on a single disk
- Disklabel An old (BSDish) name for a partition table
- Label A string of up to 16 bytes associated with a filesystem
- Volume Label An old (DOSish) name for a filesystem label
- Master Boot Record The first sector on a disk in a BIOS/MBR machine
- Boot sector The first sector of a bootable partition
Thus:
- A disk has a WWN, a model, and a serial number.
- A GPT partition table has a UUID, sometimes called the disk GUID
- but though there is only one per disk, it's a property of the GUID Partition Table
- A MBR partition table has nothing, really.
- A GPT partition has a UUID and a name of up to 36 UTF-16LE units
- A GPT partition also has a 128-bit number for its partition type, but they're commonly defined
- Thus UUID/GUID is really a misnomer, but whatever
- 024DEE41-33E7-11D3-9D69-0008C781F39F -- MBR scheme
- C12A7328-F81F-11D2-BA4B-00A0C93EC93B -- EFI system partition (ESP)
- ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 -- basic data partition
- A19D880F-05FC-4D3B-A006-743F0F84911E -- linux raid
- etc...
- A GPT partition also has a 128-bit number for its partition type, but they're commonly defined
- A MBR partition once again has nothing, just an 8-bit type.
- A filesystem probably has a label, and probably has a UUID. Depends on the filesystem.
Partition Tables
FIXME I think some of these values are wrong, maybe embarrassingly so
Table type | Max disk size | Max partition size | Max partitions |
---|---|---|---|
MBR (CHS) | 8GB | 8GB | 4 primary
OR 3 primary, 1 extended, arbitrarily many logical |
MBR (LBA) | 8TB | 2TB | 4 primary
OR 3 primary, 1 extended, arbitrarily many logical |
GPT | 9.4ZB | 9.4ZB | 128 |
Resources
The Growlight component of the SprezzOS project can be found on Sprezzabugs. Source is available from GitHub.
Device | Max theoretical bandwidth |
---|---|
SATA | 1.5 Gbps |
SATA 2 | 3 Gbps |
SATA 3 | 6 Gbps |
SAS | 2.4 Gbps (300 MB/s) |
SAS 2 | 4.8 Gbps (600 MB/s) |
SAS 3 | 9.6 Gbps (1.2 GB/s) |
USB 1.1 | 12 Mbps |
USB 2 | .48 Gbps |
USB 3 | 5 Gbps (625 MB/s) |
PCIe lane | 2 Gbps (250 MB/s) |
PCIe 2.0 lane | 4 Gbps (500 MB/s) |
PCIe 3.0 lane | 8 Gbps (1 GB/s) |
8 SATAII devices on 8xPCIe 2.0: 3GB/s on 4GB/s ✔ LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03) [0:0:0:0] disk ATA ST2000DL003-9VT1 CC3C [0:0:1:0] disk ATA ST2000DL003-9VT1 CC3C [0:0:2:0] disk ATA ST2000DL003-9VT1 CC32 [0:0:3:0] disk ATA ST2000DL003-9VT1 CC3C [0:0:4:0] disk ATA INTEL SSDSA2M080 02HD [0:0:5:0] disk ATA WDC WD20EARS-00M 51.0 [0:0:6:0] disk ATA WDC WD20EARS-00M 51.0 [0:0:7:0] disk ATA ST2000DL003-9VT1 CC32 2 SATAIII devices on 1xPCIe 2.0: 1.5GB/s on 500MB/s ✘ Marvell Technology Group Ltd. 88SE9120 SATA 6Gb/s Controller (rev 12) [10:0:0:0] disk ATA ST2000DL003-9VT1 CC32 [11:0:0:0] disk ATA ST3000DM001-9YN1 CC9C 1 SATAII device on USB 2.0: 375MB/s on 480MB/s ✔− Intel Corporation 6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (rev 05) [19:0:0:0] disk HTC Android Phone 0100 1 SATAIII device + 1 SATAII device on 1xPCIe 2.0: 1.125GB/s on 500MB/s ✘ Marvell Technology Group Ltd. 88SE9123 PCIe SATA 6.0 Gb/s controller (rev 11) [2:0:0:0] disk ATA INTEL SSDSA2CW12 0302 [3:0:0:0] disk ATA ST2000DL003-9VT1 CC32 4 SATAII devices + 1 SATAIII-on-SATAII device (✘) on PCI 2.0 PCH (?) Intel Corporation 6 Series/C200 Series Chipset Family SATA AHCI Controller (rev 05) [4:0:0:0] disk ATA ST9320423AS SDM1 [5:0:0:0] disk ATA ST9320423AS SDM1 [6:0:0:0] cd/dvd ATAPI iHBS112 2 CL0F [7:0:0:0] disk ATA WDC WD20EARX-00P 51.0 [9:0:0:0] disk ATA ST3000DM001-9YN1 CC9C 1 MDRAID6 1 MDRAID1 1 ZRAID2
Definite Goals
- Boot with a single image on UEFI/BIOS-based machines
- As much compatibility with debian installer as is reasonable/justified
- Look as good as is reasonable
- Robustness in the face of lossy/problematic devices
Disks
- Fully support ZFS during install, include RAIDZ setup
- Use GPT (correctly) by default.
- Extract true parameters from SSDs and 4k sector (especially WD-EARS) drives
- Properly align everything
Possible Goals
- Install either Linux or FreeBSD