Перейти к содержимому


Фотография

BMW NBT NBTEVO замена HDD (винчестера) (жесткого диска)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 94

#41 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 231 сообщений
  • ГородЧикаго

Отправлено 11 июля 2017 - 15:11

да, разбиваешь под qnx, создаешь директории, заливать ничего не надо
голова сама поставит на него пароль
карты и iba заливаются потом штатными методами

#42 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 11 июля 2017 - 15:19

да, разбиваешь под qnx, создаешь директории, заливать ничего не надо
голова сама поставит на него пароль
карты и iba заливаются потом штатными методами

понял, спасибо!

 

IBA это что такое?



#43 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 231 сообщений
  • ГородЧикаго

Отправлено 11 июля 2017 - 15:26

мультики



#44 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 11 июля 2017 - 15:37

мультики

в смысле мультимедиа контент?



#45 Busyman

Busyman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 320 сообщений
  • ГородBLR

Отправлено 11 июля 2017 - 16:15

Может проще в Минск его отправить ? Чем изучать столько талмутов ? :)

#46 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 11 июля 2017 - 18:26

Может проще в Минск его отправить ? Чем изучать столько талмутов ? :)

в Минск надо ещё доехать, + бесплатно мне вряд ли кто-то будет это делать. Да и хочется разобраться самому. Не получится - будем решать мб и с Минском.

Вы в Минске занимаетесь этой темой?



#47 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 231 сообщений
  • ГородЧикаго

Отправлено 11 июля 2017 - 18:46

Интерактивное Руководство Пользователя
По большому счёту его можно не загружать если им не пользоваться, но если хочется, можно сделать через E-Sys
Карту можно установить с USB

Вот содержимое файла который разбивает и форматирует диск и создаёт директории - то же самое под QNX надо будет сделать вручную (или даже подправив этот файл).

 

#!/bin/ksh

# ----------------------------------------------------------------------
#   Project    : Harman Car Multimedia System
#   Harman/becker Automotive Systems GmbH
#   All rights reserved
#
#   File      : HDD Management Script
#   Author    : SPreuss
#   Co-Author : HSauer
# ----------------------------------------------------------------------
MAC_ADDRESS=FFFFFFFFFFFF
BTMAC_ADDRESS=FFFFFFFFFFFF
NBT_SERIALNUMBER=FFFFFFFFFFFFFFFFFFFF
ADJINFO_READY=0
ADJBLOCK_JACINTO_TXT=NBT_AdjBlock_Jacinto.txt
JACINTO_HOST=hu-jacinto
FILE_ADJ_DATA=/net/$JACINTO_HOST/dev/fs0

NAND_FS="/fs/sda0"
REPOSITORY=$NAND_FS/repository/istep
export PATH=/boot/bin:/bin:/opt/sys/bin:$REPOSITORY/bin:$REPOSITORY/opt/sys/bin:.
export LD_LIBRARY_PATH=/boot/lib:/lib:/usr/lib:/opt/sys/lib:$REPOSITORY/lib:$REPOSITORY/usr/lib:$REPOSITORY/opt/sys/lib:.


CDIR=$PWD
VERSION=V1.2.1
CHKQNX6FS=chkqnx6fs
HDDSECURITY=hddsecurity
rRETVAL=0
QUIET=0

BLOCK_SIZE=1024
HDD_SIZE_80GB=78150744
DEF_DATA_80GB="177 /mnt/data ro 63831"
DEF_SHARE_80GB="178 /mnt/share rw 2048"
DEF_MEDIA_80GB="179 /mnt/quota/mm rw 10240"
DEF_DEBUG_80GB="180 /mnt/quota/sys rw 200"

DEF_DATA_200GB="177 /mnt/data ro 124683"
DEF_SHARE_200GB="178 /mnt/share rw 17260"
DEF_MEDIA_200GB="179 /mnt/quota/mm rw 47514"
DEF_DEBUG_200GB="180 /mnt/quota/sys rw 1324"

DOMAIN_DIRS="car conn hmi mm nav speech sys"

DEVICE=/dev/hd0

LOG=/dev/ser1
#LOG=/dev/console


if [[ ! -e $LOG ]]; then
   LOG=/dev/null
fi

cd ${0%/*}
export PATH=$PATH:$PWD
cd $CDIR

getDef()
{
   rNAME=$1
   
   if [[ $rNAME == data ]]; then
      echo $DEF_DATA
   elif [[ $rNAME == share ]]; then
      echo $DEF_SHARE
   elif [[ $rNAME == media ]]; then
      echo $DEF_MEDIA
   elif [[ $rNAME == debug ]]; then
      echo $DEF_DEBUG
   else
      echo
   fi
   
   return 0
}

getAdjInfo()
{
   #  return if adjust info is already known.
   if [[ $ADJINFO_READY -eq 1 ]]; then
      return 0
   fi
   
   ADJBLOCK_CONFIG=$ADJBLOCK_JACINTO_TXT
   if [[ -e /etc/$ADJBLOCK_JACINTO_TXT ]]; then
      ADJBLOCK_CONFIG=/etc/$ADJBLOCK_JACINTO_TXT
   else 
      if [[ -e /fs/sda0/opt/sys/etc/$ADJBLOCK_JACINTO_TXT ]]; then
         ADJBLOCK_CONFIG=/fs/sda0/opt/sys/etc/$ADJBLOCK_JACINTO_TXT
      else 
         if [[ -e /fs/sda0/opt/car/etc/$ADJBLOCK_JACINTO_TXT ]]; then
            ADJBLOCK_CONFIG=/fs/sda0/opt/car/etc/$ADJBLOCK_JACINTO_TXT
         else
            echo "ERROR: Could not find $ADJBLOCK_CONFIG at /etc, /fs/sda0/opt/sys/etc or /fs/sda0/opt/car/etc!"
            rSTAT=$((rSTAT + 2))
         fi
      fi
   fi

   if [[ $rSTAT -eq 0 ]]; then
      if [[ -e $FILE_ADJ_DATA ]]; then
         ADJINFO=$(adjinfo --device=$FILE_ADJ_DATA --config=$ADJBLOCK_CONFIG --get=E2P.Networking.Eth0MacAddr) && MAC_ADDRESS="${ADJINFO##E2P.Networking.Eth0MacAddr=*( )}"
          if [[ $? -eq 0 ]]; then
            if [[ ("$MAC_ADDRESS" == "$ADJINFO") || ("$MAC_ADDRESS" == "") || ("$MAC_ADDRESS" == "FFFFFFFFFFFF") || ("$MAC_ADDRESS" == "ffffffffffff") ]]; then
               echo "ERROR: Could not read MAC-Address from adjustblock. Please update the ajustblock!"
               rSTAT=$((rSTAT + 1))
            fi
         fi

         ADJINFO=$(adjinfo --device=$FILE_ADJ_DATA --config=$ADJBLOCK_CONFIG --get=E2P.Networking.Bt0Addr) && BTMAC_ADDRESS="${ADJINFO##E2P.Networking.Bt0Addr=*( )}"
          if [[ $? -eq 0 ]]; then
            if [[ ("$BTMAC_ADDRESS" == "$ADJINFO") || ("$BTMAC_ADDRESS" == "") || ("$BTMAC_ADDRESS" == "FFFFFFFFFFFF") || ("$BTMAC_ADDRESS" == "ffffffffffff") ]]; then
               echo "ERROR: Could not read BLMAC-Address from adjustblock. Please update the ajustblock!"
               rSTAT=$((rSTAT + 1))
            fi
         fi
         
         ADJINFO=$(adjinfo --device=$FILE_ADJ_DATA --config=$ADJBLOCK_CONFIG --get=E2P.ProdLogistic.SerialNo) && NBT_SERIALNUMBER="${ADJINFO##E2P.ProdLogistic.SerialNo=*( )}"
          if [[ $? -eq 0 ]]; then
            if [[ ("$NBT_SERIALNUMBER" == "$ADJINFO") || ("$NBT_SERIALNUMBER" == "") || ("$NBT_SERIALNUMBER" == "FFFFFFFFFFFF") || ("$NBT_SERIALNUMBER" == "ffffffffffff") ]]; then
               echo "ERROR: Could not read  serial number from adjustblock. Please update the ajustblock!"
               rSTAT=$((rSTAT + 1))
            fi
         fi
         
         if [[ $QUIET -eq 0 ]]; then
            echo "MAC_ADDRESS:      $MAC_ADDRESS"
            echo "BTMAC_ADDRESS:    $BTMAC_ADDRESS"
            echo "NBT_SERIALNUMBER: $NBT_SERIALNUMBER"
            ADJINFO_READY=1
         fi
      else
         if [[ -e /net/$JACINTO_HOST ]]; then
            echo "ERROR: No flash device $FILE_ADJ_DATA at jacinto available!"
         else
            echo "ERROR: No connection to jacinto /net/$JACINTO_HOST!"
         fi
         rSTAT=$((rSTAT + 1))
      fi
   fi
   return $rSTAT
}


kPartitionHdd()
{
   rSTAT=0
   rDEVICE=$1
   rSTART=1
   rEND=0
   shift
   echo "fdisk $rDEVICE delete -a"
   fdisk $rDEVICE delete -a || rSTAT=$((rSTAT + 1))
   while [[ $# -gt 0 ]]
   do
      rTYPE=$1
      rMP=$2
      rMODE=$3
      rSIZE=$4
      shift; shift; shift; shift
      rEND=$((rSTART + $rSIZE - 1))
      echo "fdisk $rDEVICE add -t $rTYPE -c $rSTART,$rEND"
      fdisk $rDEVICE add -t $rTYPE -c $rSTART,$rEND || rSTAT=$((rSTAT + 1))
      rSTART=$((rEND + 1))
   done
   fdisk $rDEVICE show || rSTAT=$((rSTAT + 1))
   mount -e $rDEVICE || rSTAT=$((rSTAT + 1))
   return $rSTAT
}

kFormatHdd()
{
   rBS=$BLOCK_SIZE
   rSTAT=0
   rDEVICE=$1
   shift
   while [[ $# -gt 0 ]]
   do
      rTYPE=$1
      rMP=$2
      rMODE=$3
      rSIZE=$4
      shift; shift; shift; shift
      echo "mkqnx6fs -q -b$rBS ${rDEVICE}t$rTYPE"
      mkqnx6fs -q -b$rBS ${rDEVICE}t$rTYPE || rSTAT=$((rSTAT + 1))
   done
   return $rSTAT
}

kMountHdd()
{
   rSTAT=0
   rDEVICE=$1
   shift
   while [[ $# -gt 0 ]]
   do
      rTYPE=$1
      rMP=$2
      rMODE=$3
      rSIZE=$4
      shift; shift; shift; shift
      
      if [[ -e $rMP ]]; then
         if [[ $QUIET -eq 0 ]]; then
            echo "INFO: mount point $rMP already exist!"
         fi
      else
         if [[ $QUIET -eq 0 ]]; then
            echo "mount -t qnx6 -o $rMODE ${rDEVICE}t$rTYPE $rMP"
         fi
         if [[ -e /dev/hd0t180 && -e /dev/hd0t179 && -e /dev/hd0t178 && -e /dev/hd0t177 ]]; then
            mount -t qnx6 -o $rMODE ${rDEVICE}t$rTYPE $rMP || rSTAT=$((rSTAT + 1))
         else
            echo "ERROR: Not all hdd partitions /dev/hd0t1xx could be found!"
            if [[ -e /net/$JACINTO_HOST ]]; then
               echo "Probably your hdd needs to be initalized."
               echo "Please set up your hdd by using the following command: "
               echo "create_hdd.sh -i"
            else
               echo "Probably your hdd is locked, but no adjust data to unlock the hdd is available."
               echo "The adjust block must have been flashed and"
               echo "qnet has to be established (see: /net/$JACINTO_HOST)."
            fi
            rSTAT=$((rSTAT + 1))
            exit $rSTAT
         fi
      fi
      
   done
   return $rSTAT
}

kUmountHdd()
{
   rSTAT=0
   rDEVICE=$1
   shift
   while [[ $# -gt 0 ]]
   do
      rTYPE=$1
      rMP=$2
      rMODE=$3
      rSIZE=$4
      shift; shift; shift; shift
      if [[ -e $rMP ]]; then
         if [[ $QUIET -eq 0 ]]; then
            echo "umount -f $rMP"
         fi
         umount -f $rMP || rSTAT=$((rSTAT + 1))
      else
         echo "WRANING: mountpoint $rMP not available"
      fi
   done
   return $rSTAT
}

kDirectoriesHdd()
{
   rSTAT=0
   rCURRDIR=$PWD
   rDEVICE=$1
   shift
   while [[ $# -gt 0 ]]
   do
      rTYPE=$1
      rMP=$2
      rMODE=$3
      rSIZE=$4
      shift; shift; shift; shift
      mount -u -o rw $rMP || rSTAT=$((rSTAT + 1))
      cd $rMP
      for rDIR in $DOMAIN_DIRS
      do
         if [[ $QUIET -eq 0 ]]; then
            echo "mkdir $rMP/$rDIR"
         fi
         mkdir -p $rDIR || rSTAT=$((rSTAT + 1))
      done      
      mount -u -o $rMODE $rMP || rSTAT=$((rSTAT + 1))
   done
   cd $rCURRDIR || rSTAT=$((rSTAT + 1))
   return $rSTAT
}

kCleanUp()
{
   rSTAT=0
   rCURRDIR=$PWD
   cd /dev/shmem
   rDEVICE=$1
   shift
   while [[ $# -gt 0 ]]
   do
      rTYPE=$1
      rMP=$2
      rMODE=$3
      rSIZE=$4
      shift; shift; shift; shift
      mount -u -o rw $rMP || rSTAT=$((rSTAT + 1))
      if [[ $QUIET -eq 0 ]]; then
         echo "deleting 'rm -rf $rMP/*' ..."
      fi
      rm -rf $rMP/* || rSTAT=$((rSTAT + 1))
      mount -u -o $rMODE $rMP || rSTAT=$((rSTAT + 1))
   done
   cd $rCURRDIR || rSTAT=$((rSTAT + 1))
   return $rSTAT
}

kHddSecurity()
{
   rSTAT=0
   rDEVICE=$1
   
   type $HDDSECURITY >/dev/null 2>&1
   if [ $? -eq 0 ] ; then
      $HDDSECURITY -v -m ${rDEVICE} || rSTAT=$((rSTAT + 1))
   else
      echo "WARNING: $HDDSECURITY not found!"
   fi
   return $rSTAT
}

kNoSecurity()
{
   rSTAT=0
   rDEVICE=$1
   type $HDDSECURITY >/dev/null 2>&1
   if [ $? -eq 0 ] ; then
      getAdjInfo   
      if [ $? -eq 0 ] ; then
         $HDDSECURITY -d $MAC_ADDRESS,$BTMAC_ADDRESS,$NBT_SERIALNUMBER -m ${rDEVICE} >/dev/console 2>&1 
         if [ $? -gt 1 ]; then
            # return value 1 is no password to delete. 
            rSTAT=$((rSTAT + 1))
         fi
      fi
   else
      echo "WARNING: $HDDSECURITY not found!"
   fi
   return $rSTAT
}

kSecurity()
{
   rSTAT=0
   rDEVICE=$1
   type $HDDSECURITY >/dev/null 2>&1
   if [ $? -eq 0 ] ; then
      getAdjInfo   
      if [ $? -eq 0 ] ; then
         $HDDSECURITY -s $MAC_ADDRESS,$BTMAC_ADDRESS,$NBT_SERIALNUMBER -m ${rDEVICE} >/dev/console 2>&1 
         if [ $? -gt 1 ]; then
            # return value 1 is no password to delete. 
            rSTAT=$((rSTAT + 1))
         fi
      fi
   else
      echo "WARNING: $HDDSECURITY not found!"
   fi
   return $rSTAT
}

kHddUnlock()
{
   rSTAT=0
   rDEVICE=$1
   
   type $HDDSECURITY >/dev/null 2>&1
   if [ $? -eq 0 ] ; then
      getAdjInfo   
      if [ $? -eq 0 ] ; then
         $HDDSECURITY -u $MAC_ADDRESS,$BTMAC_ADDRESS,$NBT_SERIALNUMBER -m ${rDEVICE} >/dev/console 2>&1 
         rSTAT=$((rSTAT + $?))
      fi
   else
      echo "WARNING: $HDDSECURITY not found!"
   fi
   return $rSTAT
}

kChkfs()
{
   rSTAT=0
   rDEVICE=$1
   shift
   
   while [[ $# -gt 0 ]]
   do
      rTYPE=$1
      rMP=$2
      rMODE=$3
      rSIZE=$4
      shift; shift; shift; shift
      $CHKQNX6FS -svv ${rDEVICE}t$rTYPE  || rSTAT=$((rSTAT + 1))
      $CHKQNX6FS -vv ${rDEVICE}t$rTYPE  || rSTAT=$((rSTAT + 1))
   done
   
   return $rSTAT
}

kHelp()
{
   echo "usage $0 [-i] [-c <command> [ -c <command> ] ...]"
   echo "-i initalize the HDD partitions: create partiton table, make filesystems and add domain directories."
   echo "-b <block size> block size in bytes used to format the hdd partition (default: 1024) 4kHDD should have a value of 4096"
   echo "-m mount all partitons"
   echo "-u umount all partitons"
   echo "-f check qnx6fs"
   echo "-p print hdd security status"
   echo "-d delete the hdd password"
   echo "-r clean up all writeable partitions"
   echo "-s set the hdd password"
   echo "-c <command>"
   echo "-q QUIET no messages exept errors."
   echo "commands:"
   echo "========="
   echo "partition:   create partiton table"
   echo "format:      make filesystems"
   echo "info:        info about partition definition"
   echo "mount:       mount filesystems"
   echo "umount:      umount filesystems"
   echo "hddsecurity: print hdd security status"
   echo "unlock:      unlock the hdd"
   echo "secure:      set the hdd password"
   echo "nosecure:    delete the hdd password"
   echo "directories: make domain directories on certain filesystems"
   echo "cleanup:     removes content in the writeable partitions: "
   echo "chkfs:       checks the qnx6 file system"
   echo "help:        print this help screen"
   echo "Commands are executed in the order specified on the command line."
   echo "Example: $0 -c partition -c format -c mount -c directories"
   echo
}

COMMANDLIST=""

# if there are no arguments
if [[ $# -lt 1 ]] ; then
   kHelp
   exit 0
fi

# parse command line
while getopts "b:fumic:hsdpqr" OPTION
do
   case $OPTION in
      b)
         BLOCK_SIZE=$OPTARG
         ;;
      f)
         COMMANDLIST="umount unlock hddsecurity chkfs mount"
         ;;
      i)
         COMMANDLIST="umount unlock partition format mount directories"
         ;;
      c)
         COMMANDLIST="$COMMANDLIST $OPTARG"
         ;;
      u)
         COMMANDLIST="umount"
         ;;
      m)
         COMMANDLIST="unlock mount"
         ;;
      p)
         COMMANDLIST="hddsecurity"
         ;;
      d)
         COMMANDLIST="unlock nosecure"
         ;;
      s)
         COMMANDLIST="secure"
         ;;
      r)
         COMMANDLIST="cleanup directories"
         ;;
      q)
         QUIET=1
         ;;
      h | *)
         kHelp
         exit 0
         ;;
   esac
done

# preset the partition sizes to 80GB hdd as fallback
DEF_DATA=$DEF_DATA_80GB
DEF_SHARE=$DEF_SHARE_80GB
DEF_MEDIA=$DEF_MEDIA_80GB
DEF_DEBUG=$DEF_DEBUG_80GB

# check size of $DEVICE
DF_OUTP=`df -k ${DEVICE}`

CUT_FRONT=${DF_OUTP#* }
CUT_BACK=`echo ${CUT_FRONT%%%* }`
HDD_SIZE=`echo ${CUT_BACK% * * *}`

if [[ $QUIET -eq 0 ]]; then
   echo "HDD size: ${HDD_SIZE} [kb]"
fi

if [[ ${HDD_SIZE} -gt ${HDD_SIZE_80GB} ]]
then
   DEF_DATA=$DEF_DATA_200GB
   DEF_SHARE=$DEF_SHARE_200GB
   DEF_MEDIA=$DEF_MEDIA_200GB
   DEF_DEBUG=$DEF_DEBUG_200GB
fi

if [[ $QUIET -eq 0 ]]; then
   echo "-------------------------"
   echo "$0 $VERSION"
   echo "-------------------------"
fi

for COMMAND in $COMMANDLIST
do
   if [[ $COMMAND == partition ]]; then
      kPartitionHdd $DEVICE $DEF_DATA $DEF_SHARE $DEF_MEDIA $DEF_DEBUG
      rRETVAL=$((rRETVAL + $?))
   fi
   
   if [[ $COMMAND == format* ]]; then
      if [[ $COMMAND > format ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ ! -z $def ]]; then
            kFormatHdd $DEVICE $def
            rRETVAL=$((rRETVAL + $?))
         fi
      else
         kFormatHdd $DEVICE $DEF_DATA $DEF_SHARE $DEF_MEDIA $DEF_DEBUG
         rRETVAL=$((rRETVAL + $?))
      fi
   fi
   
   if [[ $COMMAND == info* ]]; then
      if [[ $COMMAND > info ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ ! -z $def ]]; then
            echo $def
            rRETVAL=$((rRETVAL + $?))
         else
            echo "info not found ..."
            rRETVAL=1
         fi
      else   
         def_data=`getDef data`
         def_share=`getDef share`
         def_media=`getDef media`
         def_debug=`getDef debug`
         if [[ ! -z def_data ]] && [[ ! -z def_share ]] && [[ ! -z def_media ]] && [[ ! -z def_debug ]]; then
            echo $def_data
            echo $def_share
            echo $def_media
            echo $def_debug
         else
            echo "info not found ..."
            rRETVAL=1
         fi	
      fi
   fi

   if [[ $COMMAND == mount* ]]; then
      if [[ $COMMAND > mount ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ ! -z $def ]]; then
            kMountHdd $DEVICE $def
            rRETVAL=$((rRETVAL + $?))
         fi
      else      
         kMountHdd $DEVICE $DEF_DATA $DEF_SHARE $DEF_MEDIA $DEF_DEBUG
         rRETVAL=$((rRETVAL + $?))
      fi
   fi

   if [[ $COMMAND == umount* ]]; then
      if [[ $COMMAND > umount ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ ! -z $def ]]; then
            kUmountHdd $DEVICE $def
            rRETVAL=$((rRETVAL + $?))
         fi
      else      
         kUmountHdd $DEVICE $DEF_DATA $DEF_SHARE $DEF_MEDIA $DEF_DEBUG
         rRETVAL=$((rRETVAL + $?))
      fi
   fi

   if [[ $COMMAND == hddsecurity* ]]; then
      if [[ $COMMAND > hddsecurity ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ ! -z $def ]]; then
            kHddSecurity $DEVICE $def
            rRETVAL=$((rRETVAL + $?))
         fi
      else      
         kHddSecurity $DEVICE
         rRETVAL=$((rRETVAL + $?))
      fi
   fi

   if [[ $COMMAND == nosecure* ]]; then
      if [[ $COMMAND > nosecure ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ -z $def ]]; then
            rRETVAL=$((rRETVAL + 1))
            echo "ERROR: Wrong paraneters '$def'"
         fi
      else      
         kNoSecurity $DEVICE
         rRETVAL=$((rRETVAL + $?))
      fi
   fi

   if [[ $COMMAND == secure* ]]; then
      if [[ $COMMAND > secure ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ -z $def ]]; then
            rRETVAL=$((rRETVAL + 1))
            echo "ERROR: Wrong paraneters '$def'"
         fi
      else      
         kSecurity $DEVICE
         rRETVAL=$((rRETVAL + $?))
      fi
   fi

   if [[ $COMMAND == unlock* ]]; then
      if [[ $COMMAND > unlock ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ ! -z $def ]]; then
            rRETVAL=$((rRETVAL + 1))
            echo "ERROR: Wrong paraneters '$def'"
         fi
      else      
         kHddUnlock $DEVICE
         if [ $? -gt 1 ]; then
            # return value 1 is no password to unlock. 
            rRETVAL=$((rRETVAL + $?))
         fi
      fi
   fi

   if [[ $COMMAND == chkfs* ]]; then
      if [[ $COMMAND > chkfs ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ ! -z $def ]]; then
            kChkfs $DEVICE $def
            rRETVAL=$((rRETVAL + $?))
         fi
      else      
         kChkfs $DEVICE $DEF_DATA $DEF_SHARE $DEF_MEDIA $DEF_DEBUG
         rRETVAL=$((rRETVAL + $?))
      fi
   fi

   if [[ $COMMAND == directories* ]]; then
      if [[ $COMMAND > directories ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ $def == $DEF_DATA ]] || [[ $def == $DEF_SHARE ]];then
            kDirectoriesHdd $DEVICE $def
            rRETVAL=$((rRETVAL + $?))
         fi
      else            
         kDirectoriesHdd $DEVICE $DEF_DATA $DEF_SHARE
         rRETVAL=$((rRETVAL + $?))
      fi
   fi

   if [[ $COMMAND == cleanup* ]]; then
      if [[ $COMMAND > cleanup ]]; then
         def=`getDef ${COMMAND#*_}`
         if [[ $def == $DEF_MEDIA ]] || [[ $def == $DEF_SHARE ]] || [[ $def == $DEF_DEBUG ]];then
            kCleanUp $DEVICE $def
            rRETVAL=$((rRETVAL + $?))
         fi
      else            
         kCleanUp $DEVICE $DEF_SHARE $DEF_MEDIA $DEF_DEBUG
         rRETVAL=$((rRETVAL + $?))
      fi
   fi

   if [[ $COMMAND == help ]]; then
      kHelp
   fi
   
   if [[ $rRETVAL -ne 0 ]]; then
      echo "ERROR: $0 failed returnval=$rRETVAL!"
      exit $rRETVAL
   fi
done

if [[ $QUIET -eq 0 ]]; then
   echo "SUCCESS: $0 finished!"
fi



#48 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 19 июля 2017 - 16:24

Закинул я текст скрипта в файл 1.sh. дальше закинул файл скрипта в виртуальную машину с qnx. Подключил пустой диск. Запускаю скрипт командой ksh 1.sh. На что qnx выдает следующие сообщения. Подскажите, пожалуйста, что я делаю не так?

Прикрепленные файлы

  • Прикрепленный файл  1.png   51,8К   5 Количество загрузок:


#49 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 231 сообщений
  • ГородЧикаго

Отправлено 19 июля 2017 - 21:54

Виртуалка может неверно показывать цилиндры жесткого диска, что может привести к неправильной разметке, лучше разбивать на голом железе.
Но ошибка - ошибка синтаксиса файла. Концы строк в файле Unix или Windows? Если редактировал в Notepad, возможно концы строк поломаны. Надо записывать через notepad++ или использовать dos2unix. Файл можно запускать без указания шелла если сначала сделать chmod +x 1.sh

#50 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 20 июля 2017 - 18:18

Виртуалка может неверно показывать цилиндры жесткого диска, что может привести к неправильной разметке, лучше разбивать на голом железе.
Но ошибка - ошибка синтаксиса файла. Концы строк в файле Unix или Windows? Если редактировал в Notepad, возможно концы строк поломаны. Надо записывать через notepad++ или использовать dos2unix. Файл можно запускать без указания шелла если сначала сделать chmod +x 1.sh

Спасибо за то, что подсказали про кодировки. Открыл сайт под qnx, скопировал текст скрипта. Скрипт стал запускаться. Подправил значение диска который надо форматировать, но при запуске его с ключем –i выдает следующее сообщение

 

WRANING: mountpoint /mnt/data not available

WRANING: mountpoint /mnt/share not available

WRANING: mountpoint /mnt/quota/mm not available

WRANING: mountpoint /mnt/quota/sys not available

WARNING: hddsecurity not found!

fdisk /dev/hd1 delete -a

3.sh[697]: fdisk: cannot execute - No such file or directory

fdisk /dev/hd1 add -t 177 -c 1,63831

3.sh[697]: fdisk: cannot execute - No such file or directory

fdisk /dev/hd1 add -t 178 -c 63832,65879

3.sh[697]: fdisk: cannot execute - No such file or directory

fdisk /dev/hd1 add -t 179 -c 65880,76119

3.sh[697]: fdisk: cannot execute - No such file or directory

fdisk /dev/hd1 add -t 180 -c 76120,76319

3.sh[697]: fdisk: cannot execute - No such file or directory

3.sh[697]: fdisk: cannot execute - No such file or directory

ERROR: 3.sh failed returnval=6!

 

При попытке выполнить команду  fdisk /dev/hd1 add -t 177 -c 1,63831 вручную выдает. 

fdisk: End cylinder is greater than total number of cylinders.

Я установил параметры в скрипте для всех двух дисков (80 и 200 гигов) равными как для 80-ки. Так как мой тестовый диск 160 гигов. Но утилита говорит что у меня нет столько цилиндров для создания диска. Если запустить fdisk /dev/hd1. Выдает что и вправду у меня столько цилиндров нет.

Прикрепленный файл  12.png   67,42К   1 Количество загрузок:

Но если запустить диагностическую утилиту в винде для этого диска то выдает следующее.

Прикрепленный файл  123.png   87,12К   0 Количество загрузок:

А тут число цилиндров верное. Грешил на виртуальную машину. Но сегодня собрал компьютер. Установил на него qnx и получил такой же результат.

Подскажите пожалуйста в чем может быть проблема?



#51 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 231 сообщений
  • ГородЧикаго

Отправлено 21 июля 2017 - 00:13

Надо внимательно читать скрипт. Директории создаются последними.
Сначала через fdisk разбить диск (количество цилиндров совпадать не будет, их надо пересчитать исходя из размера разделов). 
Потом отформатировать (команды в файле)
Потом скриптом создать директории.

hddsecurity нужно только чтобы разблокировать диск, который уже побывал в голове. С новым диском для оживления головы команды hddsecurity можно просто откомментировать.

Не обязательно исполнять скрипт. Надо просто понять как работает каждая из нужных команд (последовательность я привел) и сделать нужное действие руками.
При разбивке fdisk'ом важно ввести правильные номера разделов.


  • Sergey Sergunin это нравится

#52 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 24 июля 2017 - 13:43

Здравствуйте. Стал вычислять размер в цилиндрах дисков.

Возьмем например /dev/hd0t180. Его размер в инструкции равен 1355760 блоков. Размер блока равен 1024 байта. Размер блока неразмеченного диска равен 512 байт. Соответсенно чтобы получить размер в блоках для нового диска мы 1355760*1024/512=2711520 блока. Новый диск имеет следующие параметры. 255 головок, 63 сектора на дорожку. Соответственно Размер диска в цилиндрах для нового диска =2711520/(63*255)= 168,784. Но размер диска в цилиндрах задается только целыми значениями. И поэтому я не могу добиться точного соответсвия размеров дисков.

Как мне быть ? Воспримит ли машина не точный размер диска корректно ? Пока я тренеруюсь на диске в 160 Гб.

Cпасибо



#53 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 231 сообщений
  • ГородЧикаго

Отправлено 24 июля 2017 - 17:04

Количество цилиндров родного диска скорее всего не совпадет с количеством нового - у меня было и больше и меньше, для этого надо пересчитывать размеры в ручную. 
Почитать можно тут
https://en.wikipedia...der-head-sector

http://www.qnx.com/d.../devb-ahci.html
http://www.qnx.com/d...es/f/fdisk.html



#54 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 25 июля 2017 - 11:27

Количество цилиндров родного диска скорее всего не совпадет с количеством нового - у меня было и больше и меньше, для этого надо пересчитывать размеры в ручную. 
Почитать можно тут
https://en.wikipedia...der-head-sector

http://www.qnx.com/d.../devb-ahci.html
http://www.qnx.com/d...es/f/fdisk.html

 

Количество цилиндров имеет значение только для общего объема диска. Все диски
что я просматривал имеют одни и те же характеристики. 255 головок, 63 сектора/дорожка и 512
байт/сектор. И эти характеристики были и у 160Гб, и 320Гб и 500Гб 3,5 дюйма и нового 500Гб 2,5
дюйма. QNX определил у всех этих дисков одни и те же характеристики. Отличалось только
количество цилиндров. Проверял и на виртуальной машине и на стационарном компьютере. Для
примера возьмем мой диск на 500 Гб. Вот что выдает QNX
Прикрепленный файл  1.png   16,44К   2 Количество загрузок:

Размер жесткого диска  = Кол-во головок* кол-во*секторов на дорожку*кол-во байт на сектор * кол-во цилиндров. Если произвести вычисления по приведенной форуме то мы получим 255*63*60801*512=500105249280. Это размер диска в байтах. Делим на 1024 чтобы получить размер диска в килобайтах и еще раз на 1024 чтобы получить размер в мегабайтах и получаем 476937,53173828125 Мб. Собственно столько система и показывает. Значит вычисления верны. Но если вернуться к нашим баранам  проделать вычисления по этой же формуле, но искать количество цилиндров мы получаем дробное число. И размер диска никак не будет идентичен тому что написано тут. И это не зависит  от объема диска и количества цилиндров. Так как количество цилиндров влияет только на конечный объем жесткого диска. А размер одного цилиндра у всех дисков одинаков, так как Размер цилиндра =Кол-во головок* кол-во*секторов на дорожку*кол-во байт на сектор. Вот собственно из всего этого вопрос. Не может быть все же ошибки в объеме? или все же объем диска может немного отличаться от оригинала? Или qnx неправильно определяет параметры дисков? В любом случае в своих системах я не могу задать точный размер  диска. Так как размер задается в цилиндрах. А искомый размер находится между двумя значениями, а дробных значений не бывает.

 


#55 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 231 сообщений
  • ГородЧикаго

Отправлено 26 июля 2017 - 03:47

тебя очень беспокоит что потеряешь меньше килобайта дискового пространства из-за неполного цилиндра?



#56 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 26 июля 2017 - 10:43

тебя очень беспокоит что потеряешь меньше килобайта дискового пространства из-за неполного цилиндра?


Меня беспокоит:
1) примет ли машина диск с размером разделов не 1 в 1.
2) если примет, то в какую сторону лучше округлять размер разделов? В большую либо в меньшую?

#57 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 28 июля 2017 - 01:13

Может быть вопросы кажутся банальными, но мы это проходим впервые.

Вы уж помогите. Других источников информации у нас нет(

Спасибо



#58 2real4u

2real4u

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 1 231 сообщений
  • ГородЧикаго

Отправлено 28 июля 2017 - 01:36

1) Примет
2) В большую. Можно и в меньшую, но главное чтобы поместились данные.

Я не так давно спас EVO ID5 заменив утонувший родной винт на 500Гб Самсунг. 

Залог успеха - атрибуты S.M.A.R.T. NBT к ним более придирчив, чем EVO. Если NBT будет не хватать каких-то атрибутов, либо значения атрибутов его не устроят, диск будет отваливаться каждые 5 секунд. Это легко увидеть включив встроенный http сервер и internal trace - в логах будет видно что диск отваливается.



#59 few

few

    Пользователь

  • Пользователи
  • PipPip
  • 27 сообщений
  • ГородБрест

Отправлено 28 июля 2017 - 20:03

Сделали всё, поставили в голову. Нифига не заработало.
Каким образом можно проверить видит он веник или нет?
Мультимедиа кроме аукса так и не видит, нави нет. Запрос свободного места - висит ожидание и всё.
Месяц мучались а толку ноль :(((
Что ещё можно попробовать?
Спасибо

#60 The CaT

The CaT

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 153 сообщений

Отправлено 28 июля 2017 - 21:11

Сделали всё, поставили в голову. Нифига не заработало.
Каким образом можно проверить видит он веник или нет?
Мультимедиа кроме аукса так и не видит, нави нет. Запрос свободного места - висит ожидание и всё.
Месяц мучались а толку ноль :(((
Что ещё можно попробовать?
Спасибо

 

Для начала неплохо бы прочитать ошибки. Может он просто в сейф-моде висит






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных