From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1bZg1B-0007Zy-3O for mharc-grub-devel@gnu.org; Tue, 16 Aug 2016 11:11:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54240) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bZg18-0007Y6-Bi for grub-devel@gnu.org; Tue, 16 Aug 2016 11:11:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bZg14-0006qp-AY for grub-devel@gnu.org; Tue, 16 Aug 2016 11:11:02 -0400 Received: from mail-sn1nam02on0137.outbound.protection.outlook.com ([104.47.36.137]:58089 helo=NAM02-SN1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bZg13-0006qf-PL for grub-devel@gnu.org; Tue, 16 Aug 2016 11:10:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sooners.onmicrosoft.com; s=selector1-ou-edu; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=QBP4DVIKrDXGdtilS0YWlc3aAXlXO44uidZnrk7AZlI=; b=JOfpfpCLjDOaQf4tNuL1ZR6FazvxkAmxYjrQ5qKrrI30DL4fQt2iRy34RyH/IX7DRIxeyvSV00m3WrsFU8qVOwT2iQjUOd1aLZiubKQxYQgKO94iCqAvM40C4VMn1LbCb2BNn/8PTBj3ZRWWzZfu9Oe/dpvzSR+bgOfCyZs8bKM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=skenton@ou.edu; Received: from localhost.localdomain (68.97.3.132) by MWHPR03MB2703.namprd03.prod.outlook.com (10.168.207.137) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.549.15; Tue, 16 Aug 2016 14:56:29 +0000 From: Steve Kenton To: CC: Steve Kenton Subject: [PATCH 1/1] add --partuuid to probe Date: Tue, 16 Aug 2016 14:56:22 +0000 Message-ID: <20160816145622.3282-1-skenton@ou.edu> X-Mailer: git-send-email 2.9.0.137.gcf4c2cf MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [68.97.3.132] X-ClientProxiedBy: DM2PR09CA0021.namprd09.prod.outlook.com (10.160.127.31) To MWHPR03MB2703.namprd03.prod.outlook.com (10.168.207.137) X-MS-Office365-Filtering-Correlation-Id: 32ee091e-1b17-4d50-85b2-08d3c5e5811f X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2703; 2:lYnRdc751jR7AgFibADENbQOlw8uc1iQfk90mnB50D1aS33Nz8lJ3D7LL9eh/c1iLlr2jU2IPxfQzHXoaV/WOw2HGPcJVsdrXRtFAdV3iP1Ln0DMslX5CXOi1IzZgSVKPTvW6FcMcHApPOVXtABmU0XW3AQM8BxiLhrasFIlMShGpqEtFB8c+D1ovA9PyiaY; 3:EnCZQ9VMZdClM6ZOJYzCz1f57USbjj3b3vw7wcCqKooLLrnYZR2SRXYE9GmS+QB0GfZ4u++aSWGLqmjR9ywlhtZhrsGsn1TN4ryvEE7dnTGpaCksM+OCTbxho5wswAnI; 25:LVuE42NhGIy8MG7eoSRvqh9wKIsw6guG1vhrXuLOl3hjGz63/muwKNgybX9TtGhQUuZpp02Egwl+CoQzwlz0Mzyk1CYG5yavBNCU7YeTJk+Z2nak2tV3sT/XyDIKuz/Eb0eCngfZcFCu9ilEsizv4GblBwpNFROpgkXQLNNsNT6QFfGAoZMY7LoP+aGANW+HLkCad0ZoJce0Dqo6LI5lw7niRZ+Xzwi+IwiyM2NORuShl40YLCeANOr8+AQjE0DTHYSmIYr7oVnA7OKR/IdhGbvKbQ8G7INxfrHOzIUYajhVI2luxY5IKkhpneHkSSSLRczT5ZNQOjiKO11V7ilp0vc8AaE/ls2L+ybBVLq3JF3D6akZb+H5/58nwCs6B091UHZHfbSvmOzYq65qT6pF3tfpQzJB4+RbxwNYSX+MTWg= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:MWHPR03MB2703; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2703; 31:XAn4HJLjy/STJTqyDauq+tCkZkM9UCteSIeUFmVNvyIc5BIuRK+xf71jxWur0KP08pArmKX5zxzVGCpfEeLWMx1DDO1FHyWUxvrAAszWrG1bgB+uLYlLhe3En18Yw4Gc33rzxxA6C5UX391y2Disof7uKsAkNuxJAOSs2U8ztWXmCnR65XOwTm7AnIp2q94zBo6qXvIbrPFrZjjACRyjAv2pJO92fXjIWNrfX0svWXg=; 20:bbedu4G2Qt33K+rwP5CAz6rIacjlRP4dTKYBAbzk07kcY/HZ1SbC0JveLiyjJK9Nm/R+gYdhwzmPA2j4IEFfgRIrqavS+NgxOMgN2BWZrBmp1myeZ7fk9Jx/g4/2DcjWri7HmtZTBomMNpUR4r/ihCbYsx2SOPeyu9E86D1eSc2b9xUrT6K9BYTfolbbMeXwZZio97qUqQQ22ZgagyGUnaexOjj4mrnYO6teW+U3/iiJDOuBijZPcNUF0RlJdxpjkjiJNMEqpJmX3eb4YBB0rsYs9CrGNS9teMwWpZ4t8/KhDAtB9UN5uIquMBqkqlVqnZeBZVO9Bxa0eIbcbqlarVHDPFN1jeM+a3EwD1Bj7EV6hcpvLvflmZ4M7ziM38+A+AhixIbUrcj9UgrpOqETVl7OQjYB9hvdzpfbqT8Ocyz6zTQUmLo44BhUWeeL5X3eMfiAam/zpLTcr1kYO/rPH50wV4IVHE1w5/6DaTYKBkgm09xXkIuKvLfPwrlQ+4Bm X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(179259710895377); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001); SRVR:MWHPR03MB2703; BCL:0; PCL:0; RULEID:; SRVR:MWHPR03MB2703; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2703; 4:pV77ccr4P+b+dkrhKPq3L91AH+s5jg70aFRxcKHfdI8eKEHJYxpIgPVIfNbCiw6TTEkkqb6nePs2OUKziV2JXGYk6e/cFxqqmKOaMPuNGowYyEDjh4ZzNDx3jALKRYyt3kyLPSws4TOBv9jKEDDVm6IChX8BUqZNxynVwxoORYE8VuRuxewR7iDKW+eVx3TWf87NDiQyfbLOeFFp1p+yjy5t8YL4QsNSj1CIoRqzw5ZAvkBWZ96DZ+iO9SdLwp/hHJmEzUgUG9+bt0LYAjTMceUnWM3Wtm4F44UB3qb0iyf8iGpV68S80DHveYVtC0roL3VCT29isu9bTTig/dYykHmj0PpcGXkpzin/aGqcpOesfsZQkADU1+i6ouq0/9pWlTQ24yyRoUuYzN+ojZb37LwyJ0I90+CXLfpvGZdo6wMFfEMWkwZovbCIotm8nr+G X-Forefront-PRVS: 0036736630 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6069001)(6009001)(7916002)(189002)(199003)(7736002)(101416001)(3846002)(189998001)(7846002)(110136002)(106356001)(42186005)(50986999)(6116002)(86362001)(586003)(450100001)(1076002)(33646002)(305945005)(66066001)(68736007)(2351001)(47776003)(77096005)(36756003)(89122001)(50226002)(81166006)(81156014)(8676002)(229853001)(105586002)(97736004)(48376002)(75432002)(50466002)(5003940100001)(19580405001)(19580395003)(4326007)(90282001)(88552002)(92566002)(2906002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR03MB2703; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: ou.edu does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR03MB2703; 23:4bB8R8hQHSkFZ9MY+6K/EPCcdySDG64nEkxcHwIll?= =?us-ascii?Q?Bb2DL2WQ1HFORI3re6ZshdRfP+o22tEWEDAIFHf9putM2mk5STR33lVaZcRE?= =?us-ascii?Q?zC23ijXYd00hAGd/GjnjTbrUiIMLP7NgJK9X+covtu4xwfc88gNNXLJEa/IF?= =?us-ascii?Q?WoxRpTmWMIW+DhPRsy2BptOA9vxcMDPHBZWtjWL5SwRRQ/FmnIUfjFdOSm2N?= =?us-ascii?Q?IBZRofMfOCRABtgdHPSs0VnoXJ2shQfVdZbEQqe1JFDv7lwVPlwFliJB6f4c?= =?us-ascii?Q?ewPsq6QAvbtP38LENGS2iI9lchPI0711q/4njdEzkIucDUzXssPTeWue8xpg?= =?us-ascii?Q?OfogEXDD0Y5IGINa6BXo1SgTUk129irQ0d/Q84QLk2rUo09g/BwjF3PKz5rb?= =?us-ascii?Q?bsqSH/0rpebRjGncZDnYokqK5dIFCOLa7H2GGo8xrStJu3sE5uSA81HwSr6U?= =?us-ascii?Q?H78ZuaA4Qc6THvt8KQAuFnkZiyTGEY7wWAVDN9Ik56qbn4G3ect1r+k5zr+r?= =?us-ascii?Q?gr8BVdR1LcVsB/RNKAf499aB9xxiWxMFysfGcUYHmnxX1af2+YjhG2NpviAZ?= =?us-ascii?Q?UasCCAz9XnxAptkZ6s5eCfK410iDoY7iugK71ahMq3ehb+Nvns2dccok7713?= =?us-ascii?Q?Jso/uvqPClJJmQNc4jyBixT6wvs8mPR16ZoJBTj6ATg64fSp7/3SSsmjEkgP?= =?us-ascii?Q?Mifhe4VMvKQPH2ylHtLFhJocjsZPsOSuzPQEUIMdr8nnCKcxp5XxpUaRK+0E?= =?us-ascii?Q?0MOkdoKdjo+5eZE1PCMsnQpvjbfPJnjs1eOUIqh+9r68h+Q841/9jFOgY/Ed?= =?us-ascii?Q?XOpoYGwhHCLnesuUqhWAoiMJMVKzwWrNQPdWah3Mv+tozcTqkumLJhSgu9fn?= =?us-ascii?Q?XTVeBTpnui+55Kx87eVOY7gwV+Ni13Q/MCfXJwPIRJhnYT45BqsmVkIzGm3c?= =?us-ascii?Q?SVgfwFzzGRzh272OQD+mgsVCvwF00i/EvjSUdCx8MDOBOdwr4Y7dxjvt0k8G?= =?us-ascii?Q?1zSikdg8D4vS1599aVj2CJPGSN8j/7QuX9e5lxyWmtYVRcY+jICqR8qS69jH?= =?us-ascii?Q?qdFxD8PLtYdPegCrfQw1soWy8FD9BWD1m6ehRFMQF51UJenFrG0XFM4olRiz?= =?us-ascii?Q?WrA0kxnu0UzZk15uR4GgIMAvnNRdlSx?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2703; 6:6z6xcjtMv8senzmyx8xah3qQtju7WrtKV8yL8kvG3ENabo1d8LsjhcklJ7Oh1nswDKKb6Hm8Dur7Ad48XvnUZ7IfK4/I0bEiIp6jYBN6wufsGyF1L5Too8k4sQS5O7svL2PkBjmPP/qAdxISbTPOhuVNPDRHRHULheaQiv4W8hgD9xW2j9HNE4pRAcW88+fH1+5zJJ9WINIVUxyD4m+uD6TRG/QpOkQPyzEzVG/Iyy7JZjhQjn51FfzQpRQXoy1p22+W7eFAFDFaBROnlSry+zulQS+OOT/1YVNmGn6sScY=; 5:WB1VurKa0nGaj107u5cwzTXlFeWEuTPHY9vUnig4QnS951s93t5EZ89IKl8n/zXYbpIhsQ7ev0fPbhudvRvB9ZBElIfRI/bEX5hHDH13OzLJJWJcsQ/HXkIqquiAIqGgbdmOLP8xW6bCc/LGpwxigA==; 24:31L/8Bkfsl8osdleVJVCYN5q6UotBv2IhwMrqnLiQlAItVKfQv4yMecaxu4zIyVSt1D7Z7eaKbIeZR8DxR+JjPXR01jJobkTTHF+eW0LYUc=; 7:mUz271IeyR5mIfcbSMoSfV6/Zn/TsBFvhYZLk/jnJkwarV67wzpg2WtRRPwozHGVoUvC9scqEaa351C+/CHZCAw3LvoPnkzFBvYsm2SpqC6qSfML8ksHZXUYKmWCYpUXKgXT12cLLvq1hwyp5UoGXe9Wb8nJKjnJ+tShVHKiUk7Pgs2IC2ZexnCvfcyj+JfpIUaE24g18o5szrJSlaPURrkJHEGogBSzIMMQX50jIU9jhaWWbxD1j2Mk3niV5LFC SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ou.edu X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Aug 2016 14:56:29.1289 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR03MB2703 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.36.137 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Aug 2016 15:11:03 -0000 Supports both EFI and NT Disk Signature for passing to kernel as root=PARTUUID=$val Signed-off-by: Steve Kenton --- This passed light testing here, giving correct results for both types compared to blkid grub-core/commands/probe.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/grub-core/commands/probe.c b/grub-core/commands/probe.c index cf2793e..0473d39 100644 --- a/grub-core/commands/probe.c +++ b/grub-core/commands/probe.c @@ -45,6 +45,7 @@ static const struct grub_arg_option options[] = {"fs", 'f', 0, N_("Determine filesystem type."), 0, 0}, {"fs-uuid", 'u', 0, N_("Determine filesystem UUID."), 0, 0}, {"label", 'l', 0, N_("Determine filesystem label."), 0, 0}, + {"partuuid", 'g', 0, N_("Determine partition UUID."), 0, 0}, /* 'g' for guid since 'u' was taken */ {0, 0, 0, 0, 0, 0} }; @@ -154,6 +155,58 @@ grub_cmd_probe (grub_extcmd_context_t ctxt, int argc, char **args) grub_device_close (dev); return GRUB_ERR_NONE; } + if (state[6].set) + { + char *partuuid = NULL; /* NULL to silence a spurious GCC warning */ + grub_uint8_t diskbuf[16]; + if (dev->disk && dev->disk->partition) + { + grub_partition_t p = dev->disk->partition; + if (!grub_strcmp (p->partmap->name, "msdos")) + { + const int diskid_offset = 440; /* location in MBR */ + dev->disk->partition = p->parent; + /* little-endian 4-byte NT disk signature */ + err = grub_disk_read (dev->disk, 0, diskid_offset, 4, diskbuf); + dev->disk->partition = p; + if (err) + return grub_errno; + partuuid = grub_xasprintf ("%02x%02x%02x%02x-%02x", + diskbuf[3], diskbuf[2], diskbuf[1], diskbuf[0], + p->number + 1); /* one based partition number */ + } + else if (!grub_strcmp (p->partmap->name, "gpt")) + { + const int guid_offset = 16; /* location in entry */ + dev->disk->partition = p->parent; + /* little-endian 16-byte EFI partition GUID */ + err = grub_disk_read (dev->disk, p->offset, p->index + guid_offset, 16, diskbuf); + dev->disk->partition = p; + if (err) + return grub_errno; + partuuid = grub_xasprintf ("%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + diskbuf[3], diskbuf[2], diskbuf[1], diskbuf[0], + diskbuf[5], diskbuf[4], + diskbuf[7], diskbuf[6], + diskbuf[8], diskbuf[9], + diskbuf[10], diskbuf[11], diskbuf[12], diskbuf[13], diskbuf[14], diskbuf[15]); + } + else + return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET, + N_("partition map %s does not support partition UUIDs"), + dev->disk->partition->partmap->name); + } + else + partuuid = grub_strdup (""); /* a freeable empty string */ + + if (state[0].set) + grub_env_set (state[0].arg, partuuid); + else + grub_printf ("%s", partuuid); + grub_free (partuuid); + grub_device_close (dev); + return GRUB_ERR_NONE; + } grub_device_close (dev); return grub_error (GRUB_ERR_BAD_ARGUMENT, "unrecognised target"); } -- 2.9.0.137.gcf4c2cf