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
itminedu
snf-image
Commits
42f09a19
Commit
42f09a19
authored
Nov 03, 2011
by
Nikos Skalkotos
Browse files
Add diskdump support in the helper (part 1)
parent
39822c89
Changes
6
Hide whitespace changes
Inline
Side-by-side
snf-image-helper/common.sh
View file @
42f09a19
...
...
@@ -35,6 +35,7 @@ PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
# Programs
XMLSTARLET
=
xmlstarlet
RESIZE2FS
=
resize2fs
PARTED
=
parted
CLEANUP
=(
)
...
...
@@ -92,6 +93,35 @@ get_distro() {
fi
}
get_last_partition
()
{
local
dev
=
"
$1
"
"
$PARTED
"
-s
-m
"
$dev
"
unit s print |
tail
-1
}
get_partition
()
{
local
dev
=
"
$1
"
local id
=
"
$2
"
"
$PARTED
"
-s
-m
"
$dev
"
unit s print |
grep
"^
$id
"
}
get_partition_count
()
{
local
dev
=
"
$1
"
expr
$(
"
$PARTED
"
-s
-m
"
$dev
"
unit s print |
wc
-l
)
- 2
}
get_last_free_sector
()
{
local
dev
=
"
$1
"
local
last_line
=
$(
"
$PARTED
"
-s
-m
"
$dev
"
unit s print free |
tail
-1
)
local type
=
$(
echo
"
$last_line
"
|
cut
-d
:
-f
5
)
if
[
"
$type
"
=
"free;"
]
;
then
echo
"
$last_line
"
|
cut
-d
:
-f
3
fi
}
cleanup
()
{
# if something fails here, it shouldn't call cleanup again...
trap
- EXIT
...
...
snf-image-helper/snf-image-helper.in
View file @
42f09a19
...
...
@@ -64,6 +64,7 @@ target=$(mktemp -d --tmpdir target.XXXXXX)
add_cleanup
rmdir
"
$target
"
export
SNF_IMAGE_TARGET
=
"
$target
"
export
SNF_IMAGE_ROOTDEV
=
"
${
SNF_IMAGE_DEV
}${
SNF_IMAGE_ROOT
}
"
if
[
!
-d
"@tasksdir@"
]
;
then
log_error
"snf-image/tasks directory is missing"
...
...
snf-image-helper/tasks/10FixPartitionTable.in
0 → 100644
View file @
42f09a19
#! /bin/bash
### BEGIN TASK INFO
# Provides: FixPartitionTable
# RunBefore: FilesystemResizeUnmounted
# Short-Description: Resize filesystem to use all the available space
### END TASK INFO
set
-e
.
"@commondir@/common.sh"
if
[
!
-b
"
$SNF_IMAGE_DEV
"
]
;
then
log_error
"Device file:
\`
${
SNF_IMAGE_DEV
}
' is not a block device"
fi
if
[
$(
get_partition_count
"
$SNF_IMAGE_DEV
"
)
-eq
0
]
;
then
log_error
"Device:
\`
${
SNF_IMAGE_DEV
}
' does not contain any partition"
fi
retval
=
$(
get_last_partition
"
$SNF_IMAGE_DEV
"
)
id
=
$(
echo
$retval
|
cut
-d
:
-f1
)
if
[
$id
-gt
4
]
;
then
log_error
"We don't support logical volumes"
fi
pstart
=
$(
echo
$retval
|
cut
-d
:
-f2
)
pend
=
$(
echo
$retval
|
cut
-d
:
-f3
)
ptype
=
$(
echo
$retval
|
cut
-d
:
-f5
)
if
[
x
"
$ptype
"
=
"x"
]
;
then
# Don't know how to handle this
echo
"Warning: Last partition with id:
\`
$id
' is empty"
\
"or has unknown filesystem"
exit
0
fi
new_pend
=
$(
get_last_free_sector
"
$SNF_IMAGE_DEV
"
)
#Extend the partition
$PARTED
-s
-m
"
$SNF_IMAGE_DEV
"
rm
$id
$PARTED
-s
-m
"
$SNF_IMAGE_DEV
"
mkpart primary
"
$ptype
"
"
$pstart
"
"
$new_pend
"
#inform the kernel about the changes
partprobe
"
$SNF_IMAGE_DEV
"
exit
0
# vim: set sta sts=4 shiftwidth=4 sw=4 et ai :
snf-image-helper/tasks/
10
ResizeUnmounted.in
→
snf-image-helper/tasks/
20Filesystem
ResizeUnmounted.in
View file @
42f09a19
#! /bin/bash
### BEGIN TASK INFO
# Provides: ResizeUnmounted
# Provides:
Filesystem
ResizeUnmounted
# RunBefore: MountImage
# RunAfter: FixPartitionTable
# Short-Description: Resize filesystem to use all the available space
### END TASK INFO
...
...
@@ -11,15 +12,20 @@ set -e
if
[
!
-b
"
$SNF_IMAGE_DEV
"
]
;
then
log_error
"Device file:
\`
${
SNF_IMAGE_DEV
}
' is not a block device"
fi
if
[
-z
"
$SNF_IMAGE_TYPE
"
]
;
then
log_error
"Image type does not exist"
fi
if
[
"
$SNF_IMAGE_TYPE
"
=
"extdump"
]
;
then
"
$RESIZE2FS
"
"
$SNF_IMAGE_DEV
"
fi
last_partition
=
$(
get_last_partition
"
$SNF_IMAGE_DEV
"
)
id
=
$(
echo
"
$last_partition
"
|
cut
-d
:
-f1
)
ptype
=
$(
echo
"
$last_partition
"
|
cut
-d
:
-f5
)
if
[[
"
$ptype
"
=
~ ext[234]
]]
;
then
device
=
"
$SNF_IMAGE_DEV
""
$id
"
"
$RESIZE2FS
"
"
$device
"
fi
exit
0
...
...
snf-image-helper/tasks/30MountImage.in
View file @
42f09a19
...
...
@@ -13,11 +13,11 @@ if [ ! -d "$SNF_IMAGE_TARGET" ]; then
log_error
"Target dir:
\`
$SNF_IMAGE_TARGET
' is missing"
fi
if
[
!
-b
"
$SNF_IMAGE_DEV
"
]
;
then
log_error
"Device file:
\`
$SNF_IMAGE_DEV
' is not a block device"
if
[
!
-b
"
$SNF_IMAGE_
ROOT
DEV
"
]
;
then
log_error
"Device file:
\`
$SNF_IMAGE_
ROOT
DEV
' is not a block device"
fi
mount
"
$SNF_IMAGE_DEV
"
"
$SNF_IMAGE_TARGET
"
mount
"
$SNF_IMAGE_
ROOT
DEV
"
"
$SNF_IMAGE_TARGET
"
exit
0
...
...
snf-image-helper/tasks/40ResizeMounted.in
→
snf-image-helper/tasks/40
Filesystem
ResizeMounted.in
View file @
42f09a19
#! /bin/bash
### BEGIN TASK INFO
# Provides: ResizeMounted
# Provides:
Filesystem
ResizeMounted
# RunBefore: UmountImage
# RunAfter: MountImage
# Short-Description: Resize filesystem to use all the available space
...
...
@@ -14,13 +14,17 @@ if [ ! -d "$SNF_IMAGE_TARGET" ]; then
log_error
"Target directory
\`
$SNF_IMAGE_TARGET
' is missing"
fi
if
[
"
$SNF_IMAGE_TYPE
"
=
"ntfsdump"
]
;
then
last_partition
=
$(
get_last_partition
"
$SNF_IMAGE_DEV
"
)
id
=
$(
echo
"
$last_partition
"
|
cut
-d
:
-f1
)
ptype
=
$(
echo
"
$last_partition
"
|
cut
-d
:
-f5
)
if
[
"
$ptype
"
=
"ntfs"
]
;
then
# Write a diskpart script to %SystemDrive%\Windows\SnfScripts. Sysprep will
# try to execute this script during the specialize pass.
mkdir
-p
"
$SNF_IMAGE_TARGET
/Windows/SnfScripts"
cat
>
"
$SNF_IMAGE_TARGET
/Windows/SnfScripts/ExtendFilesystem"
<<
EOF
select disk 0
select volume
1
select volume
$id
extend filesystem
exit
EOF
...
...
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