add swap partition
Signed-off-by: Michel-FK <michel.stempin@funkey-project.com>
This commit is contained in:
parent
c5c4b15523
commit
79a7be9716
|
@ -1,9 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Add swap partition to fstab
|
|
||||||
sed -i '/^\/swap/d' "${TARGET_DIR}/etc/fstab"
|
|
||||||
echo "/swap none swap defaults 0 0" >> "${TARGET_DIR}/etc/fstab"
|
|
||||||
|
|
||||||
# Add local path to init scripts
|
# Add local path to init scripts
|
||||||
sed -i '3iexport PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin' ${TARGET_DIR}/etc/init.d/rcK
|
sed -i '3iexport PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin' ${TARGET_DIR}/etc/init.d/rcK
|
||||||
sed -i '3iexport PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin' ${TARGET_DIR}/etc/init.d/rcS
|
sed -i '3iexport PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin' ${TARGET_DIR}/etc/init.d/rcS
|
||||||
|
|
|
@ -6,6 +6,6 @@ tmpfs /dev/shm tmpfs mode=0777 0 0
|
||||||
tmpfs /tmp tmpfs mode=1777 0 0
|
tmpfs /tmp tmpfs mode=1777 0 0
|
||||||
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
|
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
|
||||||
sysfs /sys sysfs defaults 0 0
|
sysfs /sys sysfs defaults 0 0
|
||||||
/swap none swap defaults 0 0
|
/dev/mmcblk0p3 none swap sw 0 0
|
||||||
configfs /sys/kernel/config configfs rw,relatime 0 0
|
configfs /sys/kernel/config configfs rw,relatime 0 0
|
||||||
/dev/mmcblk0p3 /mnt vfat rw,relatime,fmask=0022,dmask=0022,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
|
/dev/mmcblk0p4 /mnt vfat rw,relatime,fmask=0022,dmask=0022,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
|
||||||
|
|
|
@ -8,8 +8,8 @@ source /usr/local/lib/utils
|
||||||
SELF=$(basename $0)
|
SELF=$(basename $0)
|
||||||
|
|
||||||
# Find out the root partition number from the kernel command line
|
# Find out the root partition number from the kernel command line
|
||||||
root_part=$(cat /proc/cmdline | sed -n 's|^.*root=/dev/\([^ ]*\).*|\1|p')
|
root_part=$(cat /proc/cmdline | sed -n 's|^.*root=\([^ ]*\).*|\1|p')
|
||||||
root_part_num=${root_part#mmcblk0p}
|
root_part_num=${root_part#/dev/mmcblk0p}
|
||||||
if [ "${root_part_num}" -eq 1 ]; then
|
if [ "${root_part_num}" -eq 1 ]; then
|
||||||
die 0 "recovery mode"
|
die 0 "recovery mode"
|
||||||
elif [ "${root_part_num}" = "{$root_part}" ]; then
|
elif [ "${root_part_num}" = "{$root_part}" ]; then
|
||||||
|
@ -17,9 +17,13 @@ elif [ "${root_part_num}" = "{$root_part}" ]; then
|
||||||
elif [ "${root_part_num}" -ne 2 ]; then
|
elif [ "${root_part_num}" -ne 2 ]; then
|
||||||
die 2 "unknown partition layout, aborting"
|
die 2 "unknown partition layout, aborting"
|
||||||
fi
|
fi
|
||||||
|
let swap_part_num=${root_part_num}+1
|
||||||
|
swap_part=/dev/mmcblk0p${swap_part_num}
|
||||||
|
let share_part_num=${swap_part_num}+1
|
||||||
|
share_part=/dev/mmcblk0p${share_part_num}
|
||||||
|
|
||||||
check_swap () {
|
check_first_boot () {
|
||||||
[ -f /swap ] && die 0 "nothing to do"
|
[ -f /.first_boot ] && die 0 "nothing to do"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,49 +63,57 @@ reload_partition_table () {
|
||||||
}
|
}
|
||||||
|
|
||||||
resize_rootfs_filesystem () {
|
resize_rootfs_filesystem () {
|
||||||
resize2fs /dev/${root_part} >/dev/null 2>&1 || die 10 "cannot resize the root filesystem, aborting"
|
resize2fs ${root_part} >/dev/null 2>&1 || die 10 "cannot resize the root filesystem, aborting"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
create_swap_file () {
|
create_swap () {
|
||||||
local root_part_line=$(df | grep /dev/root)
|
mount | grep -q ${share_part}
|
||||||
set ${root_part_line}
|
|
||||||
local space_left=${4}
|
|
||||||
if [ ${space_left} -lt 131072 ]; then
|
|
||||||
die 12 "not enough free space for swap file found, aborting"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create an empty 128MB /swap file, change its permissions and format it as swap
|
|
||||||
dd if=/dev/zero of=/swap bs=32M count=4 >/dev/null 2>&1 &&
|
|
||||||
chmod 0600 /swap >/dev/null 2>&1 &&
|
|
||||||
mkswap /swap >/dev/null 2>&1
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
rm /swap
|
|
||||||
die 13 "cannot create swap file, aborting"
|
|
||||||
fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
enable_swap_file () {
|
|
||||||
swapon -a >/dev/null 2>&1 || die 14 "cannot enable swap file, aborting"
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
create_backing_store_partition () {
|
|
||||||
mount | grep -q /dev/mmcblk0p3
|
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
|
|
||||||
# Check that the last partition is the rootfs partition
|
# Check that the last partition is the rootfs partition
|
||||||
local last_part_line=$(sgdisk -p /dev/mmcblk0 2>/dev/null | tail -n 1)
|
local last_part_line=$(sgdisk -p /dev/mmcblk0 2>/dev/null | tail -n 1)
|
||||||
set ${last_part_line}
|
set ${last_part_line}
|
||||||
local last_part=${1}
|
local last_part_num=${1}
|
||||||
if [ "$last_part" != "$root_part_num" ]; then
|
if [ "$last_part_num" != "$root_part_num" ]; then
|
||||||
|
die 11 "rootfs is not the last partition. Don't know how to create the backing store partition"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create an additional linux swap partition
|
||||||
|
let swap_part_num=${last_part_num}+1
|
||||||
|
swap_part=/dev/mmcblk0p${swap_part_num}
|
||||||
|
sgdisk -n ${swap_part_num}:0:+128M -c ${swap_part_num}:swap -t ${swap_part_num}:8200 /dev/mmcblk0 >/dev/null 2>&1 || die 12 "cannot create the swap partition, aborting"
|
||||||
|
sync
|
||||||
|
partprobe /dev/mmcblk0 >/dev/null 2>&1 || die 13 "cannot reload the partition table, aborting"
|
||||||
|
mkswap ${swap_part} >/dev/null 2>&1
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
die 14 "cannot create swap file, aborting"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
enable_swap () {
|
||||||
|
swapon -a >/dev/null 2>&1 || die 15 "cannot enable swap file, aborting"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
create_backing_store_partition () {
|
||||||
|
mount | grep -q ${share_part}
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
|
||||||
|
# Check that the last partition is the swap partition
|
||||||
|
local last_part_line=$(sgdisk -p /dev/mmcblk0 2>/dev/null | tail -n 1)
|
||||||
|
set ${last_part_line}
|
||||||
|
local last_part_num=${1}
|
||||||
|
if [ "${last_part_num}" != "${swap_part_num}" ]; then
|
||||||
die 15 "rootfs is not the last partition. Don't know how to create the backing store partition"
|
die 15 "rootfs is not the last partition. Don't know how to create the backing store partition"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create an additional Microsoft basic data partition share partition that fills the disk
|
# Create an additional Microsoft basic data partition share partition that fills the disk
|
||||||
let share_part=${last_part}+1
|
let share_part_num=${last_part_num}+1
|
||||||
sgdisk -n ${share_part}:0:-0 -c ${share_part}:share -t ${share_part}:0700 /dev/mmcblk0 >/dev/null 2>&1 || die 16 "cannot create the backing store partition, aborting"
|
share_part=/dev/mmcblk0p${share_part_num}
|
||||||
|
sgdisk -n ${share_part_num}:0:-0 -c ${share_part_num}:share -t ${share_part_num}:0700 /dev/mmcblk0 >/dev/null 2>&1 || die 16 "cannot create the backing store partition, aborting"
|
||||||
sync
|
sync
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
|
@ -110,7 +122,7 @@ create_backing_store_partition () {
|
||||||
format_backing_store_partition () {
|
format_backing_store_partition () {
|
||||||
|
|
||||||
# Format the backing store as FAT32
|
# Format the backing store as FAT32
|
||||||
mkfs.vfat /dev/mmcblk0p3 >/dev/null 2>&1 || die 17 "cannot format the backing store partition"
|
mkfs.vfat ${share_part} >/dev/null 2>&1 || die 17 "cannot format the backing store partition"
|
||||||
|
|
||||||
# Add file to force assembly tests
|
# Add file to force assembly tests
|
||||||
mount /mnt/ || die 18 "Cannot mount /mnt"
|
mount /mnt/ || die 18 "Cannot mount /mnt"
|
||||||
|
@ -119,9 +131,9 @@ format_backing_store_partition () {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
notif "First boot detected!"
|
|
||||||
check_swap
|
|
||||||
check_root_id
|
check_root_id
|
||||||
|
check_first_boot
|
||||||
|
notif "First boot detected!"
|
||||||
|
|
||||||
notif "1/8 Resize root partition"
|
notif "1/8 Resize root partition"
|
||||||
resize_rootfs_partition
|
resize_rootfs_partition
|
||||||
|
@ -133,10 +145,10 @@ notif "3/8 Resize root filsystem"
|
||||||
resize_rootfs_filesystem
|
resize_rootfs_filesystem
|
||||||
|
|
||||||
notif "4/8 Create swap"
|
notif "4/8 Create swap"
|
||||||
create_swap_file
|
create_swap
|
||||||
|
|
||||||
notif "5/8 Enable swap"
|
notif "5/8 Enable swap"
|
||||||
enable_swap_file
|
enable_swap
|
||||||
|
|
||||||
notif "6/8 Create share partition"
|
notif "6/8 Create share partition"
|
||||||
create_backing_store_partition
|
create_backing_store_partition
|
||||||
|
@ -148,5 +160,6 @@ notif "8/8 Format share partition"
|
||||||
format_backing_store_partition
|
format_backing_store_partition
|
||||||
|
|
||||||
notif "First boot setup finished!"
|
notif "First boot setup finished!"
|
||||||
|
touch /.first_boot
|
||||||
sleep 1
|
sleep 1
|
||||||
clear_notif
|
clear_notif
|
||||||
|
|
|
@ -13,7 +13,7 @@ source usb_gadget
|
||||||
USB_IF=/etc/network/interfaces.d/usb0
|
USB_IF=/etc/network/interfaces.d/usb0
|
||||||
|
|
||||||
# The USB mass storage backing store file or partition
|
# The USB mass storage backing store file or partition
|
||||||
BACKING_STORE_FILE=/sys/kernel/config/usb_gadget/FunKey/functions/mass_storage.mmcblk0p3/lun.0/file
|
BACKING_STORE_FILE=/sys/kernel/config/usb_gadget/FunKey/functions/mass_storage.mmcblk0p4/lun.0/file
|
||||||
|
|
||||||
# Unmount a local share
|
# Unmount a local share
|
||||||
unmount_share () {
|
unmount_share () {
|
||||||
|
@ -25,11 +25,11 @@ unmount_share () {
|
||||||
# Mount a share locally
|
# Mount a share locally
|
||||||
mount_share () {
|
mount_share () {
|
||||||
|
|
||||||
mount | grep -q /dev/mmcblk0p3
|
mount | grep -q /dev/mmcblk0p4
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
|
|
||||||
# Check if the FAT32 partition has been unmounted cleanly
|
# Check if the FAT32 partition has been unmounted cleanly
|
||||||
fsck.fat -n /dev/mmcblk0p3 2>/dev/null | egrep -q "Dirty bit"
|
fsck.fat -n /dev/mmcblk0p4 2>/dev/null | egrep -q "Dirty bit"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
|
|
||||||
# The FAT32 partition was not cleanly unmounted, try to
|
# The FAT32 partition was not cleanly unmounted, try to
|
||||||
|
@ -92,7 +92,7 @@ stop_share () {
|
||||||
start_share () {
|
start_share () {
|
||||||
|
|
||||||
# 1) Check if the backing store partition is already shared
|
# 1) Check if the backing store partition is already shared
|
||||||
cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p3 && die 12 "the backing store partition is already shared"
|
cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p4 && die 12 "the backing store partition is already shared"
|
||||||
|
|
||||||
# 2) Check if USB data is connected
|
# 2) Check if USB data is connected
|
||||||
is_usb_data_connected > /dev/null 2>&1 || die 13 "USB sharing impossible, not connected to a host"
|
is_usb_data_connected > /dev/null 2>&1 || die 13 "USB sharing impossible, not connected to a host"
|
||||||
|
@ -102,13 +102,13 @@ start_share () {
|
||||||
|
|
||||||
# 4) Everything is now clear to start sharing the backing store partition
|
# 4) Everything is now clear to start sharing the backing store partition
|
||||||
info "start sharing the backing store partition"
|
info "start sharing the backing store partition"
|
||||||
echo /dev/mmcblk0p3 > $BACKING_STORE_FILE || die 14 "cannot share the backing store partition"
|
echo /dev/mmcblk0p4 > $BACKING_STORE_FILE || die 14 "cannot share the backing store partition"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Return if currently sharing
|
# Return if currently sharing
|
||||||
is_share_started () {
|
is_share_started () {
|
||||||
|
|
||||||
cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p3
|
cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p4
|
||||||
local res=$?
|
local res=$?
|
||||||
if [ "$res" == "0" ]; then
|
if [ "$res" == "0" ]; then
|
||||||
echo "yes"
|
echo "yes"
|
||||||
|
|
|
@ -53,7 +53,7 @@ init_usb_gadget() {
|
||||||
mkdir ${GADGET}/configs/FunKey.1
|
mkdir ${GADGET}/configs/FunKey.1
|
||||||
mkdir ${GADGET}/configs/FunKey.1/strings/0x409
|
mkdir ${GADGET}/configs/FunKey.1/strings/0x409
|
||||||
test ${USBNET} -eq 1 && mkdir ${GADGET}/functions/rndis.usb0
|
test ${USBNET} -eq 1 && mkdir ${GADGET}/functions/rndis.usb0
|
||||||
mkdir ${GADGET}/functions/mass_storage.mmcblk0p3
|
mkdir ${GADGET}/functions/mass_storage.mmcblk0p4
|
||||||
|
|
||||||
# USB2
|
# USB2
|
||||||
echo "0x0200" > ${GADGET}/bcdUSB
|
echo "0x0200" > ${GADGET}/bcdUSB
|
||||||
|
@ -124,22 +124,22 @@ init_usb_gadget() {
|
||||||
# Mass Storage Function
|
# Mass Storage Function
|
||||||
|
|
||||||
# Backing Store file
|
# Backing Store file
|
||||||
#echo "/dev/mmcblk0p3" > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/file
|
#echo "/dev/mmcblk0p4" > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/file
|
||||||
|
|
||||||
# Gadget is not allowed to halt bulk endpoints
|
# Gadget is not allowed to halt bulk endpoints
|
||||||
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/stall
|
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p4/stall
|
||||||
|
|
||||||
# Do not simulate a CDROM
|
# Do not simulate a CDROM
|
||||||
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/cdrom
|
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/cdrom
|
||||||
|
|
||||||
# No SCSI Force Unit Access (FUA) to work in synchronous mode ?!?
|
# No SCSI Force Unit Access (FUA) to work in synchronous mode ?!?
|
||||||
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/nofua
|
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/nofua
|
||||||
|
|
||||||
# LUN is removable
|
# LUN is removable
|
||||||
echo 1 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/removable
|
echo 1 > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/removable
|
||||||
|
|
||||||
# Inquiry String
|
# Inquiry String
|
||||||
echo "FunKey S Shared Disk" > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/inquiry_string
|
echo "FunKey S Shared Disk" > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/inquiry_string
|
||||||
|
|
||||||
if [ ${USBNET} -eq 1 ]; then
|
if [ ${USBNET} -eq 1 ]; then
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ init_usb_gadget() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add the Mass Storage function to the FunKey.1 configuration
|
# Add the Mass Storage function to the FunKey.1 configuration
|
||||||
ln -s ${GADGET}/functions/mass_storage.mmcblk0p3 ${GADGET}/configs/FunKey.1
|
ln -s ${GADGET}/functions/mass_storage.mmcblk0p4 ${GADGET}/configs/FunKey.1
|
||||||
|
|
||||||
# Each interface specifies its own class code
|
# Each interface specifies its own class code
|
||||||
echo "0x00" > ${GADGET}/bDeviceClass
|
echo "0x00" > ${GADGET}/bDeviceClass
|
||||||
|
|
|
@ -9,7 +9,7 @@ root_mount=/tmp/rootfs
|
||||||
|
|
||||||
do_preinst()
|
do_preinst()
|
||||||
{
|
{
|
||||||
notif "1/6 Extract update"
|
notif "1/5 Extract update"
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,41 +17,30 @@ do_postinst()
|
||||||
{
|
{
|
||||||
local version
|
local version
|
||||||
|
|
||||||
notif "2/6 Resize root filesystem"
|
notif "2/5 Resize root filesystem"
|
||||||
resize2fs ${root_part}
|
resize2fs ${root_part}
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
notif "Cannot resize root filesystem"
|
notif "Cannot resize root filesystem"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
notif "3/6 Mount root filesystem"
|
notif "3/5 Mount root filesystem"
|
||||||
mkdir -p ${root_mount}
|
mkdir -p ${root_mount}
|
||||||
mount -t ext4 ${root_part} ${root_mount}
|
mount -t ext4 ${root_part} ${root_mount}
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
notif "Cannot mount root filesystem"
|
notif "Cannot mount root filesystem"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
notif "4/6 Create swap"
|
notif "4/5 Unmount root filesystem"
|
||||||
|
touch "${root_mount}/.first_boot"
|
||||||
# Create an empty 128MB /swap file, change its permissions and format it as swap
|
|
||||||
dd if=/dev/zero of=${root_mount}/swap bs=32M count=4 &&
|
|
||||||
chmod 0600 ${root_mount}/swap &&
|
|
||||||
mkswap ${root_mount}/swap
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
rm ${root_mount}/swap
|
|
||||||
umount ${root_mount}
|
|
||||||
notif "Cannot create swap file"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
for file in $(ls /mnt/FunKey-rootfs-*.swu); do
|
|
||||||
notif "5/6 Erase update file"
|
|
||||||
rm -f "${file}"
|
|
||||||
done
|
|
||||||
notif "6/6 Unmount root filesystem"
|
|
||||||
umount ${root_mount}
|
umount ${root_mount}
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
notif "Cannot unmount root filesystem"
|
notif "Cannot unmount root filesystem"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
for file in $(ls /mnt/FunKey-rootfs-*.swu); do
|
||||||
|
notif "5/5 Erase update file"
|
||||||
|
rm -f "${file}"
|
||||||
|
done
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,4 +7,4 @@ tmpfs /tmp tmpfs mode=1777 0 0
|
||||||
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
|
tmpfs /run tmpfs mode=0755,nosuid,nodev 0 0
|
||||||
sysfs /sys sysfs defaults 0 0
|
sysfs /sys sysfs defaults 0 0
|
||||||
configfs /sys/kernel/config configfs rw,relatime 0 0
|
configfs /sys/kernel/config configfs rw,relatime 0 0
|
||||||
/dev/mmcblk0p3 /mnt vfat rw,relatime,fmask=0022,dmask=0022,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
|
/dev/mmcblk0p4 /mnt vfat rw,relatime,fmask=0022,dmask=0022,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
|
||||||
|
|
|
@ -17,7 +17,7 @@ menu_display () {
|
||||||
0)
|
0)
|
||||||
|
|
||||||
# USB mount/unmount
|
# USB mount/unmount
|
||||||
mount | grep -q /dev/mmcblk0p3
|
mount | grep -q /dev/mmcblk0p4
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
message=" USB mount"
|
message=" USB mount"
|
||||||
else
|
else
|
||||||
|
@ -80,7 +80,7 @@ menu_run () {
|
||||||
0)
|
0)
|
||||||
|
|
||||||
# USB mount/unmount
|
# USB mount/unmount
|
||||||
mount | grep -q /dev/mmcblk0p3
|
mount | grep -q /dev/mmcblk0p4
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
notif "${message}..."
|
notif "${message}..."
|
||||||
share start
|
share start
|
||||||
|
@ -112,14 +112,14 @@ menu_run () {
|
||||||
1)
|
1)
|
||||||
|
|
||||||
# USB check
|
# USB check
|
||||||
mount | grep -q /dev/mmcblk0p3
|
mount | grep -q /dev/mmcblk0p4
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
notif "${message}..."
|
notif "${message}..."
|
||||||
umount /mnt >/dev/null 2>&1
|
umount /mnt >/dev/null 2>&1
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
notif "${message}...^Cannot check USB!"
|
notif "${message}...^Cannot check USB!"
|
||||||
fi
|
fi
|
||||||
fsck.fat -a -v -w /dev/mmcblk0p3
|
fsck.fat -a -v -w /dev/mmcblk0p4
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
notif "${message}...^Cannot check USB!"
|
notif "${message}...^Cannot check USB!"
|
||||||
fi
|
fi
|
||||||
|
@ -137,14 +137,14 @@ menu_run () {
|
||||||
2)
|
2)
|
||||||
|
|
||||||
# USB format
|
# USB format
|
||||||
mount | grep -q /dev/mmcblk0p3
|
mount | grep -q /dev/mmcblk0p4
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
notif "${message}...^Press A to confirm"
|
notif "${message}...^Press A to confirm"
|
||||||
while true; do
|
while true; do
|
||||||
case $(getkey) in
|
case $(getkey) in
|
||||||
1e0001|1e0002)
|
1e0001|1e0002)
|
||||||
umount /mnt &&
|
umount /mnt &&
|
||||||
mkfs.vfat /dev/mmcblk0p3 &&
|
mkfs.vfat /dev/mmcblk0p4 &&
|
||||||
mount /mnt
|
mount /mnt
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
notif "${message}...^Cannot format USB!"
|
notif "${message}...^Cannot format USB!"
|
||||||
|
@ -171,7 +171,7 @@ menu_run () {
|
||||||
3)
|
3)
|
||||||
|
|
||||||
# Network enable/disable
|
# Network enable/disable
|
||||||
mount | grep -q /dev/mmcblk0p3
|
mount | grep -q /dev/mmcblk0p4
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
if [ -e /mnt/usbnet ]; then
|
if [ -e /mnt/usbnet ]; then
|
||||||
rm -f /mnt/usbnet
|
rm -f /mnt/usbnet
|
||||||
|
@ -196,7 +196,7 @@ menu_run () {
|
||||||
5)
|
5)
|
||||||
|
|
||||||
# Factory tests enable/disable
|
# Factory tests enable/disable
|
||||||
mount | grep -q /dev/mmcblk0p3
|
mount | grep -q /dev/mmcblk0p4
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
if [ -e /mnt/.assembly_tests ]; then
|
if [ -e /mnt/.assembly_tests ]; then
|
||||||
rm -f /mnt/.assembly_tests
|
rm -f /mnt/.assembly_tests
|
||||||
|
|
|
@ -13,7 +13,7 @@ source usb_gadget
|
||||||
USB_IF=/etc/network/interfaces.d/usb0
|
USB_IF=/etc/network/interfaces.d/usb0
|
||||||
|
|
||||||
# The USB mass storage backing store file or partition
|
# The USB mass storage backing store file or partition
|
||||||
BACKING_STORE_FILE=/sys/kernel/config/usb_gadget/FunKey/functions/mass_storage.mmcblk0p3/lun.0/file
|
BACKING_STORE_FILE=/sys/kernel/config/usb_gadget/FunKey/functions/mass_storage.mmcblk0p4/lun.0/file
|
||||||
|
|
||||||
# Unmount a local share
|
# Unmount a local share
|
||||||
unmount_share () {
|
unmount_share () {
|
||||||
|
@ -25,11 +25,11 @@ unmount_share () {
|
||||||
# Mount a share locally
|
# Mount a share locally
|
||||||
mount_share () {
|
mount_share () {
|
||||||
|
|
||||||
mount | grep -q /dev/mmcblk0p3
|
mount | grep -q /dev/mmcblk0p4
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
|
|
||||||
# Check if the FAT32 partition has been unmounted cleanly
|
# Check if the FAT32 partition has been unmounted cleanly
|
||||||
fsck.fat -n /dev/mmcblk0p3 2>/dev/null | egrep -q "Dirty bit"
|
fsck.fat -n /dev/mmcblk0p4 2>/dev/null | egrep -q "Dirty bit"
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
|
|
||||||
# The FAT32 partition was not cleanly unmounted, try to
|
# The FAT32 partition was not cleanly unmounted, try to
|
||||||
|
@ -86,7 +86,7 @@ start_share () {
|
||||||
|
|
||||||
# 1) Check if the backing store partition is already shared
|
# 1) Check if the backing store partition is already shared
|
||||||
if [ -e $BACKING_STORE_FILE ]; then
|
if [ -e $BACKING_STORE_FILE ]; then
|
||||||
cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p3 && die 12 "the backing store partition is already shared"
|
cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p4 && die 12 "the backing store partition is already shared"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2) Check if USB data is connected
|
# 2) Check if USB data is connected
|
||||||
|
@ -97,7 +97,7 @@ start_share () {
|
||||||
|
|
||||||
# 4) Everything is now clear to start sharing the backing store partition
|
# 4) Everything is now clear to start sharing the backing store partition
|
||||||
info "start sharing the backing store partition"
|
info "start sharing the backing store partition"
|
||||||
echo /dev/mmcblk0p3 > $BACKING_STORE_FILE || die 14 "cannot share the backing store partition"
|
echo /dev/mmcblk0p4 > $BACKING_STORE_FILE || die 14 "cannot share the backing store partition"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Return if currently sharing
|
# Return if currently sharing
|
||||||
|
@ -107,7 +107,7 @@ is_share_started () {
|
||||||
echo "no"
|
echo "no"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p3
|
cat $BACKING_STORE_FILE | egrep -q ^/dev/mmcblk0p4
|
||||||
local res=$?
|
local res=$?
|
||||||
if [ "$res" == "0" ]; then
|
if [ "$res" == "0" ]; then
|
||||||
echo "yes"
|
echo "yes"
|
||||||
|
|
|
@ -52,7 +52,7 @@ init_usb_gadget() {
|
||||||
mkdir ${GADGET}/configs/FunKey.1
|
mkdir ${GADGET}/configs/FunKey.1
|
||||||
mkdir ${GADGET}/configs/FunKey.1/strings/0x409
|
mkdir ${GADGET}/configs/FunKey.1/strings/0x409
|
||||||
test ${USBNET} -eq 1 && mkdir ${GADGET}/functions/rndis.usb0
|
test ${USBNET} -eq 1 && mkdir ${GADGET}/functions/rndis.usb0
|
||||||
mkdir ${GADGET}/functions/mass_storage.mmcblk0p3
|
mkdir ${GADGET}/functions/mass_storage.mmcblk0p4
|
||||||
|
|
||||||
# USB2
|
# USB2
|
||||||
echo "0x0200" > ${GADGET}/bcdUSB
|
echo "0x0200" > ${GADGET}/bcdUSB
|
||||||
|
@ -123,22 +123,22 @@ init_usb_gadget() {
|
||||||
# Mass Storage Function
|
# Mass Storage Function
|
||||||
|
|
||||||
# Backing Store file
|
# Backing Store file
|
||||||
#echo "/dev/mmcblk0p3" > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/file
|
#echo "/dev/mmcblk0p4" > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/file
|
||||||
|
|
||||||
# Gadget is not allowed to halt bulk endpoints
|
# Gadget is not allowed to halt bulk endpoints
|
||||||
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/stall
|
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p4/stall
|
||||||
|
|
||||||
# Do not simulate a CDROM
|
# Do not simulate a CDROM
|
||||||
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/cdrom
|
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/cdrom
|
||||||
|
|
||||||
# No SCSI Force Unit Access (FUA) to work in synchronous mode ?!?
|
# No SCSI Force Unit Access (FUA) to work in synchronous mode ?!?
|
||||||
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/nofua
|
echo 0 > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/nofua
|
||||||
|
|
||||||
# LUN is removable
|
# LUN is removable
|
||||||
echo 1 > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/removable
|
echo 1 > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/removable
|
||||||
|
|
||||||
# Inquiry String
|
# Inquiry String
|
||||||
echo "FunKey S Shared Disk" > ${GADGET}/functions/mass_storage.mmcblk0p3/lun.0/inquiry_string
|
echo "FunKey S Shared Disk" > ${GADGET}/functions/mass_storage.mmcblk0p4/lun.0/inquiry_string
|
||||||
|
|
||||||
if [ ${USBNET} -eq 1 ]; then
|
if [ ${USBNET} -eq 1 ]; then
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ init_usb_gadget() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add the Mass Storage function to the FunKey.1 configuration
|
# Add the Mass Storage function to the FunKey.1 configuration
|
||||||
ln -s ${GADGET}/functions/mass_storage.mmcblk0p3 ${GADGET}/configs/FunKey.1
|
ln -s ${GADGET}/functions/mass_storage.mmcblk0p4 ${GADGET}/configs/FunKey.1
|
||||||
|
|
||||||
# Each interface specifies its own class code
|
# Each interface specifies its own class code
|
||||||
echo "0x00" > ${GADGET}/bDeviceClass
|
echo "0x00" > ${GADGET}/bDeviceClass
|
||||||
|
|
16
genimage.cfg
16
genimage.cfg
|
@ -45,13 +45,21 @@ image sdcard.img {
|
||||||
partition-type = 0x83
|
partition-type = 0x83
|
||||||
bootable = "yes"
|
bootable = "yes"
|
||||||
image = "FunKey/output/images/rootfs.ext4"
|
image = "FunKey/output/images/rootfs.ext4"
|
||||||
size = 100M
|
size = 100M # This will be resized to 1G during first boot
|
||||||
}
|
}
|
||||||
|
|
||||||
# partition share {
|
# These partitions will be created during first boot
|
||||||
# offset = 1G
|
# partition swap {
|
||||||
|
# offset = 1.01G
|
||||||
# partition-type = 0xC
|
# partition-type = 0xC
|
||||||
# bootable = "false"
|
# bootable = "false"
|
||||||
# size = 0
|
# size = 128M
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# partition share {
|
||||||
|
# offset = 1.138G
|
||||||
|
# partition-type = 0xC
|
||||||
|
# bootable = "false"
|
||||||
|
# size = 0 # Fill in the disk up to its full size
|
||||||
# }
|
# }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue