PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Uggy : Monter une image disque (.img) contenant plusieurs partitions

mercredi 8 mai 2013 à 23:35

Le RaspberryPi nécessite 2 partitions et les OS sont généralement founis en .img

J'avais besoin de comparer certains fichiers entre mon installation Rasbian et la distribution Raspbmc.

Je télécharge donc raspbmc-final.img sur mon laptop puis:

$ mkdir mount
$ sudo fdisk -l raspbmc-final.img

Disk raspbmc-final.img: 1363 MB, 1363148800 bytes
4 heads, 32 sectors/track, 20800 cylinders, total 2662400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d692e

Device Boot Start End Blocks Id System
raspbmc-final.img1 4096 147455 71680 c W95 FAT32 (LBA)
raspbmc-final.img2 151552 2662399 1255424 83 Linux

Si on veut monter la 1ère partition qui démarre au sector 4096, l'offset à utiliser est donc 512x4096=2097152

$ sudo mount -o loop,offset=2097152 raspbmc-final.img mount/
$ cat mount/cmdline.txt
dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootfstype=ext4 noatime quiet rootwait loglevel=1 zram.num_devices=2
$ sudo umount mount/

Si on veut monter la 2ème partition qui démarre au sector 151552, l'offset à utiliser est donc 512x151552=77594624

$ sudo mount -o loop,offset=77594624 raspbmc-final.img mount/
$ cat mount/etc/hostname
raspbmc
$ sudo umount mount/

man fdisk
[...] starting offset and the size of each partition is stored in two ways: as an absolute number of sectors [...]

man mount
[...] mount knows about four options, namely loop, offset, sizelimit and encryption [...]



[Edit:] Tassatux m'indique dans le commentaires que kpartx est créé a cet effet:

This tool, derived from util-linux' partx, reads partition tables on specified device and create device maps over partitions segments detected. It is called from hotplug upon device maps creation and deletion.

Voir les commentaires pour les informations supplémentaires.

Gravatar de Uggy
Original post of Uggy.Votez pour ce billet sur Planet Libre.

bazzanella : Ecrire vers un fichier distant

mercredi 8 mai 2013 à 23:01

Vous souhaitez écrire le contenu d’une variable contenant des double-quotes dans un fichier distant.

Vous avez une variable contenant des doubles quotes (« ) :

chaine="Bonjour \\"$LOGNAME\\" et bienvenue"
  1. chaine="Bonjour \\"$LOGNAME\\" et bienvenue"

le résultat d’affichage étant :
Bonjour "martin" et bienvenue

Vous souhaitez donc conserver les doubles quotes entourant votre login martin et écrire ce résultat dans un fichier distant :

ssh -p 22 -i /home/user1/.ssh/id_dsa user1@remoteserver "echo '$chaine' > /home/user1/file1.txt"
  1. ssh -p 22 -i /home/user1/.ssh/id_dsa user1@remoteserver "echo '$chaine' > /home/user1/file1.txt"

ou plus pratiquement en écrivant une fonction :

function write_var_to_remotefile () {
local var_param="${1}"
local remotepathfile_param="${2}"

if [ -z ${var_param} ]; then
  echo "write_var_to_remotefile : Argument 1 non fourni"
  exit 1;
fi

if [ -z ${remotepathfile_param} ]; then
  echo "write_var_to_remotefile : Argument 2 non fourni"
  exit 1;
fi

if [ -z ${PORT} ]; then
  echo "write_var_to_remotefile : Global variable PORT non fourni"
  exit 1;
fi

if [ -z ${PATHPRIVKEY} ]; then
  echo "write_var_to_remotefile : Global variable PATHPRIVKEY non fourni"
  exit 1;
fi

if [ -z ${REMOTESERVER} ]; then
  echo "write_var_to_remotefile : Global variable REMOTESERVER non fourni"
  exit 1;
fi

if [ -z ${REMOTEUSER} ]; then
  echo "write_var_to_remotefile : Global variable REMOTEUSER non fourni"
  exit 1;
fi

/usr/bin/ssh -p ${PORT} -i ${PATHPRIVKEY} ${REMOTEUSER}@${REMOTESERVER} "echo '${var_param}' > ${remotepathfile_param}"
}
  1. function write_var_to_remotefile () {
  2. local var_param="${1}"
  3. local remotepathfile_param="${2}"
  4.  
  5. if [ -z ${var_param} ]; then
  6.   echo "write_var_to_remotefile : Argument 1 non fourni"
  7.   exit 1;
  8. fi
  9.  
  10. if [ -z ${remotepathfile_param} ]; then
  11.   echo "write_var_to_remotefile : Argument 2 non fourni"
  12.   exit 1;
  13. fi
  14.  
  15. if [ -z ${PORT} ]; then
  16.   echo "write_var_to_remotefile : Global variable PORT non fourni"
  17.   exit 1;
  18. fi
  19.  
  20. if [ -z ${PATHPRIVKEY} ]; then
  21.   echo "write_var_to_remotefile : Global variable PATHPRIVKEY non fourni"
  22.   exit 1;
  23. fi
  24.  
  25. if [ -z ${REMOTESERVER} ]; then
  26.   echo "write_var_to_remotefile : Global variable REMOTESERVER non fourni"
  27.   exit 1;
  28. fi
  29.  
  30. if [ -z ${REMOTEUSER} ]; then
  31.   echo "write_var_to_remotefile : Global variable REMOTEUSER non fourni"
  32.   exit 1;
  33. fi
  34.  
  35. /usr/bin/ssh -p ${PORT} -i ${PATHPRIVKEY} ${REMOTEUSER}@${REMOTESERVER} "echo '${var_param}' > ${remotepathfile_param}"
  36. }

Gravatar de bazzanella
Original post of bazzanella.Votez pour ce billet sur Planet Libre.

Articles similaires

bazzanella : Fonctions BASH

mercredi 8 mai 2013 à 18:33

Vous pouvez améliorer vos scripts shell en bash en leur intégrant des fonctions.

Une fonction bash vous permet de ne pas répéter un bout de code dans votre programme. Vous pouvez également grouper vos fonctions dans des fichiers de bibliothèques via la directive source :

#!/bin/bash

source CheminDeVotreBibliotheque
…
  1. #!/bin/bash
  2.  
  3. source CheminDeVotreBibliotheque

Exemple de fonction bash :

#!/bin/bash

# Licence GPL
# Copyleft 2005 Thierry Bazzanella

function OuiNon {
local qst def rep
qst="${1:-'Oui ou Non ? '}"
def="${2}"
while :
do
read -p "${qst}" rep || exit 1
case "$(echo "${rep:-$def}" | tr '[a-z]' '[A-Z]')" in
O|OUI|Y|YES) return 0 ;;
N|NON|NO) return 1 ;;
"" ) : ;;
*) echo "Reponse invalide: ${rep}" ;;
esac
done
}

# avec un parametre
function tafonction {
echo "${1} Visiteur !"
return 7 # de 0 a 255 max
}

# Appel de ta fonction
tafonction "Coucou"
#Recuperation d'un code de retour de tafonction:
# doit etre declaree de suite apres l'appel de tafonction
CODERETOUR_TAFONCTION=$( echo $? )
VALEURRETOUR_TAFONCTION=$( tafonction "et bien" )

#Recuperation de la valeur du parametre
# Retourne par tafonction
# dans ton programme principal:
echo "Une autre valeur de retour est : $VALEURRETOUR_TAFONCTION"
echo "Le code de retour est $CODERETOUR_TAFONCTION"
# Avec echo cequetuveux dans tafonction te permet de recuperer
# une valeur quelconque sur l'entree standard
# Par contre le return 7 te permet de recuperer un code de retour numerique

# tu peux donc avec ces elements faire une fonction OuiNon de ton code
# et declarer le code de cette fonction une seule fois au debut
# de ton programme et l'appeler autant de fois que necessaire.

if OuiNon "Etes-vous favorable a l'utilisation des fonctions ? votre reponse => " Oui
then echo "OK, vous etes favorable. Vous gagnerez en efficacite"
else echo "Ok, vous n'etes pas favorable. Bonjour la maintenance du code !"
fi

