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
d02f184a
Commit
d02f184a
authored
Sep 26, 2020
by
longpanda
Browse files
add support for linux vdisk(vhd/vdi/raw)
parent
3c649b28
Changes
26
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
35 additions
and
12 deletions
+35
-12
LiveCD/VTOY/ventoy/ventoy.sh
LiveCD/VTOY/ventoy/ventoy.sh
+2
-2
VtoyTool/vtoydm.c
VtoyTool/vtoydm.c
+10
-1
VtoyTool/vtoydump.c
VtoyTool/vtoydump.c
+23
-9
VtoyTool/vtoytool/00/vtoytool_32
VtoyTool/vtoytool/00/vtoytool_32
+0
-0
VtoyTool/vtoytool/00/vtoytool_64
VtoyTool/vtoytool/00/vtoytool_64
+0
-0
VtoyTool/vtoytool/01/vtoytool_64
VtoyTool/vtoytool/01/vtoytool_64
+0
-0
No files found.
LiveCD/VTOY/ventoy/ventoy.sh
View file @
d02f184a
...
@@ -20,7 +20,7 @@ get_disk_size() {
...
@@ -20,7 +20,7 @@ get_disk_size() {
enum_disk
()
{
enum_disk
()
{
id
=
1
id
=
1
rm
-f
/device.list
rm
-f
/device.list
ls
/sys/block/ |
grep
'd[a-z]'
|
while
read
dev
;
do
ls
/sys/block/ |
e
grep
'd[a-z]
|nvme|mmc
'
|
while
read
dev
;
do
if
!
[
-b
/dev/
$dev
]
;
then
if
!
[
-b
/dev/
$dev
]
;
then
continue
continue
fi
fi
...
@@ -145,7 +145,7 @@ ventoy_configuration() {
...
@@ -145,7 +145,7 @@ ventoy_configuration() {
elif
[
"
$Answer
"
=
"1"
]
;
then
elif
[
"
$Answer
"
=
"1"
]
;
then
while
true
;
do
while
true
;
do
read
-p
"Please input the preserve space in MB: "
Answer
read
-p
"Please input the preserve space in MB: "
Answer
if
echo
$Answer
|
grep
-q
"^[
1
-9][0-9]*$"
;
then
if
echo
$Answer
|
grep
-q
"^[
0
-9][0-9]*$"
;
then
echo
$Answer
>
/preserve.txt
echo
$Answer
>
/preserve.txt
break
break
fi
fi
...
...
VtoyTool/vtoydm.c
View file @
d02f184a
...
@@ -507,9 +507,18 @@ static int vtoydm_print_linear_table(const char *img_map_file, const char *diskn
...
@@ -507,9 +507,18 @@ static int vtoydm_print_linear_table(const char *img_map_file, const char *diskn
(sector_start << 2), disk_sector_num,
(sector_start << 2), disk_sector_num,
diskname, (unsigned long long)chunk[i].disk_start_sector);
diskname, (unsigned long long)chunk[i].disk_start_sector);
#else
#else
if
(
strstr
(
diskname
,
"nvme"
)
||
strstr
(
diskname
,
"mmc"
))
{
printf
(
"%u %u linear %sp1 %llu
\n
"
,
(
sector_start
<<
2
),
disk_sector_num
,
diskname
,
(
unsigned
long
long
)
chunk
[
i
].
disk_start_sector
-
2048
);
}
else
{
printf
(
"%u %u linear %s1 %llu
\n
"
,
printf
(
"%u %u linear %s1 %llu
\n
"
,
(
sector_start
<<
2
),
disk_sector_num
,
(
sector_start
<<
2
),
disk_sector_num
,
diskname
,
(
unsigned
long
long
)
chunk
[
i
].
disk_start_sector
-
2048
);
diskname
,
(
unsigned
long
long
)
chunk
[
i
].
disk_start_sector
-
2048
);
}
#endif
#endif
}
}
...
...
VtoyTool/vtoydump.c
View file @
d02f184a
...
@@ -120,7 +120,9 @@ typedef struct ventoy_os_param
...
@@ -120,7 +120,9 @@ typedef struct ventoy_os_param
uint64_t
vtoy_reserved
[
4
];
// Internal use by ventoy
uint64_t
vtoy_reserved
[
4
];
// Internal use by ventoy
uint8_t
reserved
[
31
];
uint8_t
vtoy_disk_signature
[
4
];
uint8_t
reserved
[
27
];
}
ventoy_os_param
;
}
ventoy_os_param
;
#pragma pack()
#pragma pack()
...
@@ -218,6 +220,11 @@ static void vtoy_dump_os_param(ventoy_os_param *param)
...
@@ -218,6 +220,11 @@ static void vtoy_dump_os_param(ventoy_os_param *param)
printf
(
"param->vtoy_disk_guid = %02x %02x %02x %02x
\n
"
,
printf
(
"param->vtoy_disk_guid = %02x %02x %02x %02x
\n
"
,
param
->
vtoy_disk_guid
[
0
],
param
->
vtoy_disk_guid
[
1
],
param
->
vtoy_disk_guid
[
0
],
param
->
vtoy_disk_guid
[
1
],
param
->
vtoy_disk_guid
[
2
],
param
->
vtoy_disk_guid
[
3
]);
param
->
vtoy_disk_guid
[
2
],
param
->
vtoy_disk_guid
[
3
]);
printf
(
"param->vtoy_disk_signature = %02x %02x %02x %02x
\n
"
,
param
->
vtoy_disk_signature
[
0
],
param
->
vtoy_disk_signature
[
1
],
param
->
vtoy_disk_signature
[
2
],
param
->
vtoy_disk_signature
[
3
]);
printf
(
"param->vtoy_disk_size = %llu
\n
"
,
(
unsigned
long
long
)
param
->
vtoy_disk_size
);
printf
(
"param->vtoy_disk_size = %llu
\n
"
,
(
unsigned
long
long
)
param
->
vtoy_disk_size
);
printf
(
"param->vtoy_disk_part_id = %u
\n
"
,
param
->
vtoy_disk_part_id
);
printf
(
"param->vtoy_disk_part_id = %u
\n
"
,
param
->
vtoy_disk_part_id
);
printf
(
"param->vtoy_disk_part_type = %u
\n
"
,
param
->
vtoy_disk_part_type
);
printf
(
"param->vtoy_disk_part_type = %u
\n
"
,
param
->
vtoy_disk_part_type
);
...
@@ -231,7 +238,7 @@ static void vtoy_dump_os_param(ventoy_os_param *param)
...
@@ -231,7 +238,7 @@ static void vtoy_dump_os_param(ventoy_os_param *param)
printf
(
"
\n
"
);
printf
(
"
\n
"
);
}
}
static
int
vtoy_get_disk_guid
(
const
char
*
diskname
,
uint8_t
*
vtguid
)
static
int
vtoy_get_disk_guid
(
const
char
*
diskname
,
uint8_t
*
vtguid
,
uint8_t
*
vtsig
)
{
{
int
i
=
0
;
int
i
=
0
;
int
fd
=
0
;
int
fd
=
0
;
...
@@ -244,6 +251,9 @@ static int vtoy_get_disk_guid(const char *diskname, uint8_t *vtguid)
...
@@ -244,6 +251,9 @@ static int vtoy_get_disk_guid(const char *diskname, uint8_t *vtguid)
{
{
lseek
(
fd
,
0x180
,
SEEK_SET
);
lseek
(
fd
,
0x180
,
SEEK_SET
);
read
(
fd
,
vtguid
,
16
);
read
(
fd
,
vtguid
,
16
);
lseek
(
fd
,
0x1b8
,
SEEK_SET
);
read
(
fd
,
vtsig
,
4
);
close
(
fd
);
close
(
fd
);
debug
(
"GUID for %s: <"
,
devdisk
);
debug
(
"GUID for %s: <"
,
devdisk
);
...
@@ -380,13 +390,14 @@ static int vtoy_find_disk_by_size(unsigned long long size, char *diskname)
...
@@ -380,13 +390,14 @@ static int vtoy_find_disk_by_size(unsigned long long size, char *diskname)
return
rc
;
return
rc
;
}
}
static
int
vtoy_find_disk_by_guid
(
uint8_t
*
guid
,
char
*
diskname
)
static
int
vtoy_find_disk_by_guid
(
ventoy_os_param
*
param
,
char
*
diskname
)
{
{
int
rc
=
0
;
int
rc
=
0
;
int
count
=
0
;
int
count
=
0
;
DIR
*
dir
=
NULL
;
DIR
*
dir
=
NULL
;
struct
dirent
*
p
=
NULL
;
struct
dirent
*
p
=
NULL
;
uint8_t
vtguid
[
16
];
uint8_t
vtguid
[
16
];
uint8_t
vtsig
[
16
];
dir
=
opendir
(
"/sys/block"
);
dir
=
opendir
(
"/sys/block"
);
if
(
!
dir
)
if
(
!
dir
)
...
@@ -403,8 +414,9 @@ static int vtoy_find_disk_by_guid(uint8_t *guid, char *diskname)
...
@@ -403,8 +414,9 @@ static int vtoy_find_disk_by_guid(uint8_t *guid, char *diskname)
}
}
memset
(
vtguid
,
0
,
sizeof
(
vtguid
));
memset
(
vtguid
,
0
,
sizeof
(
vtguid
));
rc
=
vtoy_get_disk_guid
(
p
->
d_name
,
vtguid
);
rc
=
vtoy_get_disk_guid
(
p
->
d_name
,
vtguid
,
vtsig
);
if
(
rc
==
0
&&
memcmp
(
vtguid
,
guid
,
16
)
==
0
)
if
(
rc
==
0
&&
memcmp
(
vtguid
,
param
->
vtoy_disk_guid
,
16
)
==
0
&&
memcmp
(
vtsig
,
param
->
vtoy_disk_signature
,
4
)
==
0
)
{
{
sprintf
(
diskname
,
"%s"
,
p
->
d_name
);
sprintf
(
diskname
,
"%s"
,
p
->
d_name
);
count
++
;
count
++
;
...
@@ -430,11 +442,11 @@ static int vtoy_print_os_param(ventoy_os_param *param, char *diskname)
...
@@ -430,11 +442,11 @@ static int vtoy_print_os_param(ventoy_os_param *param, char *diskname)
cnt
=
vtoy_find_disk_by_size
(
param
->
vtoy_disk_size
,
diskname
);
cnt
=
vtoy_find_disk_by_size
(
param
->
vtoy_disk_size
,
diskname
);
if
(
cnt
>
1
)
if
(
cnt
>
1
)
{
{
cnt
=
vtoy_find_disk_by_guid
(
param
->
vtoy_disk_guid
,
diskname
);
cnt
=
vtoy_find_disk_by_guid
(
param
,
diskname
);
}
}
else
if
(
cnt
==
0
)
else
if
(
cnt
==
0
)
{
{
cnt
=
vtoy_find_disk_by_guid
(
param
->
vtoy_disk_guid
,
diskname
);
cnt
=
vtoy_find_disk_by_guid
(
param
,
diskname
);
debug
(
"find 0 disk by size, try with guid cnt=%d...
\n
"
,
cnt
);
debug
(
"find 0 disk by size, try with guid cnt=%d...
\n
"
,
cnt
);
}
}
...
@@ -462,17 +474,19 @@ static int vtoy_check_device(ventoy_os_param *param, const char *device)
...
@@ -462,17 +474,19 @@ static int vtoy_check_device(ventoy_os_param *param, const char *device)
{
{
unsigned
long
long
size
;
unsigned
long
long
size
;
uint8_t
vtguid
[
16
]
=
{
0
};
uint8_t
vtguid
[
16
]
=
{
0
};
uint8_t
vtsig
[
4
]
=
{
0
};
debug
(
"vtoy_check_device for <%s>
\n
"
,
device
);
debug
(
"vtoy_check_device for <%s>
\n
"
,
device
);
size
=
vtoy_get_disk_size_in_byte
(
device
);
size
=
vtoy_get_disk_size_in_byte
(
device
);
vtoy_get_disk_guid
(
device
,
vtguid
);
vtoy_get_disk_guid
(
device
,
vtguid
,
vtsig
);
debug
(
"param->vtoy_disk_size=%llu size=%llu
\n
"
,
debug
(
"param->vtoy_disk_size=%llu size=%llu
\n
"
,
(
unsigned
long
long
)
param
->
vtoy_disk_size
,
(
unsigned
long
long
)
size
);
(
unsigned
long
long
)
param
->
vtoy_disk_size
,
(
unsigned
long
long
)
size
);
if
((
param
->
vtoy_disk_size
==
size
||
param
->
vtoy_disk_size
==
size
+
512
)
&&
if
((
param
->
vtoy_disk_size
==
size
||
param
->
vtoy_disk_size
==
size
+
512
)
&&
memcmp
(
vtguid
,
param
->
vtoy_disk_guid
,
16
)
==
0
)
memcmp
(
vtguid
,
param
->
vtoy_disk_guid
,
16
)
==
0
&&
memcmp
(
vtsig
,
param
->
vtoy_disk_signature
,
4
)
==
0
)
{
{
debug
(
"<%s> is right ventoy disk
\n
"
,
device
);
debug
(
"<%s> is right ventoy disk
\n
"
,
device
);
return
0
;
return
0
;
...
...
VtoyTool/vtoytool/00/vtoytool_32
View file @
d02f184a
No preview for this file type
VtoyTool/vtoytool/00/vtoytool_64
View file @
d02f184a
No preview for this file type
VtoyTool/vtoytool/01/vtoytool_64
View file @
d02f184a
No preview for this file type
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