Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
dadigang
Ventoy
Commits
34a36bfc
Commit
34a36bfc
authored
Feb 06, 2022
by
longpanda
Browse files
Fix the issue when booting the latest recalbox img file. (#1423)
parent
82e99a3b
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
102 additions
and
3 deletions
+102
-3
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c
+12
-0
IMG/cpio/ventoy/hook/ventoy-hook-lib.sh
IMG/cpio/ventoy/hook/ventoy-hook-lib.sh
+8
-2
IMG/cpio/ventoy/loop/recalbox/ventoy-create-part.sh
IMG/cpio/ventoy/loop/recalbox/ventoy-create-part.sh
+45
-0
IMG/cpio/ventoy/loop/recalbox/ventoy-disk.sh
IMG/cpio/ventoy/loop/recalbox/ventoy-disk.sh
+5
-0
IMG/cpio/ventoy/loop/recalbox/ventoy-hook.sh
IMG/cpio/ventoy/loop/recalbox/ventoy-hook.sh
+2
-0
IMG/cpio/ventoy/loop/recalbox/ventoy-share.sh
IMG/cpio/ventoy/loop/recalbox/ventoy-share.sh
+15
-0
INSTALL/grub/grub.cfg
INSTALL/grub/grub.cfg
+15
-1
No files found.
GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c
View file @
34a36bfc
...
@@ -124,6 +124,7 @@ static int g_list_script_pos = 0;
...
@@ -124,6 +124,7 @@ static int g_list_script_pos = 0;
static
char
*
g_part_list_buf
=
NULL
;
static
char
*
g_part_list_buf
=
NULL
;
static
int
g_part_list_pos
=
0
;
static
int
g_part_list_pos
=
0
;
static
grub_uint64_t
g_part_end_max
=
0
;
static
int
g_video_mode_max
=
0
;
static
int
g_video_mode_max
=
0
;
static
int
g_video_mode_num
=
0
;
static
int
g_video_mode_num
=
0
;
...
@@ -3646,6 +3647,7 @@ end:
...
@@ -3646,6 +3647,7 @@ end:
static
int
ventoy_img_partition_callback
(
struct
grub_disk
*
disk
,
const
grub_partition_t
partition
,
void
*
data
)
static
int
ventoy_img_partition_callback
(
struct
grub_disk
*
disk
,
const
grub_partition_t
partition
,
void
*
data
)
{
{
grub_uint64_t
end_max
=
0
;
int
*
pCnt
=
(
int
*
)
data
;
int
*
pCnt
=
(
int
*
)
data
;
(
void
)
disk
;
(
void
)
disk
;
...
@@ -3655,6 +3657,12 @@ static int ventoy_img_partition_callback (struct grub_disk *disk, const grub_par
...
@@ -3655,6 +3657,12 @@ static int ventoy_img_partition_callback (struct grub_disk *disk, const grub_par
"0 %llu linear /dev/ventoy %llu
\n
"
,
"0 %llu linear /dev/ventoy %llu
\n
"
,
(
ulonglong
)
partition
->
len
,
(
ulonglong
)
partition
->
start
);
(
ulonglong
)
partition
->
len
,
(
ulonglong
)
partition
->
start
);
end_max
=
(
partition
->
len
+
partition
->
start
)
*
512
;
if
(
end_max
>
g_part_end_max
)
{
g_part_end_max
=
end_max
;
}
return
0
;
return
0
;
}
}
...
@@ -3668,6 +3676,7 @@ static grub_err_t ventoy_cmd_img_part_info(grub_extcmd_context_t ctxt, int argc,
...
@@ -3668,6 +3676,7 @@ static grub_err_t ventoy_cmd_img_part_info(grub_extcmd_context_t ctxt, int argc,
(
void
)
ctxt
;
(
void
)
ctxt
;
g_part_list_pos
=
0
;
g_part_list_pos
=
0
;
g_part_end_max
=
0
;
grub_env_unset
(
"vtoy_img_part_file"
);
grub_env_unset
(
"vtoy_img_part_file"
);
if
(
argc
!=
1
)
if
(
argc
!=
1
)
...
@@ -3697,6 +3706,9 @@ static grub_err_t ventoy_cmd_img_part_info(grub_extcmd_context_t ctxt, int argc,
...
@@ -3697,6 +3706,9 @@ static grub_err_t ventoy_cmd_img_part_info(grub_extcmd_context_t ctxt, int argc,
grub_snprintf
(
buf
,
sizeof
(
buf
),
"%d"
,
cnt
);
grub_snprintf
(
buf
,
sizeof
(
buf
),
"%d"
,
cnt
);
grub_env_set
(
"vtoy_img_part_cnt"
,
buf
);
grub_env_set
(
"vtoy_img_part_cnt"
,
buf
);
grub_snprintf
(
buf
,
sizeof
(
buf
),
"%llu"
,
(
ulonglong
)
g_part_end_max
);
grub_env_set
(
"vtoy_img_max_part_end"
,
buf
);
end:
end:
check_free
(
device_name
,
grub_free
);
check_free
(
device_name
,
grub_free
);
...
...
IMG/cpio/ventoy/hook/ventoy-hook-lib.sh
View file @
34a36bfc
...
@@ -312,7 +312,10 @@ ventoy_dm_patch() {
...
@@ -312,7 +312,10 @@ ventoy_dm_patch() {
vtKv
=
$(
$BUSYBOX_PATH
/uname
-r
)
vtKv
=
$(
$BUSYBOX_PATH
/uname
-r
)
if
[
-d
/lib/modules/
$vtKv
/kernel/fs
]
;
then
if
[
!
-d
/lib/modules/
$vtKv
]
;
then
vtlog
"No modules directory found"
return
elif
[
-d
/lib/modules/
$vtKv
/kernel/fs
]
;
then
vtModPath
=
$(
$FIND
/lib/modules/
$vtKv
/kernel/fs/
-name
"*.ko*"
|
$HEAD
-n1
)
vtModPath
=
$(
$FIND
/lib/modules/
$vtKv
/kernel/fs/
-name
"*.ko*"
|
$HEAD
-n1
)
else
else
vtModPath
=
$(
$FIND
/lib/modules/
$vtKv
/kernel/
-name
"xfs.ko*"
|
$HEAD
-n1
)
vtModPath
=
$(
$FIND
/lib/modules/
$vtKv
/kernel/
-name
"xfs.ko*"
|
$HEAD
-n1
)
...
@@ -326,7 +329,10 @@ ventoy_dm_patch() {
...
@@ -326,7 +329,10 @@ ventoy_dm_patch() {
vtlog
"template module is
$vtModPath
$vtModName
"
vtlog
"template module is
$vtModPath
$vtModName
"
if
echo
$vtModPath
|
$GREP
-q
"[.]ko$"
;
then
if
[
-z
"
$vtModPath
"
]
;
then
vtlog
"No template module found"
return
elif
echo
$vtModPath
|
$GREP
-q
"[.]ko$"
;
then
$BUSYBOX_PATH
/cp
-a
$vtModPath
$VTOY_PATH
/
$vtModName
$BUSYBOX_PATH
/cp
-a
$vtModPath
$VTOY_PATH
/
$vtModName
elif
echo
$vtModPath
|
$GREP
-q
"[.]ko[.]xz$"
;
then
elif
echo
$vtModPath
|
$GREP
-q
"[.]ko[.]xz$"
;
then
$BUSYBOX_PATH
/xzcat
$vtModPath
>
$VTOY_PATH
/
$vtModName
$BUSYBOX_PATH
/xzcat
$vtModPath
>
$VTOY_PATH
/
$vtModName
...
...
IMG/cpio/ventoy/loop/recalbox/ventoy-create-part.sh
0 → 100644
View file @
34a36bfc
#!/ventoy/busybox/sh
#************************************************************************************
# Copyright (c) 2020, longpanda <admin@ventoy.net>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
#************************************************************************************
.
/ventoy/hook/ventoy-hook-lib.sh
VTPATH_OLD
=
$PATH
;
PATH
=
$BUSYBOX_PATH
:
$VTOY_PATH
/tool:
$PATH
if
[
-f
/vtoy_dm_table
]
;
then
vtPartCnt
=
$(
cat
/vtoy_dm_table |
wc
-l
)
if
[
$vtPartCnt
-ne
1
]
;
then
exit
0
fi
else
exit
0
fi
vtlog
"try patch init script"
if
[
-f
/new_root/etc/init.d/S11share
]
;
then
cp
-a
/new_root/etc/init.d/S11share /new_root/overlay/S11share
sed
"/^ *createMissingPartitions *
$/
r
$VTOY_PATH
/loop/recalbox/ventoy-share.sh"
-i
/new_root/overlay/S11share
vtFile
=
$(
ls
-1
/new_root/etc/init.d/ |
grep
-m1
S01
)
mount
--bind
/new_root/overlay/S11share /new_root/etc/init.d/
$vtFile
vtlog
"patch S11share to
$vtFile
"
fi
PATH
=
$VTPATH_OLD
IMG/cpio/ventoy/loop/recalbox/ventoy-disk.sh
View file @
34a36bfc
...
@@ -36,10 +36,15 @@ if [ "$vtdiskname" = "unknown" ]; then
...
@@ -36,10 +36,15 @@ if [ "$vtdiskname" = "unknown" ]; then
exit
0
exit
0
fi
fi
if
[
-f
$VTOY_PATH
/modules/dm-mod.ko
]
;
then
insmod
$VTOY_PATH
/modules/dm-mod.ko
fi
ventoy_udev_disk_common_hook
"
${
vtdiskname
#/dev/
}
2"
"noreplace"
ventoy_udev_disk_common_hook
"
${
vtdiskname
#/dev/
}
2"
"noreplace"
ventoy_create_dev_ventoy_part
ventoy_create_dev_ventoy_part
PATH
=
$VTPATH_OLD
PATH
=
$VTPATH_OLD
set_ventoy_hook_finish
set_ventoy_hook_finish
IMG/cpio/ventoy/loop/recalbox/ventoy-hook.sh
View file @
34a36bfc
...
@@ -20,4 +20,6 @@
...
@@ -20,4 +20,6 @@
.
$VTOY_PATH
/hook/ventoy-os-lib.sh
.
$VTOY_PATH
/hook/ventoy-os-lib.sh
$SED
"/mount.*devtmpfs/a
\
$BUSYBOX_PATH
/sh
$VTOY_PATH
/loop/recalbox/ventoy-disk.sh"
-i
/init
$SED
"/mount.*devtmpfs/a
\
$BUSYBOX_PATH
/sh
$VTOY_PATH
/loop/recalbox/ventoy-disk.sh"
-i
/init
$SED
"/switch_root/i
\
$BUSYBOX_PATH
/sh
$VTOY_PATH
/loop/recalbox/ventoy-create-part.sh"
-i
/init
#$SED "/switch_root/i\ exec /ventoy/busybox/sh" -i /init
IMG/cpio/ventoy/loop/recalbox/ventoy-share.sh
0 → 100644
View file @
34a36bfc
echo
'#################################################'
>
/dev/console
echo
'#################################################'
>
/dev/console
echo
'### PLEASE REBOOT AND BOOT FROM VENTOY AGAIN ###'
>
/dev/console
echo
'#################################################'
>
/dev/console
echo
'#################################################'
>
/dev/console
echo
'#################################################'
>
/dev/tty0
echo
'#################################################'
>
/dev/tty0
echo
'### PLEASE REBOOT AND BOOT FROM VENTOY AGAIN ###'
>
/dev/tty0
echo
'#################################################'
>
/dev/tty0
echo
'#################################################'
>
/dev/tty0
sync
sleep
3600
INSTALL/grub/grub.cfg
View file @
34a36bfc
...
@@ -1688,9 +1688,23 @@ function ventoy_img_ubos {
...
@@ -1688,9 +1688,23 @@ function ventoy_img_ubos {
}
}
function ventoy_img_recalbox {
function ventoy_img_recalbox {
if [ $vtoy_img_max_part_end -gt $vt_chosen_size ]; then
echo -e "\nPlease extend the img file size before boot it. \n"
ventoy_pause
return
fi
vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
vt_load_cpio $vtoy_path "${vt_chosen_path}" ${vtoy_iso_part} "busybox=$ventoy_busybox_ver"
vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit
vt_trailer_cpio ${vtoy_iso_part} "${vt_chosen_path}" noinit
if [ -e (vtimghd,1)/boot/recalbox ]; then
loopback recalbox (vtimghd,1)/boot/recalbox
vt_get_lib_module_ver (recalbox) /lib/modules/ vt_module_ver
if [ -n "$vt_module_ver" ]; then
vt_img_extra_initrd_append (recalbox)/lib/modules/$vt_module_ver/kernel/drivers/md/dm-mod.ko
fi
fi
ventoy_debug_pause
ventoy_debug_pause
#boot image file
#boot image file
...
@@ -1971,7 +1985,7 @@ function img_common_menuentry {
...
@@ -1971,7 +1985,7 @@ function img_common_menuentry {
ventoy_img_batocera
ventoy_img_batocera
elif vt_str_begin "$vtImgHd1Label" "Tails"; then
elif vt_str_begin "$vtImgHd1Label" "Tails"; then
ventoy_img_tails
ventoy_img_tails
elif [ "$vtImgHd2Label" = "RECALBOX" ]; then
elif [ "$vtImgHd2Label" = "RECALBOX"
-o "$vtImgHd1Label" = "RECALBOX"
]; then
ventoy_img_recalbox
ventoy_img_recalbox
elif [ "$vtImgHd1Label" = "ESYSRESCUE" ]; then
elif [ "$vtImgHd1Label" = "ESYSRESCUE" ]; then
ventoy_img_esysrescue
ventoy_img_esysrescue
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment