#!/bin/bash # $Header: /home/cvsd/magellan-cvs/magellan-src/installer/include/read_disk.sh,v 1.1 2008-09-24 10:54:00 niro Exp $ source hwdetection.sh # use C locale export LC_ALL=C nocdrom() { local i local item="$1" for i in ${ALL_CDROMS} do [[ ${i} = ${item} ]] && return 1 done return 0 } # converts partition id to filesystem name partition_id_2_fs_name() { local x="$1" local id local desc while read id desc do if [[ ${x} = ${id} ]] then echo "${desc}" return 0 fi done << EOF $(/sbin/sfdisk -T) EOF # if we get here the id is unkown echo "unkown" } query_partition_disk_setup() { local i local partition local filesystem local mountpoint local command="$1" local given_partition="$2" # #--overwrite for i in ${PARTITION_DISK_SETUP} do partition=$(echo ${i} | cut -d: -f1) filesystem=$(echo ${i} | cut -d: -f2) mountpoint=$(echo ${i} | cut -d: -f3) if [[ ${partition} = ${given_partition} ]] then case ${command} in --filesystem) echo "${filesystem}"; return 0;; --mountpoint) echo "${mountpoint}"; return 0;; --delete) export PARTITION_DISK_SETUP="${PARTITION_DISK_SETUP/${i}/}"; return 0;; esac fi done } #ALL_DISKS="$(get_hwinfo disk)" # exclude all ramdisks ALL_DISKS="$(get_hwinfo disk | sed '/\/dev\/ram[0-9].*/d' )" ALL_CDROMS="$(get_hwinfo cdrom)" for disk in ${ALL_DISKS} do # exclude cdroms nocdrom ${disk} || continue OLDIFS="$IFS" IFS=, echo "${disk}|${disk}" while read partition size id boot do # partition name partition="$(echo ${partition} | cut -d: -f1 | sed -e s:$'\t'::g -e s:\ ::g)" # size size="$(echo ${size} | sed -e s:size=::g -e s:\ ::g)" # id but converted id="$(echo ${id} | sed -e s:Id=::g -e s:\ ::g)" idname="$(IFS=${OLDIFS} partition_id_2_fs_name ${id})" # bootable flag boot="$(echo ${boot} | sed -e s:\ ::g -e s:bootable:b:g)" # # swap # if [[ ${id} = 82 ]] # then # mountpoint="swap" # format="swap" # export PARTITION_DISK_SETUP="${PARTITION_DISK_SETUP} ${disk}:swap:swap" # else # mountpoint, but detect any swap mountpoint="$(IFS=${OLDIFS} query_partition_disk_setup --mountpoint ${partition})" # filesystem to format format="$(IFS=${OLDIFS} query_partition_disk_setup --filesystem ${partition})" # fi echo -n "|${partition}" echo -n "|${size}" echo -n "|${idname}" echo -n "|${boot}" echo -n "|${mountpoint}" echo -n "|${format}" echo done << EOF $(${sudo} /sbin/sfdisk --dump ${disk} | sed '1,3d') EOF IFS="${OLDIFS}" done