if OuiNon "Etes-vous favorable a l'utilisation de GNU/Linux ? votre reponse => " Oui
then echo "OK, vous etes favorable. Vous gagnerez en efficacite"
else echo "Ok, vous n'etes pas favorable. Vous preferez ce bon vieux CP/M !"
fi
  1. #!/bin/bash
  2.  
  3. # Licence GPL
  4. # Copyleft 2005 Thierry Bazzanella
  5.  
  6. function OuiNon {
  7. local qst def rep
  8. qst="${1:-'Oui ou Non ? '}"
  9. def="${2}"
  10. while :
  11. do
  12. read -p "${qst}" rep || exit 1
  13. case "$(echo "${rep:-$def}" | tr '[a-z]' '[A-Z]')" in
  14. O|OUI|Y|YES) return 0 ;;
  15. N|NON|NO) return 1 ;;
  16. "" ) : ;;
  17. *) echo "Reponse invalide: ${rep}" ;;
  18. esac
  19. done
  20. }
  21.  
  22. # avec un parametre
  23. function tafonction {
  24. echo "${1} Visiteur !"
  25. return 7 # de 0 a 255 max
  26. }
  27.  
  28. # Appel de ta fonction
  29. tafonction "Coucou"
  30. #Recuperation d'un code de retour de tafonction:
  31. # doit etre declaree de suite apres l'appel de tafonction
  32. CODERETOUR_TAFONCTION=$( echo $? )
  33. VALEURRETOUR_TAFONCTION=$( tafonction "et bien" )
  34.  
  35. #Recuperation de la valeur du parametre
  36. # Retourne par tafonction
  37. # dans ton programme principal:
  38. echo "Une autre valeur de retour est : $VALEURRETOUR_TAFONCTION"
  39. echo "Le code de retour est $CODERETOUR_TAFONCTION"
  40. # Avec echo cequetuveux dans tafonction te permet de recuperer
  41. # une valeur quelconque sur l'entree standard
  42. # Par contre le return 7 te permet de recuperer un code de retour numerique
  43.  
  44. # tu peux donc avec ces elements faire une fonction OuiNon de ton code
  45. # et declarer le code de cette fonction une seule fois au debut
  46. # de ton programme et l'appeler autant de fois que necessaire.
  47.  
  48. if OuiNon "Etes-vous favorable a l'utilisation des fonctions ? votre reponse => " Oui
  49. then echo "OK, vous etes favorable. Vous gagnerez en efficacite"
  50. else echo "Ok, vous n'etes pas favorable. Bonjour la maintenance du code !"
  51. fi
  52.  
  53. if OuiNon "Etes-vous favorable a l'utilisation de GNU/Linux ? votre reponse => " Oui
  54. then echo "OK, vous etes favorable. Vous gagnerez en efficacite"
  55. else echo "Ok, vous n'etes pas favorable. Vous preferez ce bon vieux CP/M !"
  56. fi

Gravatar de bazzanella
Original post of bazzanella.Votez pour ce billet sur Planet Libre.

Articles similaires

Clapico : Téléchargez et visionnez les dernières diffusions d’Arte dans votre Ubuntu (suite)

mercredi 8 mai 2013 à 11:07

Suite au billet que j’ai publié à propos d’Arte + 7 recorder, j’ai reçu bon nombre de commentaires me rappelant à juste titre que cette application n’était plus maintenue mais qu’une autre nommée Qarte lui avait succédé et permettait également de télécharger les programmes diffusés les sept derniers jours sur Arte.

qarte01

Qarte propose de plus des fonctionnalités qui n’étaient pas disponibles chez son prédécesseur, à savoir :

qarte02

 

qarte04

Comme Arte + 7 recorder, Qarte ne se trouve pas dans les dépôts officiels d’Ubuntu et ne doit être installé qu’en toute connaissance de cause. Heureusement, il existe un PPA.

Ouvrez un terminal et entrez la commande :

sudo add-apt-repository ppa:vincent-vandevyvre/vvv

puis

sudo apt-get update

et enfin

sudo apt-get install qarte

Vous pouvez télécharger les programmes d’Arte.

qarte03

Amusez-vous bien.

Gravatar de Clapico
Original post of Clapico.Votez pour ce billet sur Planet Libre.

dada : Conseils à un libriste pour faire passer au libre

mercredi 8 mai 2013 à 08:42

Ce billet est un retour d'expérience. Je vais vous donner les quelques bons ou respectables conseils qui devraient vous aider à développer l'utilisation du libre dans votre entourage.

free_hugs2.jpg

1 - Ne pas forcer le passage

Il ne sert à rien de se lever un jour en disant qu'untel va avoir le droit à son passage au libre. Il s'en fout, n'a pas connaissance des courants privateur et libre des logiciels. L'utilisateur d'un ordinateur veut que ça marche et n'aime pas le changement.

2 - Attendez que l'ordinateur se dégrade avant d'agir.

Sinon, l'adoption se fera dans la contrainte. Prendre l'ordinateur d'un ami et lui installer quelque chose qu'il ne connait pas parce que vous vous trouvez ça bien, c'est trop souvent foncer dans le mur. Quand ça marche, ça marche et il ne veut surtout pas que ça change. Attendez un peu, la fenêtre d'attaque arrivera bien assez vite...

