Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
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
Hide 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
;
...
@@ -3654,6 +3656,12 @@ static int ventoy_img_partition_callback (struct grub_disk *disk, const grub_par
...
@@ -3654,6 +3656,12 @@ static int ventoy_img_partition_callback (struct grub_disk *disk, const grub_par
g_part_list_pos
+=
grub_snprintf
(
g_part_list_buf
+
g_part_list_pos
,
VTOY_MAX_SCRIPT_BUF
-
g_part_list_pos
,
g_part_list_pos
+=
grub_snprintf
(
g_part_list_buf
+
g_part_list_pos
,
VTOY_MAX_SCRIPT_BUF
-
g_part_list_pos
,
"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
)
...
@@ -3696,6 +3705,9 @@ static grub_err_t ventoy_cmd_img_part_info(grub_extcmd_context_t ctxt, int argc,
...
@@ -3696,6 +3705,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:
...
...
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