Skip to content

Commit 959cc29

Browse files
committed
feat: initial internal boot support
1 parent 412b357 commit 959cc29

11 files changed

Lines changed: 201 additions & 71 deletions

File tree

emhttp/plugins/dynamix/Boot.page

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Type="xmenu"
2+
Tabs="true"

emhttp/plugins/dynamix/BootMode.page

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Menu="Flash:999"
1+
Menu="Flash:4"
22
Title="Boot Mode"
33
Tag="edit"
44
---

emhttp/plugins/dynamix/CacheDevices.page

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,31 @@ function addPoolPopup() {
7676
});
7777
dialogStyle();
7878
}
79+
function addBootPoolPopup() {
80+
var popup = $('#dialogWindow');
81+
// Load popup with the template info
82+
popup.html($("#templatePopupBootPool").html());
83+
// Start Dialog section
84+
popup.dialog({
85+
title: "_(Add Bootable Pool)_",
86+
height: 'auto',
87+
width: 600,
88+
resizable: false,
89+
modal: true,
90+
buttons: {
91+
"_(Add)_": function() {
92+
if (validate($(this).find('input[name="poolName"]').val())) {
93+
$(this).find('form').submit();
94+
$(this).dialog('close');
95+
}
96+
},
97+
"_(Cancel)_": function() {
98+
$(this).dialog('close');
99+
}
100+
}
101+
});
102+
dialogStyle();
103+
}
79104
function removeOption(inputString,value) {
80105
// Define a regular expression to match <option>...</option> substrings
81106
const optionPattern = /<option .*?<\/option>/g;
@@ -190,6 +215,9 @@ $root = explode($_tilde_,$pool)[0];
190215

191216
<?if (_var($var,'fsState')=="Stopped"):?>
192217
<input type="button" value="_(Add Pool)_" style="margin:0" onclick="addPoolPopup()">
218+
<?if (_var($var,'bootEligible')=="yes"):?>
219+
<input type="button" value="_(Add Bootable Pool)_" style="margin:0" onclick="addBootPoolPopup()">
220+
<?endif;?>
193221

194222
<div id="templatePopupPool" class="template">
195223
<form markdown="1" method="POST" action="/update.htm" target="progressFrame" onsubmit="return validate(this.poolName.value)">
@@ -198,13 +226,34 @@ $root = explode($_tilde_,$pool)[0];
198226
_(Name)_:
199227
: <input type="text" name="poolName" maxlength="40" value="<?=count($pools)==0?'cache':''?>">
200228

229+
_(Slots)_:
230+
: <select name="poolSlots">
231+
<?for ($n=1; $n<=2; $n++):?>
232+
<?=mk_option(1,$n,$n)?>
233+
<?endfor;?>
234+
</select>
235+
236+
</form>
237+
</div>
238+
239+
<div id="templatePopupBootPool" class="template">
240+
<form markdown="1" method="POST" action="/update.htm" target="progressFrame" onsubmit="return validate(this.poolName.value)">
241+
<input type="hidden" name="poolBootable" value="yes">
242+
<input type="hidden" name="changeSlots" value="apply">
243+
244+
_(Name)_:
245+
: <input type="text" name="poolName" maxlength="40" value="<?=count($pools)==0?'cache':''?>">
246+
201247
_(Slots)_:
202248
: <select name="poolSlots">
203249
<?for ($n=1; $n<=_var($var,'MAX_CACHESZ',0); $n++):?>
204250
<?=mk_option(1,$n,$n)?>
205251
<?endfor;?>
206252
</select>
207253

254+
_(Boot reserved size)_ (_(MiB)_):
255+
: <input type="number" name="poolBootSize" maxlength="10" value="<?=_var($var,'bootSizeDefault')?>" class="narrow">
256+
208257
</form>
209258
</div>
210259

emhttp/plugins/dynamix/DeviceInfo.page

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Menu="Device:1"
1+
Menu="Device:1 Boot:1"
22
Title="$name _(Settings)_"
33
Tag="hdd-o"
44
Cond="array_key_exists($name, $disks) || array_key_exists($name, $devs)"
@@ -38,7 +38,10 @@ function hasSubpools($name)
3838
}
3939
return false;
4040
}
41-
if (!isSubpool($name)) {
41+
if (_var($disk,'type')== "Boot") {
42+
$fsTypeImmutable = true;
43+
$fsProfileImmutable = true;
44+
} elseif (!isSubpool($name)) {
4245
$fsTypeImmutable = !(_var($var, 'fsState') == 'Stopped' && !hasSubpools($name) && (empty(_var($disk, 'uuid')) || _var($disk, 'slots', 1) == 1));
4346
$fsProfileImmutable = $fsTypeImmutable;
4447
} else {
@@ -835,12 +838,19 @@ _(Identification)_:
835838

836839
<?endif;?>
837840
<?if (!$unassigned):?>
838-
<?if (diskType('Data') || (diskType('Cache') && isPool($name) && !isSubpool($name))):?>
841+
<?if (isset($disk['fsType'])):?>
842+
<?if (diskType('Boot')):?>
843+
_(Comments)_:
844+
845+
: <?=htmlspecialchars(_var($disk, 'comment'))?>
846+
847+
<?else:?>
839848
_(Comments)_:
840849
: <input type="text" name="diskComment.<?=_var($disk, 'idx', 0)?>" maxlength="256" value="<?=htmlspecialchars(_var($disk, 'comment'))?>">
841850

842851
:info_comments_help:
843852

853+
<?endif;?>
844854
<?endif;?>
845855
_(Partition size)_:
846856
: <?=my_number(_var($disk, 'size', 0))?> KB (K=1024)
@@ -874,7 +884,7 @@ _(Spin down delay)_:
874884
</select><span id="smart_selftest" class='orange-text'></span>
875885

876886
<?endif;?>
877-
<?if (diskType('Data') || (isPool($tag) && !isSubpool($tag))):?>
887+
<?if (isset($disk['fsType'])):?>
878888
_(File system status)_:
879889
: <?=_(_var($disk, 'fsStatus'))?><?=(_var($disk,'fsStatus')==="Mounted")? (_var($disk,'fsEmpty')==="yes"? ", empty" : ", not empty"):""?>&nbsp;
880890

@@ -940,6 +950,17 @@ _(Autotrim)_:
940950

941951
:info_autotrim_help:
942952
</div>
953+
<?endif;?>
954+
<?if (diskType('Boot') && isset($disk['fsType'])):?>
955+
_(Allocation profile)_:
956+
: <?=_(_var($disk, 'fsProfile'))?>&nbsp;
957+
958+
_(Compression)_:
959+
: <?=_(_var($disk, 'compression'))?>&nbsp;
960+
961+
_(Autotrim)_:
962+
: <?=_(_var($disk, 'autotrim'))?>&nbsp;
963+
943964
<?endif;?>
944965
<?if (isPool($tag) && !isSubpool($tag)):?>
945966
_(Enable user share assignment)_:
@@ -957,7 +978,7 @@ _(Minimum free space)_:
957978
:info_free_space_help:
958979

959980
<?endif;?>
960-
<?if (diskType('Data') || (isPool($tag) && !isSubpool($tag))):?>
981+
<?if (isset($disk['fsType'])):?>
961982
_(Warning disk utilization threshold)_ (%):
962983
: <input type="number" min="0" max="100" name="diskWarning.<?=_var($disk, 'idx', 0)?>" autocomplete="off" spellcheck="false" value="<?=_var($disk, 'warning')?>" placeholder="<?=_var($display, 'warning')?>">
963984

@@ -999,11 +1020,11 @@ _(Critical disk utilization threshold)_ (%):
9991020
<form markdown="1" method="POST" action="/update.php" target="progressFrame">
10001021

10011022
_(pool device stats)_:
1002-
: <pre><?= htmlspecialchars(shell_exec("/sbin/btrfs dev stats -T ".escapeshellarg("/mnt/$tag")) ?? '', ENT_QUOTES, 'UTF-8') ?></pre>
1023+
: <pre><?= htmlspecialchars(shell_exec("/sbin/btrfs dev stats -T ".escapeshellarg(_var($disk,'fsMountpoint'))) ?? '', ENT_QUOTES, 'UTF-8') ?></pre>
10031024

10041025
<input type="hidden" name="#command" value="/webGui/scripts/btrfs_check">
10051026
<input type="hidden" name="#arg[1]" value="reset">
1006-
<input type="hidden" name="#arg[2]" value="/mnt/<?=$tag?>">
1027+
<input type="hidden" name="#arg[2]" value="<?=_var($disk,'fsMountpoint')?>">
10071028

10081029
&nbsp;
10091030
: <span class="buttons-spaced">
@@ -1017,13 +1038,13 @@ _(pool device stats)_:
10171038
<i class="title fa fa-balance-scale"></i>_(Balance Status)_
10181039
</span>
10191040
</div>
1020-
<form markdown="1" method="POST" action="/update.php" target="progressFrame" onsubmit="prepareFS(this,'btrfs-balance-<?=$tag?>','/mnt/<?=$tag?>')">
1041+
<form markdown="1" method="POST" action="/update.php" target="progressFrame" onsubmit="prepareFS(this,'btrfs-balance-<?=$tag?>','<?=_var($disk,'fsMountpoint')?>')">
10211042
<?if (_var($disk,'fsStatus')=="Mounted"):?>
1022-
<?exec("$docroot/webGui/scripts/btrfs_balance status ".escapeshellarg("/mnt/$tag"), $balance_status, $retval)?>
1023-
<?$usage = exec("/sbin/btrfs fi usage ".escapeshellarg("/mnt/$tag")." | grep -Pom1 '^Data,.+ \\(\\K[^%]+'");?>
1043+
<?exec("$docroot/webGui/scripts/btrfs_balance status ".escapeshellarg(_var($disk,'fsMountpoint')), $balance_status, $retval)?>
1044+
<?$usage = exec("/sbin/btrfs fi usage ".escapeshellarg(_var($disk,'fsMountpoint'))." | grep -Pom1 '^Data,.+ \\(\\K[^%]+'");?>
10241045

10251046
_(btrfs filesystem usage)_:
1026-
: <pre><?= htmlspecialchars(shell_exec("/sbin/btrfs fi usage -T ".escapeshellarg("/mnt/$tag")) ?? '', ENT_QUOTES, 'UTF-8') ?></pre>
1047+
: <pre><?= htmlspecialchars(shell_exec("/sbin/btrfs fi usage -T ".escapeshellarg(_var($disk,'fsMountpoint'))) ?? '', ENT_QUOTES, 'UTF-8') ?></pre>
10271048

10281049
<div>
10291050
<dl>
@@ -1034,7 +1055,7 @@ _(btrfs filesystem usage)_:
10341055
<?if ($retval != 0):?>
10351056
<input type="hidden" name="#command" value="/webGui/scripts/btrfs_balance">
10361057
<input type="hidden" name="#arg[1]" value="start">
1037-
<input type="hidden" name="#arg[2]" value="/mnt/<?=$tag?>">
1058+
<input type="hidden" name="#arg[2]" value="<?=_var($disk,'fsMountpoint')?>">
10381059
<input type="hidden" name="#arg[3]" value="">
10391060

10401061
&nbsp;
@@ -1069,7 +1090,7 @@ _(btrfs filesystem usage)_:
10691090
<?else:?>
10701091
<input type="hidden" name="#command" value="/webGui/scripts/btrfs_balance">
10711092
<input type="hidden" name="#arg[1]" value="cancel">
1072-
<input type="hidden" name="#arg[2]" value="/mnt/<?=$tag?>">
1093+
<input type="hidden" name="#arg[2]" value="<?=_var($disk,'fsMountpoint')?>">
10731094

10741095
&nbsp;
10751096
: <span>
@@ -1096,7 +1117,7 @@ _(btrfs filesystem usage)_:
10961117
<input type="hidden" name="#file" value="dynamix/dynamix.cfg">
10971118
<input type="hidden" name="#section" value="<?=$balance?>">
10981119
<input type="hidden" name="#include" value="/webGui/include/update.btrfs.php">
1099-
<input type="hidden" name="#job" value="balance_<?=$tag?>;<?=$docroot?>/plugins/dynamix/scripts/btrfs_balance start /mnt/<?=$tag?> -dusage=50">
1120+
<input type="hidden" name="#job" value="balance_<?=$tag?>;<?=$docroot?>/plugins/dynamix/scripts/btrfs_balance start <?=_var($disk,'fsMountpoint')?> -dusage=50">
11001121
<input type="hidden" name="hour" value="">
11011122

11021123
_(Balance schedule)_:
@@ -1162,17 +1183,17 @@ _(Block group usage)_ (%):
11621183
<i class="title fa fa-paint-brush"></i>_(Scrub Status)_
11631184
</span>
11641185
</div>
1165-
<form markdown="1" method="POST" action="/update.php" target="progressFrame" onsubmit="prepareFS(this,'btrfs-scrub-<?=$tag?>','/mnt/<?=$tag?>')">
1186+
<form markdown="1" method="POST" action="/update.php" target="progressFrame" onsubmit="prepareFS(this,'btrfs-scrub-<?=$tag?>','<?=_var($disk,'fsMountpoint')?>')">
11661187
<?if (_var($disk,'fsStatus')=="Mounted"):?>
1167-
<?exec("$docroot/webGui/scripts/btrfs_scrub status ".escapeshellarg("/mnt/$tag"), $scrub_status, $retval)?>
1188+
<?exec("$docroot/webGui/scripts/btrfs_scrub status ".escapeshellarg(_var($disk,'fsMountpoint')), $scrub_status, $retval)?>
11681189

11691190
_(btrfs scrub status)_:
11701191
: <pre id='btrfs-scrub'><?=implode("\n", $scrub_status)?></pre>
11711192

11721193
<?if ($retval != 0):?>
11731194
<input type="hidden" name="#command" value="/webGui/scripts/btrfs_scrub">
11741195
<input type="hidden" name="#arg[1]" value="start">
1175-
<input type="hidden" name="#arg[2]" value="/mnt/<?=$tag?>">
1196+
<input type="hidden" name="#arg[2]" value="<?=_var($disk,'fsMountpoint')?>">
11761197
<input type="hidden" name="#arg[3]" value="">
11771198

11781199
&nbsp;
@@ -1185,7 +1206,7 @@ _(btrfs scrub status)_:
11851206
<?else:?>
11861207
<input type="hidden" name="#command" value="/webGui/scripts/btrfs_scrub">
11871208
<input type="hidden" name="#arg[1]" value="cancel">
1188-
<input type="hidden" name="#arg[2]" value="/mnt/<?=$tag?>">
1209+
<input type="hidden" name="#arg[2]" value="<?=_var($disk,'fsMountpoint')?>">
11891210

11901211
&nbsp;
11911212
: <span class="buttons-spaced">
@@ -1212,7 +1233,7 @@ _(btrfs scrub status)_:
12121233
<input type="hidden" name="#file" value="dynamix/dynamix.cfg">
12131234
<input type="hidden" name="#section" value="<?=$scrub?>">
12141235
<input type="hidden" name="#include" value="/webGui/include/update.btrfs.php">
1215-
<input type="hidden" name="#job" value="scrub_<?=$tag?>;<?=$docroot?>/plugins/dynamix/scripts/btrfs_scrub start /mnt/<?=$tag?> -r">
1236+
<input type="hidden" name="#job" value="scrub_<?=$tag?>;<?=$docroot?>/plugins/dynamix/scripts/btrfs_scrub start <?=_var($disk,'fsMountpoint')?> -r">
12161237
<input type="hidden" name="hour" value="">
12171238

12181239
_(Scrub schedule)_:
@@ -1270,6 +1291,7 @@ _(Time of the day)_:
12701291
</span>
12711292
</form>
12721293

1294+
<?if (diskType('Data','Cache')):?>
12731295
<div class="title nocontrol">
12741296
<span class="left">
12751297
<i class="title fa fa-shield"></i>_(Check Filesystem Status)_
@@ -1323,6 +1345,7 @@ _(btrfs check status)_:
13231345
<?endif;?>
13241346
</form>
13251347
<?endif;?>
1348+
<?endif;?>
13261349
<?if (fsType('zfs') && !isSubpool($name)):?>
13271350
<div class="title nocontrol">
13281351
<span class="left">
@@ -1797,7 +1820,7 @@ _(check status)_:
17971820
</form>
17981821
<?endif;?>
17991822

1800-
<?if (!diskStatus('_NP')):?>
1823+
<?if (!diskType('Boot') && !diskStatus('_NP')):?>
18011824
<div class="title"><span class="left"><i class="title fa fa-plus-square"></i>_(SMART Settings)_</span></div>
18021825

18031826
<form markdown="1" name="smart_settings" method="POST" action="/update.php" target="progressFrame" onsubmit="prepareDeviceInfo(this)">
@@ -1966,15 +1989,15 @@ $(function() {
19661989
for (var i=0,busy; busy=action[i]; i++) {
19671990
switch (busy) {
19681991
case 'btrfs-balance':
1969-
$.cookie('btrfs-balance-<?=$tag?>','/mnt/<?=$tag?>');
1992+
$.cookie('btrfs-balance-<?=$tag?>','<?=_var($disk,'fsMountpoint')?>');
19701993
btrfsBalance($.cookie('btrfs-balance-<?=$tag?>'));
19711994
break;
19721995
case 'btrfs-scrub':
1973-
$.cookie('btrfs-scrub-<?=$tag?>','/mnt/<?=$tag?>');
1996+
$.cookie('btrfs-scrub-<?=$tag?>','<?=_var($disk,'fsMountpoint')?>');
19741997
btrfsScrub($.cookie('btrfs-scrub-<?=$tag?>'));
19751998
break;
19761999
case 'btrfs-check':
1977-
$.cookie('btrfs-check-<?=$tag?>','/mnt/<?=$tag?>');
2000+
$.cookie('btrfs-check-<?=$tag?>','<?=_var($disk,'fsMountpoint')?>');
19782001
btrfsCheck($.cookie('btrfs-check-<?=$tag?>'));
19792002
break;
19802003
case 'zfs-scrub':

emhttp/plugins/dynamix/FlashInfo.page

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Menu="Flash"
1+
Menu="Flash:1"
22
Title="Flash Device Settings"
33
Tag="usb"
44
---

emhttp/plugins/dynamix/Grub.page

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
Menu="Flash"
1+
Menu="Flash:3 Boot:3"
22
Title="GRUB configuration"
33
Tag="edit"
4-
Cond="file_exists('/boot/grub/grub.cfg')"
4+
Cond="file_exists('/boot/grub/grub.cfg') && ($name == 'flash')"
55
---
66
<?PHP
77
/* Copyright 2005-2023, Lime Technology

emhttp/plugins/dynamix/SecuritySMB.page

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Menu="Disk Share Flash"
1+
Menu="Disk Share Flash:2 Boot:2"
22
Title="SMB Security Settings"
33
Tag="windows"
44
Cond="(($var['shareSMBEnabled']!='no') && (isset($name)?array_key_exists($name,$sec)&&($shares[$name]['hasCfg']??false)!='similar':0))"

emhttp/plugins/dynamix/Syslinux.page

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Menu="Flash"
1+
Menu="Flash:3"
22
Title="Syslinux Configuration"
33
Tag="edit"
44
Cond="file_exists('/boot/syslinux/syslinux.cfg')"

0 commit comments

Comments
 (0)