75 lines
2.1 KiB
Bash
Executable File
75 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
if [[ "$2" =~ xz$ ]];then
|
|
echo "file end with xz"
|
|
export RAMFS_COMPRESS_METHOD="xz"
|
|
elif [[ "$2" =~ gz$ ]];then
|
|
echo "file end with gz"
|
|
export RAMFS_COMPRESS_METHOD="gz"
|
|
elif [[ "$2" =~ none$ ]];then
|
|
echo "file end with none"
|
|
export RAMFS_COMPRESS_METHOD="none"
|
|
else
|
|
echo "error format,file shoule end with gz or xz or none"
|
|
exit 1
|
|
fi
|
|
|
|
generate_rootfs()
|
|
{
|
|
if [ -d skel ] ; then
|
|
if [ "x${RAMFS_COMPRESS_METHOD}" = "xxz" ] ; then
|
|
echo "compress ramfs for xz format"
|
|
(cd skel; find . | fakeroot cpio -o -Hnewc | xz -c -k --format=lzma > ../"$1")
|
|
elif [ "x${RAMFS_COMPRESS_METHOD}" = "xgz" ] ; then
|
|
echo "compress ramfs for gzip format"
|
|
(cd skel; find . | fakeroot cpio -o -Hnewc | gzip > ../"$1")
|
|
elif [ "x${RAMFS_COMPRESS_METHOD}" = "xnone" ] ; then
|
|
echo "compress ramfs for none format"
|
|
(cd skel; find . | fakeroot cpio -o -Hnewc > ../"$1")
|
|
fi
|
|
else
|
|
echo "skel not exist"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
extract_rootfs()
|
|
{
|
|
if [ -f "$1" ] ; then
|
|
rm -rf skel && mkdir skel
|
|
if [ "x${RAMFS_COMPRESS_METHOD}" = "xxz" ] ; then
|
|
echo "decompress ramfs for xz format"
|
|
xz -d -c -k $1 | (cd skel; fakeroot cpio -i)
|
|
elif [ "x${RAMFS_COMPRESS_METHOD}" = "xgz" ] ; then
|
|
echo "decompress ramfs for gzip format"
|
|
gzip -dc $1 | (cd skel; fakeroot cpio -i)
|
|
elif [ "x${RAMFS_COMPRESS_METHOD}" = "xnone" ] ; then
|
|
echo "decompress ramfs for none format"
|
|
(cd skel;fakeroot cpio -i -Hnewc < ../"$1")
|
|
fi
|
|
else
|
|
echo "$1 not exist"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
if [ $# -ne 2 ]; then
|
|
echo -e "please input correct parameters"
|
|
echo -e "\t[build.sh e rootf.cpio.gz] to extract the rootfs template to skel folder"
|
|
echo -e "\tthen make some changes in the skel folder"
|
|
echo -e "\t[build.sh c rootf.cpio.gz] to create the rootfs from the skel folder"
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$1" = "e" ] ; then
|
|
extract_rootfs $2
|
|
elif [ "$1" = "c" ] ; then
|
|
generate_rootfs $2
|
|
else
|
|
echo "Wrong arguments"
|
|
exit 1
|
|
fi
|
|
|