home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # This script sets method "efi" for all fat16 partitions that have the boot
- # flag set.
-
- # Give the kernel a chance to create /proc/efi if appropriate.
- modprobe efivars >/dev/null 2>&1 || true
-
- if [ ! -d /proc/efi ] && [ ! -d /sys/firmware/efi ]; then
- > /var/lib/partman/efi
- else
- ARCH="$(archdetect)"
- case $ARCH in
- i386/mac|amd64/mac)
- # Intel Macs have an EFI partition, regardless of
- # whether we're currently booted using BIOS
- # compatibility or not (if we are, we won't be able to
- # talk to EFI directly).
- > /var/lib/partman/efi
- ;;
- *)
- rm -f /var/lib/partman/efi
- exit 0
- ;;
- esac
- fi
-
- . /lib/partman/definitions.sh
-
- for dev in /var/lib/partman/devices/*; do
- [ -d "$dev" ] || continue
- cd $dev
- partitions=
- open_dialog PARTITIONS
- while { read_line num id size type fs path name; [ "$id" ]; }; do
- if [ "$fs" = fat16 ]; then
- partitions="$partitions $id"
- elif [ "$fs" = fat32 ] && [ "$name" = "EFI System Partition" ]; then
- partitions="$partitions $id"
- fi
- done
- close_dialog
-
- for id in $partitions; do
- efi=no
- open_dialog GET_FLAGS $id
- while { read_line flag; [ "$flag" ]; }; do
- if [ "$flag" = boot ]; then
- efi=yes
- # can not break here
- fi
- done
- close_dialog
- if [ "$efi" = yes ]; then
- [ -d $id ] || mkdir $id
- echo efi >$id/method
- fi
- done
- done
-
-