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
d0edcc0e
Commit
d0edcc0e
authored
May 09, 2020
by
longpanda
Browse files
1.0.09 release
parent
c84c0722
Changes
36
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
658 additions
and
27 deletions
+658
-27
GRUB2/grub-2.04/grub-core/ventoy/ventoy.c
GRUB2/grub-2.04/grub-core/ventoy/ventoy.c
+53
-5
GRUB2/grub-2.04/grub-core/ventoy/ventoy_def.h
GRUB2/grub-2.04/grub-core/ventoy/ventoy_def.h
+14
-1
GRUB2/grub-2.04/grub-core/ventoy/ventoy_linux.c
GRUB2/grub-2.04/grub-core/ventoy/ventoy_linux.c
+37
-4
GRUB2/grub-2.04/grub-core/ventoy/ventoy_plugin.c
GRUB2/grub-2.04/grub-core/ventoy/ventoy_plugin.c
+99
-1
GRUB2/grub-2.04/grub-core/ventoy/ventoy_windows.c
GRUB2/grub-2.04/grub-core/ventoy/ventoy_windows.c
+33
-4
GRUB2/grub-2.04/include/grub/ventoy.h
GRUB2/grub-2.04/include/grub/ventoy.h
+9
-0
IMG/cpio/ventoy/hook/arch/ventoy-disk.sh
IMG/cpio/ventoy/hook/arch/ventoy-disk.sh
+48
-0
IMG/cpio/ventoy/hook/arch/ventoy-hook.sh
IMG/cpio/ventoy/hook/arch/ventoy-hook.sh
+15
-10
IMG/cpio/ventoy/hook/debian/default-hook.sh
IMG/cpio/ventoy/hook/debian/default-hook.sh
+18
-0
IMG/cpio/ventoy/hook/gobo/ventoy-hook.sh
IMG/cpio/ventoy/hook/gobo/ventoy-hook.sh
+26
-0
IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-hook.sh
IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-hook.sh
+47
-0
IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-start.sh
IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-start.sh
+31
-0
IMG/cpio/ventoy/hook/guix/ventoy-disk.sh
IMG/cpio/ventoy/hook/guix/ventoy-disk.sh
+42
-0
IMG/cpio/ventoy/hook/guix/ventoy-hook.sh
IMG/cpio/ventoy/hook/guix/ventoy-hook.sh
+25
-0
IMG/cpio/ventoy/hook/guix/ventoy-waitdev.sh
IMG/cpio/ventoy/hook/guix/ventoy-waitdev.sh
+37
-0
IMG/cpio/ventoy/hook/nutyx/ventoy-disk.sh
IMG/cpio/ventoy/hook/nutyx/ventoy-disk.sh
+50
-0
IMG/cpio/ventoy/hook/nutyx/ventoy-hook.sh
IMG/cpio/ventoy/hook/nutyx/ventoy-hook.sh
+22
-0
IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh
IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh
+17
-2
IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh
IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh
+3
-0
IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh
IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh
+32
-0
No files found.
GRUB2/grub-2.04/grub-core/ventoy/ventoy.c
View file @
d0edcc0e
...
...
@@ -1358,6 +1358,17 @@ static grub_err_t ventoy_cmd_dump_menu(grub_extcmd_context_t ctxt, int argc, cha
return
0
;
}
static
grub_err_t
ventoy_cmd_dump_auto_install
(
grub_extcmd_context_t
ctxt
,
int
argc
,
char
**
args
)
{
(
void
)
ctxt
;
(
void
)
argc
;
(
void
)
args
;
ventoy_plugin_dump_auto_install
();
return
0
;
}
static
grub_err_t
ventoy_cmd_check_mode
(
grub_extcmd_context_t
ctxt
,
int
argc
,
char
**
args
)
{
(
void
)
ctxt
;
...
...
@@ -1387,22 +1398,58 @@ static grub_err_t ventoy_cmd_check_mode(grub_extcmd_context_t ctxt, int argc, ch
static
grub_err_t
ventoy_cmd_dynamic_menu
(
grub_extcmd_context_t
ctxt
,
int
argc
,
char
**
args
)
{
static
int
configfile_mode
=
0
;
char
memfile
[
128
]
=
{
0
};
(
void
)
ctxt
;
(
void
)
argc
;
(
void
)
args
;
if
(
argc
==
0
)
/*
* args[0]: 0:normal 1:configfile
* args[1]: 0:list_buf 1:tree_buf
*/
if
(
argc
!=
2
)
{
debug
(
"Invlaid argc %d
\n
"
,
argc
);
return
0
;
}
if
(
args
[
0
][
0
]
==
'0'
)
{
grub_script_execute_sourcecode
(
g_list_script_buf
);
if
(
args
[
1
][
0
]
==
'0'
)
{
grub_script_execute_sourcecode
(
g_list_script_buf
);
}
else
{
grub_script_execute_sourcecode
(
g_tree_script_buf
);
}
}
else
{
g_ventoy_last_entry
=
-
1
;
grub_snprintf
(
memfile
,
sizeof
(
memfile
),
"configfile mem:0x%llx:size:%d"
,
(
ulonglong
)(
ulong
)
g_tree_script_buf
,
g_tree_script_pos
);
if
(
configfile_mode
)
{
debug
(
"Now already in F3 mode %d
\n
"
,
configfile_mode
);
return
0
;
}
if
(
args
[
1
][
0
]
==
'0'
)
{
grub_snprintf
(
memfile
,
sizeof
(
memfile
),
"configfile mem:0x%llx:size:%d"
,
(
ulonglong
)(
ulong
)
g_list_script_buf
,
g_list_script_pos
);
}
else
{
g_ventoy_last_entry
=
-
1
;
grub_snprintf
(
memfile
,
sizeof
(
memfile
),
"configfile mem:0x%llx:size:%d"
,
(
ulonglong
)(
ulong
)
g_tree_script_buf
,
g_tree_script_pos
);
}
configfile_mode
=
1
;
grub_script_execute_sourcecode
(
memfile
);
configfile_mode
=
0
;
}
return
0
;
...
...
@@ -1567,6 +1614,7 @@ static cmd_para ventoy_cmds[] =
{
"vt_dump_menu"
,
ventoy_cmd_dump_menu
,
0
,
NULL
,
""
,
""
,
NULL
},
{
"vt_dynamic_menu"
,
ventoy_cmd_dynamic_menu
,
0
,
NULL
,
""
,
""
,
NULL
},
{
"vt_check_mode"
,
ventoy_cmd_check_mode
,
0
,
NULL
,
""
,
""
,
NULL
},
{
"vt_dump_auto_install"
,
ventoy_cmd_dump_auto_install
,
0
,
NULL
,
""
,
""
,
NULL
},
{
"vt_is_udf"
,
ventoy_cmd_is_udf
,
0
,
NULL
,
""
,
""
,
NULL
},
{
"vt_file_size"
,
ventoy_cmd_file_size
,
0
,
NULL
,
""
,
""
,
NULL
},
...
...
GRUB2/grub-2.04/grub-core/ventoy/ventoy_def.h
View file @
d0edcc0e
...
...
@@ -418,7 +418,7 @@ grub_err_t ventoy_cmd_linux_locate_initrd(grub_extcmd_context_t ctxt, int argc,
grub_err_t
ventoy_cmd_initrd_count
(
grub_extcmd_context_t
ctxt
,
int
argc
,
char
**
args
);
grub_err_t
ventoy_cmd_valid_initrd_count
(
grub_extcmd_context_t
ctxt
,
int
argc
,
char
**
args
);
grub_err_t
ventoy_cmd_load_cpio
(
grub_extcmd_context_t
ctxt
,
int
argc
,
char
**
args
);
int
ventoy_cpio_newc_fill_head
(
void
*
buf
,
int
filesize
,
void
*
filedata
,
const
char
*
name
);
int
ventoy_cpio_newc_fill_head
(
void
*
buf
,
int
filesize
,
const
void
*
filedata
,
const
char
*
name
);
grub_file_t
ventoy_grub_file_open
(
enum
grub_file_type
type
,
const
char
*
fmt
,
...);
int
ventoy_is_file_exist
(
const
char
*
fmt
,
...);
int
ventoy_fill_data
(
grub_uint32_t
buflen
,
char
*
buffer
);
...
...
@@ -550,6 +550,15 @@ typedef struct ventoy_mbr_head
}
ventoy_mbr_head
;
#pragma pack()
typedef
struct
install_template
{
char
isopath
[
256
];
char
templatepath
[
256
];
struct
install_template
*
next
;
}
install_template
;
extern
int
g_ventoy_last_entry
;
extern
int
g_ventoy_memdisk_mode
;
extern
int
g_ventoy_iso_raw
;
...
...
@@ -557,6 +566,10 @@ extern int g_ventoy_iso_uefi_drv;
int
ventoy_cmp_img
(
img_info
*
img1
,
img_info
*
img2
);
void
ventoy_swap_img
(
img_info
*
img1
,
img_info
*
img2
);
char
*
ventoy_plugin_get_install_template
(
const
char
*
isopath
);
void
ventoy_plugin_dump_auto_install
(
void
);
int
ventoy_fill_windows_rtdata
(
void
*
buf
,
char
*
isopath
);
#endif
/* __VENTOY_DEF_H__ */
GRUB2/grub-2.04/grub-core/ventoy/ventoy_linux.c
View file @
d0edcc0e
...
...
@@ -588,7 +588,7 @@ static void ventoy_cpio_newc_fill_int(grub_uint32_t value, char *buf, int buflen
}
}
int
ventoy_cpio_newc_fill_head
(
void
*
buf
,
int
filesize
,
void
*
filedata
,
const
char
*
name
)
int
ventoy_cpio_newc_fill_head
(
void
*
buf
,
int
filesize
,
const
void
*
filedata
,
const
char
*
name
)
{
int
namelen
=
0
;
int
headlen
=
0
;
...
...
@@ -852,18 +852,22 @@ grub_err_t ventoy_cmd_linux_locate_initrd(grub_extcmd_context_t ctxt, int argc,
grub_err_t
ventoy_cmd_load_cpio
(
grub_extcmd_context_t
ctxt
,
int
argc
,
char
**
args
)
{
grub_uint8_t
*
buf
;
char
*
template_file
=
NULL
;
char
*
template_buf
=
NULL
;
grub_uint8_t
*
buf
=
NULL
;
grub_uint32_t
mod
;
grub_uint32_t
headlen
;
grub_uint32_t
initrd_head_len
;
grub_uint32_t
padlen
;
grub_uint32_t
img_chunk_size
;
grub_uint32_t
template_size
=
0
;
grub_file_t
file
;
grub_file_t
scriptfile
;
(
void
)
ctxt
;
(
void
)
argc
;
if
(
argc
!=
1
)
if
(
argc
!=
3
)
{
return
grub_error
(
GRUB_ERR_BAD_ARGUMENT
,
"Usage: %s cpiofile
\n
"
,
cmd_raw_name
);
}
...
...
@@ -888,7 +892,30 @@ grub_err_t ventoy_cmd_load_cpio(grub_extcmd_context_t ctxt, int argc, char **arg
g_ventoy_cpio_size
=
0
;
}
g_ventoy_cpio_buf
=
grub_malloc
(
file
->
size
+
4096
+
img_chunk_size
);
template_file
=
ventoy_plugin_get_install_template
(
args
[
1
]);
if
(
template_file
)
{
debug
(
"auto install template: <%s>
\n
"
,
template_file
);
scriptfile
=
ventoy_grub_file_open
(
VENTOY_FILE_TYPE
,
"%s%s"
,
args
[
2
],
template_file
);
if
(
scriptfile
)
{
debug
(
"auto install script size %d
\n
"
,
(
int
)
scriptfile
->
size
);
template_size
=
scriptfile
->
size
;
template_buf
=
grub_malloc
(
template_size
);
if
(
template_buf
)
{
grub_file_read
(
scriptfile
,
template_buf
,
template_size
);
}
grub_file_close
(
scriptfile
);
}
else
{
debug
(
"Failed to open install script %s%s
\n
"
,
args
[
2
],
template_file
);
}
}
g_ventoy_cpio_buf
=
grub_malloc
(
file
->
size
+
4096
+
template_size
+
img_chunk_size
);
if
(
NULL
==
g_ventoy_cpio_buf
)
{
grub_file_close
(
file
);
...
...
@@ -910,6 +937,12 @@ grub_err_t ventoy_cmd_load_cpio(grub_extcmd_context_t ctxt, int argc, char **arg
headlen
=
ventoy_cpio_newc_fill_head
(
buf
,
img_chunk_size
,
g_img_chunk_list
.
chunk
,
"ventoy/ventoy_image_map"
);
buf
+=
headlen
+
ventoy_align
(
img_chunk_size
,
4
);
if
(
template_buf
)
{
headlen
=
ventoy_cpio_newc_fill_head
(
buf
,
template_size
,
template_buf
,
"ventoy/autoinstall"
);
buf
+=
headlen
+
ventoy_align
(
template_size
,
4
);
}
/* step2: insert os param to cpio */
headlen
=
ventoy_cpio_newc_fill_head
(
buf
,
0
,
NULL
,
"ventoy/ventoy_os_param"
);
padlen
=
sizeof
(
ventoy_os_param
);
...
...
GRUB2/grub-2.04/grub-core/ventoy/ventoy_plugin.c
View file @
d0edcc0e
...
...
@@ -38,6 +38,8 @@
GRUB_MOD_LICENSE
(
"GPLv3+"
);
static
install_template
*
g_install_template_head
=
NULL
;
static
int
ventoy_plugin_theme_entry
(
VTOY_JSON
*
json
,
const
char
*
isodisk
)
{
const
char
*
value
;
...
...
@@ -46,7 +48,15 @@ static int ventoy_plugin_theme_entry(VTOY_JSON *json, const char *isodisk)
value
=
vtoy_json_get_string_ex
(
json
->
pstChild
,
"file"
);
if
(
value
)
{
grub_snprintf
(
filepath
,
sizeof
(
filepath
),
"%s/ventoy/%s"
,
isodisk
,
value
);
if
(
value
[
0
]
==
'/'
)
{
grub_snprintf
(
filepath
,
sizeof
(
filepath
),
"%s%s"
,
isodisk
,
value
);
}
else
{
grub_snprintf
(
filepath
,
sizeof
(
filepath
),
"%s/ventoy/%s"
,
isodisk
,
value
);
}
if
(
ventoy_is_file_exist
(
filepath
)
==
0
)
{
debug
(
"Theme file %s does not exist
\n
"
,
filepath
);
...
...
@@ -67,9 +77,67 @@ static int ventoy_plugin_theme_entry(VTOY_JSON *json, const char *isodisk)
return
0
;
}
static
int
ventoy_plugin_auto_install_entry
(
VTOY_JSON
*
json
,
const
char
*
isodisk
)
{
const
char
*
iso
=
NULL
;
const
char
*
script
=
NULL
;
VTOY_JSON
*
pNode
=
NULL
;
install_template
*
node
=
NULL
;
install_template
*
next
=
NULL
;
(
void
)
isodisk
;
if
(
json
->
enDataType
!=
JSON_TYPE_ARRAY
)
{
debug
(
"Not array %d
\n
"
,
json
->
enDataType
);
return
0
;
}
if
(
g_install_template_head
)
{
for
(
node
=
g_install_template_head
;
node
;
node
=
next
)
{
next
=
node
->
next
;
grub_free
(
node
);
}
g_install_template_head
=
NULL
;
}
for
(
pNode
=
json
->
pstChild
;
pNode
;
pNode
=
pNode
->
pstNext
)
{
iso
=
vtoy_json_get_string_ex
(
pNode
->
pstChild
,
"image"
);
if
(
iso
&&
iso
[
0
]
==
'/'
)
{
script
=
vtoy_json_get_string_ex
(
pNode
->
pstChild
,
"template"
);
if
(
script
&&
script
[
0
]
==
'/'
)
{
node
=
grub_zalloc
(
sizeof
(
install_template
));
if
(
node
)
{
grub_snprintf
(
node
->
isopath
,
sizeof
(
node
->
isopath
),
"%s"
,
iso
);
grub_snprintf
(
node
->
templatepath
,
sizeof
(
node
->
templatepath
),
"%s"
,
script
);
if
(
g_install_template_head
)
{
node
->
next
=
g_install_template_head
;
}
g_install_template_head
=
node
;
}
}
}
}
return
0
;
}
static
plugin_entry
g_plugin_entries
[]
=
{
{
"theme"
,
ventoy_plugin_theme_entry
},
{
"auto_install"
,
ventoy_plugin_auto_install_entry
},
};
static
int
ventoy_parse_plugin_config
(
VTOY_JSON
*
json
,
const
char
*
isodisk
)
...
...
@@ -149,3 +217,33 @@ grub_err_t ventoy_cmd_load_plugin(grub_extcmd_context_t ctxt, int argc, char **a
VENTOY_CMD_RETURN
(
GRUB_ERR_NONE
);
}
void
ventoy_plugin_dump_auto_install
(
void
)
{
install_template
*
node
=
NULL
;
for
(
node
=
g_install_template_head
;
node
;
node
=
node
->
next
)
{
grub_printf
(
"IMAGE:<%s>
\n
"
,
node
->
isopath
);
grub_printf
(
"SCRIPT:<%s>
\n\n
"
,
node
->
templatepath
);
}
return
;
}
char
*
ventoy_plugin_get_install_template
(
const
char
*
isopath
)
{
install_template
*
node
=
NULL
;
for
(
node
=
g_install_template_head
;
node
;
node
=
node
->
next
)
{
if
(
grub_strcmp
(
node
->
isopath
,
isopath
)
==
0
)
{
return
node
->
templatepath
;
}
}
return
NULL
;
}
GRUB2/grub-2.04/grub-core/ventoy/ventoy_windows.c
View file @
d0edcc0e
...
...
@@ -440,14 +440,14 @@ static int ventoy_cat_exe_file_data(grub_uint32_t exe_len, grub_uint8_t *exe_dat
jump_align
=
ventoy_align
(
jump_len
,
16
);
g_wim_data
.
jump_exe_len
=
jump_len
;
g_wim_data
.
bin_raw_len
=
jump_align
+
sizeof
(
ventoy_os_param
)
+
exe_len
;
g_wim_data
.
bin_raw_len
=
jump_align
+
sizeof
(
ventoy_os_param
)
+
sizeof
(
ventoy_windows_data
)
+
exe_len
;
g_wim_data
.
bin_align_len
=
ventoy_align
(
g_wim_data
.
bin_raw_len
,
2048
);
g_wim_data
.
jump_bin_data
=
grub_malloc
(
g_wim_data
.
bin_align_len
);
if
(
g_wim_data
.
jump_bin_data
)
{
grub_memcpy
(
g_wim_data
.
jump_bin_data
,
jump_data
,
jump_len
);
grub_memcpy
(
g_wim_data
.
jump_bin_data
+
jump_align
+
sizeof
(
ventoy_os_param
),
exe_data
,
exe_len
);
grub_memcpy
(
g_wim_data
.
jump_bin_data
+
jump_align
+
sizeof
(
ventoy_os_param
)
+
sizeof
(
ventoy_windows_data
)
,
exe_data
,
exe_len
);
}
debug
(
"jump_exe_len:%u bin_raw_len:%u bin_align_len:%u
\n
"
,
...
...
@@ -456,7 +456,35 @@ static int ventoy_cat_exe_file_data(grub_uint32_t exe_len, grub_uint8_t *exe_dat
return
0
;
}
static
int
ventoy_update_before_chain
(
ventoy_os_param
*
param
)
int
ventoy_fill_windows_rtdata
(
void
*
buf
,
char
*
isopath
)
{
char
*
pos
=
NULL
;
char
*
script
=
NULL
;
ventoy_windows_data
*
data
=
(
ventoy_windows_data
*
)
buf
;
grub_memset
(
data
,
0
,
sizeof
(
ventoy_windows_data
));
pos
=
grub_strstr
(
isopath
,
"/"
);
if
(
!
pos
)
{
return
1
;
}
script
=
ventoy_plugin_get_install_template
(
pos
);
if
(
script
)
{
debug
(
"auto install script <%s>
\n
"
,
script
);
grub_snprintf
(
data
->
auto_install_script
,
sizeof
(
data
->
auto_install_script
)
-
1
,
"%s"
,
script
);
}
else
{
debug
(
"auto install script not found %p
\n
"
,
pos
);
}
return
0
;
}
static
int
ventoy_update_before_chain
(
ventoy_os_param
*
param
,
char
*
isopath
)
{
grub_uint32_t
jump_align
=
0
;
wim_lookup_entry
*
meta_look
=
NULL
;
...
...
@@ -469,6 +497,7 @@ static int ventoy_update_before_chain(ventoy_os_param *param)
if
(
g_wim_data
.
jump_bin_data
)
{
grub_memcpy
(
g_wim_data
.
jump_bin_data
+
jump_align
,
param
,
sizeof
(
ventoy_os_param
));
ventoy_fill_windows_rtdata
(
g_wim_data
.
jump_bin_data
+
jump_align
+
sizeof
(
ventoy_os_param
),
isopath
);
}
grub_crypto_hash
(
GRUB_MD_SHA1
,
g_wim_data
.
bin_hash
.
sha1
,
g_wim_data
.
jump_bin_data
,
g_wim_data
.
bin_raw_len
);
...
...
@@ -878,7 +907,7 @@ grub_err_t ventoy_cmd_windows_chain_data(grub_extcmd_context_t ctxt, int argc, c
if
(
g_wim_data
.
jump_bin_data
&&
g_wim_data
.
new_meta_data
)
{
ventoy_update_before_chain
(
&
(
chain
->
os_param
));
ventoy_update_before_chain
(
&
(
chain
->
os_param
)
,
args
[
0
]
);
}
/* part 2: chain head */
...
...
GRUB2/grub-2.04/include/grub/ventoy.h
View file @
d0edcc0e
...
...
@@ -104,6 +104,15 @@ typedef struct ventoy_os_param
grub_uint8_t
reserved
[
31
];
}
ventoy_os_param
;
typedef
struct
ventoy_windows_data
{
char
auto_install_script
[
384
];
grub_uint8_t
reserved
[
128
];
}
ventoy_windows_data
;
#pragma pack()
// compile assert check : sizeof(ventoy_os_param) must be 512
...
...
IMG/cpio/ventoy/hook/arch/ventoy-disk.sh
0 → 100644
View file @
d0edcc0e
#!/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
vtlog
"#########
$0
$*
############"
if
is_ventoy_hook_finished
;
then
exit
0
fi
wait_for_usb_disk_ready
vtdiskname
=
$(
get_ventoy_disk_name
)
if
[
"
$vtdiskname
"
=
"unknown"
]
;
then
vtlog
"ventoy disk not found"
exit
0
fi
ventoy_udev_disk_common_hook
"
${
vtdiskname
#/dev/
}
2"
"noreplace"
if
[
-n
"
$1
"
]
;
then
blkdev_num
=
$(
$VTOY_PATH
/tool/dmsetup
ls
|
grep
ventoy |
sed
's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/'
)
vtDM
=
$(
ventoy_find_dm_id
${
blkdev_num
}
)
vtlog
"ln -s /dev/
$vtDM
$1
"
ln
-s
/dev/
$vtDM
"
$1
"
fi
# OK finish
set_ventoy_hook_finish
IMG/cpio/ventoy/hook/arch/ventoy-hook.sh
View file @
d0edcc0e
...
...
@@ -19,16 +19,21 @@
.
$VTOY_PATH
/hook/ventoy-os-lib.sh
# some archlinux initramfs doesn't contain device-mapper udev rules file
ARCH_UDEV_DIR
=
$(
ventoy_get_udev_conf_dir
)
if
[
-s
"
$ARCH_UDEV_DIR
/13-dm-disk.rules"
]
;
then
echo
'dm-disk rule exist'
>>
$VTLOG
if
$GREP
-q
'^"$mount_handler"'
/init
;
then
echo
'use mount_handler ...'
>>
$VTLOG
$SED
"/^
\"\$
mount_handler
\"
/i
\
$BUSYBOX_PATH
/sh
$VTOY_PATH
/hook/arch/ventoy-disk.sh
\"\$
archisodevice
\"
"
-i
/init
else
echo
'Copy dm-disk rule file'
>>
$VTLOG
$CAT
$VTOY_PATH
/hook/default/13-dm-disk.rules
>
"
$ARCH_UDEV_DIR
/13-dm-disk.rules"
fi
# some archlinux initramfs doesn't contain device-mapper udev rules file
ARCH_UDEV_DIR
=
$(
ventoy_get_udev_conf_dir
)
if
[
-s
"
$ARCH_UDEV_DIR
/13-dm-disk.rules"
]
;
then
echo
'dm-disk rule exist'
>>
$VTLOG
else
echo
'Copy dm-disk rule file'
>>
$VTLOG
$CAT
$VTOY_PATH
/hook/default/13-dm-disk.rules
>
"
$ARCH_UDEV_DIR
/13-dm-disk.rules"
fi
# use default proc
ventoy_systemd_udevd_work_around
# use default proc
ventoy_systemd_udevd_work_around
ventoy_add_udev_rule
"
$VTOY_PATH
/hook/default/udev_disk_hook.sh %k"
ventoy_add_udev_rule
"
$VTOY_PATH
/hook/default/udev_disk_hook.sh %k"
fi
IMG/cpio/ventoy/hook/debian/default-hook.sh
View file @
d0edcc0e
...
...
@@ -23,6 +23,12 @@ if [ -e /init ] && $GREP -q '^mountroot$' /init; then
$SED
"/^mountroot
$/
i
\\
$BUSYBOX_PATH
/sh
$VTOY_PATH
/hook/debian/disk_mount_hook.sh"
-i
/init
$SED
"/^mountroot
$/
i
\\
export LIVEMEDIA=/dev/mapper/ventoy"
-i
/init
$SED
"/^mountroot
$/
i
\\
export LIVE_MEDIA=/dev/mapper/ventoy"
-i
/init
if
$GREP
-q
'live-media='
/proc/cmdline
;
then
if
[
-f
/scripts/casper
]
&&
$GREP
-q
'^ *LIVEMEDIA='
/scripts/casper
;
then
$SED
"s#^ *LIVEMEDIA=.*#LIVEMEDIA=/dev/mapper/ventoy#"
-i
/scripts/casper
fi
fi
elif
[
-e
/init
]
&&
$GREP
-q
'/start-udev$'
/init
;
then
echo
"Here use notify ..."
>>
$VTLOG
...
...
@@ -35,3 +41,15 @@ else
ventoy_systemd_udevd_work_around
ventoy_add_udev_rule
"
$VTOY_PATH
/hook/debian/udev_disk_hook.sh %k"
fi
if
[
-f
$VTOY_PATH
/autoinstall
]
;
then
echo
"Do auto install ..."
>>
$VTLOG
if
$GREP
-q
"^mount /proc$"
/init
;
then
$SED
"/^mount
\/
proc/a export file=
$VTOY_PATH
/autoinstall; export auto='true'; export priority='critical'"
-i
/init
fi
fi
IMG/cpio/ventoy/hook/gobo/ventoy-hook.sh
0 → 100644
View file @
d0edcc0e
#!/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/>.
#
#************************************************************************************
.
$VTOY_PATH
/hook/ventoy-os-lib.sh
$SED
"s#printf
\(
.*
\)\$
CMDLINE#printf
\1\$
CMDLINE root=live:/dev/mapper/ventoy#"
-i
/lib/dracut-lib.sh
ventoy_set_inotify_script gobo/ventoy-inotifyd-hook.sh
$BUSYBOX_PATH
/cp
-a
$VTOY_PATH
/hook/gobo/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/01-ventoy-inotifyd-start.sh
IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-hook.sh
0 → 100644
View file @
d0edcc0e
#!/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
if
is_ventoy_hook_finished
;
then
exit
0
fi
vtlog
"##### INOTIFYD:
$2
/
$3
is created ..."
VTPATH_OLD
=
$PATH
;
PATH
=
$BUSYBOX_PATH
:
$VTOY_PATH
/tool:
$PATH
if
is_inotify_ventoy_part
$3
;
then
vtlog
"find ventoy partition
$3
..."
$BUSYBOX_PATH
/sh
$VTOY_PATH
/hook/default/udev_disk_hook.sh
$3
noreplace
# blkdev_num=$($VTOY_PATH/tool/dmsetup ls | grep ventoy | sed 's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/')
# vtDM=$(ventoy_find_dm_id ${blkdev_num})
#
# if [ "$vtDM" = "dm-0" ]; then
# vtlog "This is dm-0, OK ..."
# else
# vtlog "####### This is $vtDM ####### this is abnormal ..."
# ventoy_swap_device /dev/dm-0 /dev/$vtDM
# fi
set_ventoy_hook_finish
fi
PATH
=
$VTPATH_OLD
IMG/cpio/ventoy/hook/gobo/ventoy-inotifyd-start.sh
0 → 100644
View file @
d0edcc0e
#!/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
vtHook
=
$(
$CAT
$VTOY_PATH
/inotifyd-hook-script.txt
)
vtdisk
=
$(
get_ventoy_disk_name
)
if
[
"
$vtdisk
"
=
"unknown"
]
;
then
vtlog
"... start inotifyd listen
$vtHook
..."
$BUSYBOX_PATH
/nohup
$VTOY_PATH
/tool/inotifyd
$vtHook
/dev:n 2>&- &
else
vtlog
"...
$vtdisk
already exist ..."
$BUSYBOX_PATH
/sh
$vtHook
n /dev
"
${
vtdisk
#/dev/
}
2"
fi
IMG/cpio/ventoy/hook/guix/ventoy-disk.sh
0 → 100644
View file @
d0edcc0e
#!/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
if
is_ventoy_hook_finished
;
then
exit
0
fi
vtlog
"##### INOTIFYD:
$2
/
$3
is created ..."
VTPATH_OLD
=
$PATH
;
PATH
=
$BUSYBOX_PATH
:
$VTOY_PATH
/tool:
$PATH
if
is_inotify_ventoy_part
$3
;
then
vtlog
"find ventoy partition ..."
$BUSYBOX_PATH
/sh
$VTOY_PATH
/hook/default/udev_disk_hook.sh
$3
blkdev_num
=
$(
$VTOY_PATH
/tool/dmsetup
ls
|
grep
ventoy |
sed
's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/'
)
vtDM
=
$(
ventoy_find_dm_id
${
blkdev_num
}
)
vtlog
"This is
$vtDM
..."
set_ventoy_hook_finish
fi
PATH
=
$VTPATH_OLD
IMG/cpio/ventoy/hook/guix/ventoy-hook.sh
0 → 100644
View file @
d0edcc0e
#!/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/>.
#
#************************************************************************************
.
$VTOY_PATH
/hook/ventoy-os-lib.sh
$BUSYBOX_PATH
/mkdir /dev
$BUSYBOX_PATH
/mknode
-m
0666 /dev/null c 1 3
$BUSYBOX_PATH
/nohup
$VTOY_PATH
/hook/guix/ventoy-waitdev.sh &
IMG/cpio/ventoy/hook/guix/ventoy-waitdev.sh
0 → 100644
View file @
d0edcc0e
#!/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
vtlog
"#######
$0
$*
########"
VTPATH_OLD
=
$PATH
;
PATH
=
$BUSYBOX_PATH
:
$VTOY_PATH
/tool:
$PATH
while
!
[
-e
/dev/null
]
;
do
echo
'xxxxxxxxxx'
echo
'xxxxxxxxxx'
>
/dev/console
sleep
1
done
vtlog
"... start inotifyd listen
$vtHook
..."
$BUSYBOX_PATH
/nohup
$VTOY_PATH
/tool/inotifyd
$VTOY_PATH
/hook/guix/ventoy-disk.sh /dev:n 2>&- &
PATH
=
$VTPATH_OLD
IMG/cpio/ventoy/hook/nutyx/ventoy-disk.sh
0 → 100644
View file @
d0edcc0e
#!/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
vtlog
"#######
$0
$*
########"
VTPATH_OLD
=
$PATH
;
PATH
=
$BUSYBOX_PATH
:
$VTOY_PATH
/tool:
$PATH
if
is_ventoy_hook_finished
;
then
exit
0
fi
wait_for_usb_disk_ready
vtdiskname
=
$(
get_ventoy_disk_name
)
if
[
"
$vtdiskname
"
=
"unknown"
]
;
then
vtlog
"ventoy disk not found"
PATH
=
$VTPATH_OLD
exit
0
fi
ventoy_udev_disk_common_hook
"
${
vtdiskname
#/dev/
}
2"
blkdev_num
=
$(
dmsetup
ls
|
grep
ventoy |
sed
's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/'
)
vtDM
=
$(
ventoy_find_dm_id
${
blkdev_num
}
)
vtlog
"link /dev/
$vtDM
$VTOY_DM_PATH
"
ln
-s
/dev/
$vtDM
$VTOY_DM_PATH
set_ventoy_hook_finish
PATH
=
$VTPATH_OLD
IMG/cpio/ventoy/hook/nutyx/ventoy-hook.sh
0 → 100644
View file @
d0edcc0e
#!/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/>.
#
#************************************************************************************
.
$VTOY_PATH
/hook/ventoy-os-lib.sh
$SED
"/find_media
$/
i
$BUSYBOX_PATH
/sh
$VTOY_PATH
/hook/nutyx/ventoy-disk.sh"
-i
/init
IMG/cpio/ventoy/hook/rhel7/ventoy-hook.sh
View file @
d0edcc0e
...
...
@@ -22,15 +22,30 @@
#ventoy_systemd_udevd_work_around
#ventoy_add_udev_rule "$VTOY_PATH/hook/default/udev_disk_hook.sh %k noreplace"
if
[
-f
$VTOY_PATH
/autoinstall
]
;
then
VTKS
=
"inst.ks=file:
$VTOY_PATH
/autoinstall"
else
for
vtParam
in
$(
$CAT
/proc/cmdline
)
;
do
if
echo
$vtParam
|
$GREP
-q
'inst.ks=hd:LABEL='
;
then
vtRawKs
=
$(
echo
$vtParam
|
$AWK
-F
:
'{print $NF}'
)
VTKS
=
"inst.ks=hd:/dev/dm-0:
$vtRawKs
"
break
fi
done
fi
echo
"VTKS=
$VTKS
"
>>
$VTLOG
if
$GREP
-q
'root=live'
/proc/cmdline
;
then
$SED
"s#printf
\(
.*
\)\$
CMDLINE#printf
\1\$
CMDLINE root=live:/dev/dm-0#"
-i
/lib/dracut-lib.sh
$SED
"s#printf
\(
.*
\)\$
CMDLINE#printf
\1\$
CMDLINE root=live:/dev/dm-0
$VTKS
#"
-i
/lib/dracut-lib.sh
else
$SED
"s#printf
\(
.*
\)\$
CMDLINE#printf
\1\$
CMDLINE inst.stage2=hd:/dev/dm-0#"
-i
/lib/dracut-lib.sh
$SED
"s#printf
\(
.*
\)\$
CMDLINE#printf
\1\$
CMDLINE inst.stage2=hd:/dev/dm-0
$VTKS
#"
-i
/lib/dracut-lib.sh
fi
ventoy_set_inotify_script rhel7/ventoy-inotifyd-hook.sh
$BUSYBOX_PATH
/cp
-a
$VTOY_PATH
/hook/rhel7/ventoy-inotifyd-start.sh /lib/dracut/hooks/pre-udev/01-ventoy-inotifyd-start.sh
$BUSYBOX_PATH
/cp
-a
$VTOY_PATH
/hook/rhel7/ventoy-timeout.sh /lib/dracut/hooks/initqueue/timeout/01-ventoy-timeout.sh
# suppress write protected mount warning
if
[
-e
/usr/sbin/anaconda-diskroot
]
;
then
...
...
IMG/cpio/ventoy/hook/rhel7/ventoy-inotifyd-hook.sh
View file @
d0edcc0e
...
...
@@ -41,6 +41,9 @@ if is_inotify_ventoy_part $3; then
ventoy_swap_device /dev/dm-0 /dev/
$vtDM
fi
vtlog
"set anaconda-diskroot ..."
/sbin/initqueue
--settled
--onetime
--name
anaconda-diskroot anaconda-diskroot /dev/dm-0
set_ventoy_hook_finish
fi
...
...
IMG/cpio/ventoy/hook/rhel7/ventoy-timeout.sh
0 → 100644
View file @
d0edcc0e
#!/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
vtlog
"#####
$0
$*
..."
VTPATH_OLD
=
$PATH
;
PATH
=
$BUSYBOX_PATH
:
$VTOY_PATH
/tool:
$PATH
blkdev_num
=
$(
dmsetup
ls
|
grep
ventoy |
sed
's/.*(\([0-9][0-9]*\),.*\([0-9][0-9]*\).*/\1:\2/'
)
vtDM
=
$(
ventoy_find_dm_id
${
blkdev_num
}
)
vtlog
"diskroot
$vtDM
..."
/sbin/initqueue
--settled
--onetime
--name
anaconda-diskroot anaconda-diskroot /dev/
$vtDM
PATH
=
$VTPATH_OLD
Prev
1
2
Next
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