3 - Commencer simplement, par des logiciels courants

Firefox, Thunderbird et VLC sont les meilleurs moyens au monde pour faire glisser quelqu'un vers les logiciels libres. Ils regroupent les besoins de 90% des utilisateurs. Du web, des mails, un agenda, des vidéos. Rien qu'avec des 3 bijoux du libre, vous venez de noyez sournoisement quelqu'un dans notre univers.

4 - Ne parlez pas de logiciel libre tout de suite

Non ! Surtout pas. L'ordinateur est une boite noire. Personne n'y comprend rien et personne ne veut comprendre. Alors laissez tomber l'approche éthique de votre démarche si vous savez que la personne en face n'est pas sensible à ça. Autant parler du mouvement dada à Nabila : ça ne mènera à rien.

5 - Ne parlez pas de GNU/Linux

Malheureux ! Si vous commencez à dire que Linux, c'est bien mieux que Windows. Vous allez passer pour un dingue. Pourquoi ? Parce que le gens ne savent déjà pas à quoi correspond un Windows qui marche mais qui fait peur et que Linux est, pour ceux qui en ont entendu parler, un truc à la limite du terrorisme informatique. Si vous voulez leur parler d'un autre système d'exploitation que MacOS ou Windows, parlez d'Ubuntu, par exemple. Utilisez son petit nom.

6 - Ne commencez jamais par le système d'exploitation

Non, ne commencez pas par le système d'exploitation. Ça ne sert à rien de faire sauter tout les repères d'un coup. Franchement, c'est comme balancer un automobiliste au volant d'une navette spatiale. Bah ouais, ça se déplace, y'a bien un rapport, mais ça s'arrête là. Laissez l'utilisateur dans ses pantoufles, avant d'éventuellement les changer.

7 - Refusez d'aider un utilisateur de logiciels piratés

Ces poissons là sont les plus sympas.

On ne trouve pas toujours d'équivalent libre aux logiciels privateurs piratés. Passez pas Framasoft ou l'Annuaire Libre  de Cyrille BORNE pour vous filer des conseils.

8 - Acceptez un peu de compromis

C'est un histoire qui m'est arrivée. J'ai passé un proche au libre en le mettant sous Ubuntu mais il se devait d'avoir pour X ou Y raisons un Office. PoL, WineHQ et Microsoft Office sont apparus sur son PC. Je préfère le voir tourner sous Ubuntu LTS avec un Office sous Wine que de rater un passage au libre pour une simple histoire de traitement de texte.

9 - Acceptez de servir de "formateur c:"

C'est souvent pour ce genre d'activité que vos amis vous apprécient. Plus rien ne marche, il faut formater ? Acceptez, si la condition 7 est respectée. Vous allez réinstaller un Windows, mais lachez-vous : Firefox, Thunderbird, VLC, LibreOffice... Installez tout de base ! Vous ferez du bien à l'ordinateur et comme ça marche, votre commanditaire ne dira rien. Prenez bien soin de les configurer comme logiciels à utiliser par défaut ! Bref, vous avez le pouvoir, prenez-le.

10 - Assumez le Service Après Vente

Pour lutter contre la frustration (qui mène au rejet) de l'utilisateur que vous venez de noyez dans du libre, assumez le SAV. En général, si vous vous êtes contenté d'installer des grands classiques, vous n'aurez pas trop de soucis. Si vous avez installé une Ubuntu LTS, pas trop de soucis non plus. Il vous appellera parce qu'il ne comprend pas trop l'avalanche de mise à jour, dites-lui que tout va bien et qu'il faut accepter. N'oubliez pas de configurer les mis à jour des versions d'Ubuntu vers les LTS suivantes uniquement.

11 - Laissez tomber si c'est un joueur

N'y pensez même pas, c'est tout.

- Oui, j'ai souvent essayé et rarement réussi. On se dit que c'est parfait alors que ça ne va pas forcément à tout le monde.

Pourquoi Ubuntu me direz-vous ?

Même si j'en dis souvent du mal, que je ne comprends plus toujours l'éthique de Canonical, il reste au fond de moi le souvenir de mes débuts et c'est à cette distrib' que je le dois. Je ne m'en sers personnellement plus, mais pourquoi ne pas laisser les nouveaux venus commencer avec elle ?

Si vous n'êtes vraiment plus capable de supporter Ubuntu, prenez une Mageia, par exemple. Libre à vous de faire vos choix.

Gravatar de dada
Original post of dada.Votez pour ce billet sur Planet Libre.

I'm richer than you! infinity loop