arret disque dur avant l'arret du portable

arret disque dur avant l'arret du portable - Linux et OS Alternatifs

Marsh Posté le 16-04-2004 à 12:43:33    

J'ai un pb avec mon portable, le disque dur s'arrete en meme temps que s'arrete la machine et alors le disque dur parque les tetes en urgence, ce qui fait un bruit désagreable et aussi diminue sa durée de vie. J'ai une mandrake 10. Quelqu'un sait t'il comment faire ?

Reply

Marsh Posté le 16-04-2004 à 12:43:33   

Reply

Marsh Posté le 16-04-2004 à 12:58:50    

hdparm -Y ?


Message édité par Dark_Schneider le 16-04-2004 à 12:58:59

---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 16-04-2004 à 13:02:29    

J'ai deja poster sur linuxfr http://linuxfr.org/~fns158/11509.html j'ai eu un debut de reponse mais plus rien apres, c'est pourquoi je retente ma chance ici.

Reply

Marsh Posté le 16-04-2004 à 18:45:11    

personne ?

Reply

Marsh Posté le 19-04-2004 à 13:27:27    

Pas de reponse ?

Reply

Marsh Posté le 19-04-2004 à 13:47:20    

A propos du post sur Linuxfr, la solution semblait de rajouter un sync. Cette commande vide les buffers en écriture du système en procédant à l'écriture sur les disques. Ca permet ainsi d'être sûr qu'à ce moment là, tu n'auras plus à redémarrer ton disque pour inscrire des infos.
Tu peux mettre le contenu de ton fichier halt ?


Message édité par yannigperr le 19-04-2004 à 13:47:45
Reply

Marsh Posté le 19-04-2004 à 14:08:08    

#!/bin/bash
#
# halt          This file is executed by init when it goes into runlevel
#               0 (halt) or runlevel 6 (reboot). It kills all processes,
#               unmounts file systems and then either halts or reboots.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Damien Neil
#
 
NOLOCALE=1
. /etc/init.d/functions
 
runcmd() {
   echo -n "$1 "
   shift
   if [ "$BOOTUP" = "color" ]; then
      $* && echo_success || echo_failure
   else
      $*
   fi
   echo
}
 
halt_get_remaining() {
 awk '$2 ~ /^\/$|^\/proc|^\/dev/{next}
      $3 == "tmpfs" || $3 == "proc" {print $2 ; next}
      /(^#|loopfs|autofs|devfs|^none|^\/dev\/root)/ {next}
      {print $2}' /proc/mounts
}
 
# See how we were called.
case "$0" in
   *halt)
 message=`gprintf "Halting system..."`
 command="/sbin/halt"
 ;;
   *reboot)
 message=`gprintf "Please stand by while rebooting the system..."`
 command="/sbin/reboot"
 ;;
   *)
 gprintf "%s: call me as 'halt' or 'reboot' please!\n" $0
 exit 1
 ;;
esac
 
case "$1" in
   *start)
    ;;
   *)
 gprintf "Usage: %s\n" "$(basename $0) {start}"
 exit 1
 ;;
esac
 
# Recreate the /initrd if needed
if [ ! -d /initrd ]; then
    runcmd "Creating initrd directory" mkdir /initrd
fi
if [ -d /initrd -a ! -f /initrd/README.WARNING ]; then
    cat > /initrd/README.WARNING <<EOF
(mkinitrd) Don't remove this directory, it's needed at boot time,
in the initrd, to perform the pivot_root.
EOF
fi
 
# Kill all processes.
[ "${BASH+bash}" = bash ] && enable kill
 
runcmd "Sending all processes the TERM signal..." /sbin/killall5 -15
sleep 5
runcmd "Sending all processes the KILL signal..."  /sbin/killall5 -9
 
# Write to wtmp file before unmounting /var
/sbin/halt -w
 
# Sync the system clock.
ARC=0
SRM=0
UTC=0
 
if [ -f /etc/sysconfig/clock ]; then
   . /etc/sysconfig/clock
 
   # convert old style clock config to new values
   if [ "${CLOCKMODE}" = "GMT" ]; then
      UTC=true
   elif [ "${CLOCKMODE}" = "ARC" ]; then
      ARC=true
   fi
fi
 
CLOCKDEF=""
CLOCKFLAGS="$CLOCKFLAGS --systohc"
 
case "$UTC" in
   yes|true)
 CLOCKFLAGS="$CLOCKFLAGS -u";
 CLOCKDEF="$CLOCKDEF (utc)";
 ;;
   no|false)
 CLOCKFLAGS="$CLOCKFLAGS --localtime";
 CLOCKDEF="$CLOCKDEF (localtime)";
 ;;
esac
 
case "$ARC" in
   yes|true)
 CLOCKFLAGS="$CLOCKFLAGS -A";
 CLOCKDEF="$CLOCKDEF (arc)";
 ;;
esac
case "$SRM" in
   yes|true)
 CLOCKFLAGS="$CLOCKFLAGS -S";
 CLOCKDEF="$CLOCKDEF (srm)";
 ;;
esac
 
runcmd "Syncing hardware clock to system time" /sbin/hwclock $CLOCKFLAGS
 
# Turn off swap, then unmount file systems.
SWAPS=`awk '! /^Filename/ { print $1 }' /proc/swaps`
[ -n "$SWAPS" ] && runcmd "Turning off swap: " swapoff $SWAPS
 
[ -x /sbin/quotaoff ] && runcmd "Turning off quotas: " /sbin/quotaoff -aug
 
# first remove entry /initrd/loopfs as it can't be unmounted :(
mtab=$(fgrep -v "/initrd/loopfs[^/]" /etc/mtab)
(IFS= ; echo $mtab > /etc/mtab)
 
# Unmount file systems, killing processes if we have to.
# Unmount loopback stuff first
remaining=`awk '!/^#/ && $1 ~ /^\/dev\/loop/ && $2 != "/" {print $2}' /proc/mounts`
devremaining=`awk '!/^#/ && $1 ~ /^\/dev\/loop/ && $2 != "/" {print $1}' /proc/mounts`
[ -n "$remaining" ] && {
 sig=
 retry=3
 while [ -n "$remaining" -a "$retry" -gt 0 ]
 do
  if [ "$retry" -lt 3 ]; then
   runcmd "Unmounting loopback filesystems (retry):" umount $remaining
  else
   runcmd "Unmounting loopback filesystems: " umount $remaining
  fi
  for dev in $devremaining ; do
   losetup $dev > /dev/null 2>&1 && \
    runcmd "Detaching loopback device %s: " $dev losetup -d $dev
  done
  remaining=`awk '!/^#/ && $1 ~ /^\/dev\/loop/ && $2 != "/" {print $2}' /proc/mounts`
  devremaining=`awk '!/^#/ && $1 ~ /^\/dev\/loop/ && $2 != "/" {print $1}' /proc/mounts`
  [ -z "$remaining" ] && break
  /sbin/fuser -k -m $sig $remaining >/dev/null
  sleep 5
  retry=$(($retry -1))
  sig=-9
 done
}
 
sig=
retry=3
remaining=`halt_get_remaining | sort -r`
 
while [ -n "$remaining" -a "$retry" -gt 0 ]
do
 if [ "$retry" -lt 3 ]; then
  LC_ALL=C runcmd "Unmounting file systems (retry): "  umount -f $remaining
 else
  LC_ALL=C runcmd "Unmounting file systems: "  umount -f $remaining
 fi
 sleep 2
 remaining=`halt_get_remaining | sort -r`
 [ -z "$remaining" ] && break
 /sbin/fuser -k -m $sig $remaining >/dev/null
 sleep 5
 retry=$(($retry-1))
 sig=-9
done
 
if [ -f /etc/lvm/lvm.conf -a -x /sbin/lvm2 ]; then
 if grep -q -s 'device-mapper' /proc/devices; then
  _vgchange_cmd="/sbin/lvm2 vgchange -a n"
 fi
fi
 
if [ -z "${_vgscan_cmd}" -a -f /etc/lvmtab -a -e /proc/lvm ] ; then
 if [ -x /sbin/lvm1-vgchange ]; then
  _vgchange_cmd="/sbin/lvm1-vgchange -a n"
 elif [ -x /sbin/vgchange ]; then
  _vgchange_cmd="/sbin/vgchange -a n"
 fi
fi
 
if [ -n "${_vgchange_cmd}" ]; then
    runcmd "Shutting down LVM:" ${_vgchange_cmd}
fi
 
[ -f /proc/bus/usb/devices ] && umount /proc/bus/usb
 
# remove the crash indicator flag
rm -f /.autofsck
 
# Try them all, one last time.
umount -a -f -t nodevfs,noproc
 
# Remount read only anything that's left mounted.
#gprintf "Remounting remaining filesystems (if any) readonly\n"
mount | awk '/( \/ |^\/dev\/root)/ { print $3 }' | while read line; do
    mount -n -o ro,remount $line
done
 
runcmd "Unmounting proc file system: " umount /proc
 
 
# See if this is a powerfail situation.
if [ -f /etc/apcupsd/powerfail ]; then
  gprintf "APCUPSD will now power off the UPS!\n"
  echo
  /etc/apcupsd/apccontrol killpower
  echo
  gprintf "Please ensure that the UPS has powered off before rebooting\n"
  gprintf "Otherwise, the UPS may cut the power during the reboot!!!\n"
  echo
  sleep 120
  exit 1
fi
 
# for NUT
if [ -f /etc/init.d/upsd ]; then
    /etc/init.d/upsd powerdown
    [ $? == 3 ] && exit 1
fi
# Now halt or reboot.
echo "$message"
if [ -f /fastboot ]; then
 gprintf "On the next boot fsck will be skipped.\n"
elif [ -f /forcefsck ]; then
 gprintf "On the next boot fsck will be forced.\n"
fi
 
if [ -x /sbin/halt.local ]; then
   /sbin/halt.local
fi
 
HALTARGS="-i -d -p -h"
mount -n -t proc proc /proc
 
exec $command $HALTARGS

Reply

Marsh Posté le 19-04-2004 à 14:29:00    

Tu n'as qu'à rajouter un 'sync' juste avant la dernière ligne 'exec $command $HALTARGS'.
 
En gros, le -h de HALTARGS va te permettre de dire à chacun de tes disques de se mettre en veille juste avant l'arrêt. Si par malheur un te disques contenait encore des données à écrire, il faudrait qu'il soit reréveillé.

Reply

Marsh Posté le 19-04-2004 à 15:00:17    

je viens d'essayer et c'est toujours pareil arret puis redemarrage.
 
Edit : bon sa marche le dd s'arrete bien et ne redemarre pas, merci.


Message édité par fns158 le 19-04-2004 à 17:47:47
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed