Skip to content
This repository was archived by the owner on Feb 27, 2023. It is now read-only.

Commit 08fa9ff

Browse files
committed
Use partuuid in installed_os.json & Move partuuid functions
1 parent 5cf2ef4 commit 08fa9ff

File tree

4 files changed

+74
-62
lines changed

4 files changed

+74
-62
lines changed

recovery/multiimagewritethread.cpp

Lines changed: 7 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,13 @@ bool MultiImageWriteThread::processImage(OsInfo *image)
530530
QVariantList vpartitions;
531531
foreach (PartitionInfo *p, *partitions)
532532
{
533-
vpartitions.append(p->partitionDevice());
533+
QString part = p->partitionDevice();
534+
if (part.left(13) != "/dev/mmcblk0p")
535+
{
536+
part = getPartUUID(part);
537+
}
538+
vpartitions.append(part);
539+
534540
}
535541
QSettings settings("/settings/noobs.conf", QSettings::IniFormat);
536542
int videomode = settings.value("display_mode", 0).toInt();
@@ -1009,31 +1015,6 @@ void MultiImageWriteThread::patchConfigTxt()
10091015

10101016
}
10111017

1012-
QByteArray MultiImageWriteThread::getLabel(const QString part)
1013-
{
1014-
QByteArray result;
1015-
QProcess p;
1016-
p.start("/sbin/blkid -s LABEL -o value "+part);
1017-
p.waitForFinished();
1018-
1019-
if (p.exitCode() == 0)
1020-
result = p.readAll().trimmed();
1021-
1022-
return result;
1023-
}
1024-
1025-
QByteArray MultiImageWriteThread::getUUID(const QString part)
1026-
{
1027-
QByteArray result;
1028-
QProcess p;
1029-
p.start("/sbin/blkid -s UUID -o value "+part);
1030-
p.waitForFinished();
1031-
1032-
if (p.exitCode() == 0)
1033-
result = p.readAll().trimmed();
1034-
1035-
return result;
1036-
}
10371018

10381019
QString MultiImageWriteThread::getDescription(const QString &folder, const QString &flavour)
10391020
{
@@ -1065,35 +1046,3 @@ bool MultiImageWriteThread::isURL(const QString &s)
10651046
return s.startsWith("http:") || s.startsWith("https:");
10661047
}
10671048

1068-
QByteArray MultiImageWriteThread::getDiskId(const QString &device)
1069-
{
1070-
mbr_table mbr;
1071-
1072-
QFile f(device);
1073-
f.open(f.ReadOnly);
1074-
f.read((char *) &mbr, sizeof(mbr));
1075-
f.close();
1076-
1077-
quint32 diskid = qFromLittleEndian<quint32>(mbr.diskid);
1078-
return QByteArray::number(diskid, 16).rightJustified(8, '0');;
1079-
}
1080-
1081-
QByteArray MultiImageWriteThread::getPartUUID(const QString &devpart)
1082-
{
1083-
QByteArray r;
1084-
1085-
QRegExp partnrRx("([0-9]+)$");
1086-
if (partnrRx.indexIn(devpart) != -1)
1087-
{
1088-
QString drive = devpart.left(partnrRx.pos());
1089-
if (drive.endsWith("p"))
1090-
drive.chop(1);
1091-
1092-
r = "PARTUUID="+getDiskId(drive);
1093-
int partnr = partnrRx.cap(1).toInt();
1094-
QByteArray partnrstr = QByteArray::number(partnr, 16).rightJustified(2, '0');
1095-
r += '-'+partnrstr;
1096-
}
1097-
1098-
return r;
1099-
}

recovery/multiimagewritethread.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,10 @@ class MultiImageWriteThread : public QThread
2727
bool partclone_restore(const QString &imagePath, const QString &device);
2828
bool untar(const QString &tarball);
2929
bool isLabelAvailable(const QByteArray &label);
30-
QByteArray getLabel(const QString part);
31-
QByteArray getUUID(const QString part);
3230
void patchConfigTxt();
3331
QString getDescription(const QString &folder, const QString &flavour);
3432
bool writePartitionTable(const QString &drive, const QMap<int, PartitionInfo *> &partitionMap);
3533
bool isURL(const QString &s);
36-
QByteArray getDiskId(const QString &device);
37-
QByteArray getPartUUID(const QString &devpart);
3834

3935

4036
/* key: folder, value: flavour */

recovery/util.cpp

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "util.h"
2+
#include "mbr.h"
23
#include <sys/ioctl.h>
34
#include <stdint.h>
45
#include <unistd.h>
@@ -10,6 +11,7 @@
1011
#include <QProcess>
1112
#include <QDebug>
1213
#include <QList>
14+
#include <QtEndian>
1315

1416
/*
1517
* Convenience functions
@@ -173,3 +175,62 @@ QByteArray sysclassblock(const QString &drivedev, int partnr)
173175

174176
return "/sys/class/block/"+ b;
175177
}
178+
179+
QByteArray getLabel(const QString part)
180+
{
181+
QByteArray result;
182+
QProcess p;
183+
p.start("/sbin/blkid -s LABEL -o value "+part);
184+
p.waitForFinished();
185+
186+
if (p.exitCode() == 0)
187+
result = p.readAll().trimmed();
188+
189+
return result;
190+
}
191+
192+
QByteArray getUUID(const QString part)
193+
{
194+
QByteArray result;
195+
QProcess p;
196+
p.start("/sbin/blkid -s UUID -o value "+part);
197+
p.waitForFinished();
198+
199+
if (p.exitCode() == 0)
200+
result = p.readAll().trimmed();
201+
202+
return result;
203+
}
204+
205+
QByteArray getDiskId(const QString &device)
206+
{
207+
mbr_table mbr;
208+
209+
QFile f(device);
210+
f.open(f.ReadOnly);
211+
f.read((char *) &mbr, sizeof(mbr));
212+
f.close();
213+
214+
quint32 diskid = qFromLittleEndian<quint32>(mbr.diskid);
215+
return QByteArray::number(diskid, 16).rightJustified(8, '0');;
216+
}
217+
218+
QByteArray getPartUUID(const QString &devpart)
219+
{
220+
QByteArray r;
221+
222+
QRegExp partnrRx("([0-9]+)$");
223+
if (partnrRx.indexIn(devpart) != -1)
224+
{
225+
QString drive = devpart.left(partnrRx.pos());
226+
if (drive.endsWith("p"))
227+
drive.chop(1);
228+
229+
r = "PARTUUID="+getDiskId(drive);
230+
int partnr = partnrRx.cap(1).toInt();
231+
QByteArray partnrstr = QByteArray::number(partnr, 16).rightJustified(2, '0');
232+
r += '-'+partnrstr;
233+
}
234+
235+
return r;
236+
}

recovery/util.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,10 @@ bool canBootOs(const QString& name, const QVariantMap& values);
2323
void setRebootPartition(QByteArray partition);
2424
QByteArray partdev(const QString &drivedev, int nr);
2525
QByteArray sysclassblock(const QString &drivedev, int partnr = -1);
26+
27+
QByteArray getLabel(const QString part);
28+
QByteArray getUUID(const QString part);
29+
QByteArray getDiskId(const QString &device);
30+
QByteArray getPartUUID(const QString &devpart);
31+
2632
#endif // UTIL_H

0 commit comments

Comments
 (0)