Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 >

jeudi 7 octobre 2010

Copier un fichier d'un domU HVM vers le dom0, sans interrompre le domU

Objectifs: Récupérer l'iso d'un CD présent sur ma VM Windows XP et la mettre sur mon dom0

Hier soir en rentrant du travail , j'ai voulu testé nlite. En effet, mon CD originel de XP ne contient que la SP2. Je me suis dit que ce serait bien de pouvoir disposer d'un CD avec la SP3.

Du coup, j'ai suivi le tutoriel "Comment Créer Un CD Windows XP avec le Service Pack 3 – KB936929 Intégré"

Une fois le tutoriel réalisé, j'ai donc eu ma nouvelle iso fraîchement installée.

iso XP avec SP3 obtenu par nlite, à transférer sur le dom0

Or j'ai pour habitude d'avoir mes CD sur mon dom0 dans un répertoire prévu à cette effet

L'idée ici va consister à

  • créer une snapshot LVM
  • utiliser kpart, faire un montage
  • copier l'iso
  • démounter et supprimer la snasphot LVM

Création d'une snapshot

Avant la création de la snapshot

melina:~# lvs
  LV                  VG     Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  jenna-xp-disk-1     xen-vm -wi-a-   8,00G                                      
  melina-xen01-disk   xen-vm -wi-ao  20,00G                                      
  melina-xen01-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen02-disk   xen-vm -wi-ao  20,00G                                      
  melina-xen02-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen03-disk   xen-vm -wi-ao  20,00G                                      
  melina-xen03-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen04-disk-1 xen-vm -wi-a-  12,00G                                      
  melina-xen04-disk-2 xen-vm -wi-a-  30,00G                                      
  melina-xen04-disk-3 xen-vm -wi-a- 100,00G                                      
  melina-xen05-disk   xen-vm -wi-ao  20,00G                                      
  melina-xen05-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen06-disk   xen-vm -wi-ao  22,00G                                      
  melina-xen06-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen07-disk   xen-vm -wi-a-  20,00G                                      
  melina-xen07-swap   xen-vm -wi-a- 128,00M                                      
  melina-xen08-disk-1 xen-vm -wi-ao  20,00G                                      
  melina-xen08-disk-2 xen-vm -wi-ao  20,00G                                      
  melina-xen09-disk   xen-vm -wi-a-  15,00G                                      
  melina-xen09-swap   xen-vm -wi-a-   1,00G                                      
  melina-xen10-disk-1 xen-vm -wi-a-  20,00G        

Création de la snapshot

melina:~# lvcreate -L20G -s -n melina-xen08-disk-1-snapshot /dev/xen-vm/melina-xen08-disk-1
  Logical volume "melina-xen08-disk-1-snapshot" created
melina:~# lvs
  LV                           VG     Attr   LSize   Origin              Snap%  Move Log Copy%  Convert
  jenna-xp-disk-1              xen-vm -wi-a-   8,00G                                                   
  melina-xen01-disk            xen-vm -wi-ao  20,00G                                                   
  melina-xen01-swap            xen-vm -wi-ao 128,00M                                                   
  melina-xen02-disk            xen-vm -wi-ao  20,00G                                                   
  melina-xen02-swap            xen-vm -wi-ao 128,00M                                                   
  melina-xen03-disk            xen-vm -wi-ao  20,00G                                                   
  melina-xen03-swap            xen-vm -wi-ao 128,00M                                                   
  melina-xen04-disk-1          xen-vm -wi-a-  12,00G                                                   
  melina-xen04-disk-2          xen-vm -wi-a-  30,00G                                                   
  melina-xen04-disk-3          xen-vm -wi-a- 100,00G                                                   
  melina-xen05-disk            xen-vm -wi-ao  20,00G                                                   
  melina-xen05-swap            xen-vm -wi-ao 128,00M                                                   
  melina-xen06-disk            xen-vm -wi-ao  22,00G                                                   
  melina-xen06-swap            xen-vm -wi-ao 128,00M                                                   
  melina-xen07-disk            xen-vm -wi-a-  20,00G                                                   
  melina-xen07-swap            xen-vm -wi-a- 128,00M                                                   
  melina-xen08-disk-1          xen-vm owi-ao  20,00G                                                   
  melina-xen08-disk-1-snapshot xen-vm swi-a-  20,00G melina-xen08-disk-1   0,00                        
  melina-xen08-disk-2          xen-vm -wi-ao  20,00G                                                   
  melina-xen09-disk            xen-vm -wi-a-  15,00G                                                   
  melina-xen09-swap            xen-vm -wi-a-   1,00G                                                   
  melina-xen10-disk-1          xen-vm -wi-a-  20,00G

Kpart et Mountage de la snapshot

melina:~# kpartx -va /dev/xen-vm/melina-xen08-disk-1-snapshot
add map xen--vm-melina--xen08--disk--1--snapshot1 (252:24): 0 41913522 linear /dev/xen-vm/melina-xen08-disk-1-snapshot 63
melina:~# ls -l /dev/mapper/xen--vm-melina--xen08--disk--1--snapshot*
brw-rw---- 1 root disk 252, 21 oct  7 22:48 /dev/mapper/xen--vm-melina--xen08--disk--1--snapshot
brw-rw---- 1 root disk 252, 24 oct  7 22:52 /dev/mapper/xen--vm-melina--xen08--disk--1--snapshot1
brw-rw---- 1 root disk 252, 23 oct  7 22:49 /dev/mapper/xen--vm-melina--xen08--disk--1--snapshot-cow
melina:~# mount -t ntfs-3g /dev/mapper/xen--vm-melina--xen08--disk--1--snapshot1 /storage/montage/ -o force
$LogFile indicates unclean shutdown (0, 0)
WARNING: Forced mount, reset $LogFile.

Copie sur le dom0

On vérifie le contenu
melina:~# ls -al /storage/montage/
total 2407149
drwxrwxrwx 1 root root      4096 oct  7 20:01 .
drwxr-xr-x 7 root root      4096 jun  4 13:21 ..
-rwxrwxrwx 1 root root         0 oct  5 22:50 AUTOEXEC.BAT
-rwxrwxrwx 1 root root      4952 mar  2  2006 Bootfont.bin
-rwxrwxrwx 1 root root       212 oct  5 22:44 boot.ini
drwxrwxrwx 1 root root      4096 oct  7 19:52 Config.Msi
-rwxrwxrwx 1 root root         0 oct  5 22:50 CONFIG.SYS
drwxrwxrwx 1 root root      4096 oct  6 00:55 Documents and Settings
-rwxrwxrwx 1 root root 985255936 oct  7 20:34 hiberfil.sys
-rwxrwxrwx 1 root root         0 oct  5 22:50 IO.SYS
-rwxrwxrwx 1 root root         0 oct  5 22:50 MSDOS.SYS
-rwxrwxrwx 1 root root     47564 mar  2  2006 NTDETECT.COM
-rwxrwxrwx 1 root root    252240 oct  6 01:49 ntldr
-rwxrwxrwx 1 root root 805306368 oct  7 20:34 pagefile.sys
drwxrwxrwx 1 root root      8192 oct  7 19:51 Program Files
drwxrwxrwx 1 root root         0 oct  6 21:47 RECYCLER
drwxrwxrwx 1 root root      4096 oct  6 00:54 System Volume Information
drwxrwxrwx 1 root root    106496 oct  7 19:57 WINDOWS
drwxrwxrwx 1 root root      4096 oct  7 20:01 Windows_XP_Prod_Fr_SP3
-rwxrwxrwx 2 root root 673906688 oct  7 20:02 Windows_XP_Pro_FR_SP3.iso
Il ne reste plus qu'à copier
melina:~# cp /storage/montage/Windows_XP_Pro_FR_SP3.iso /opt/xen-vm/CD/

Démountage et suppression de la snapshot

melina:~# umount /storage/montage/
melina:~# kpartx -vd /dev/xen-vm/melina-xen08-disk-1-snapshot
del devmap : xen--vm-melina--xen08--disk--1--snapshot1
melina:~# lvremove -f /dev/xen-vm/melina-xen08-disk-1-snapshot
  Logical volume "melina-xen08-disk-1-snapshot" successfully removed
On vérifie par lvs
melina:~# lvs
  LV                  VG     Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  jenna-xp-disk-1     xen-vm -wi-a-   8,00G                                      
  melina-xen01-disk   xen-vm -wi-ao  20,00G                                      
  melina-xen01-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen02-disk   xen-vm -wi-ao  20,00G                                      
  melina-xen02-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen03-disk   xen-vm -wi-ao  20,00G                                      
  melina-xen03-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen04-disk-1 xen-vm -wi-a-  12,00G                                      
  melina-xen04-disk-2 xen-vm -wi-a-  30,00G                                      
  melina-xen04-disk-3 xen-vm -wi-a- 100,00G                                      
  melina-xen05-disk   xen-vm -wi-ao  20,00G                                      
  melina-xen05-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen06-disk   xen-vm -wi-ao  22,00G                                      
  melina-xen06-swap   xen-vm -wi-ao 128,00M                                      
  melina-xen07-disk   xen-vm -wi-a-  20,00G                                      
  melina-xen07-swap   xen-vm -wi-a- 128,00M                                      
  melina-xen08-disk-1 xen-vm -wi-ao  20,00G                                      
  melina-xen08-disk-2 xen-vm -wi-ao  20,00G                                      
  melina-xen09-disk   xen-vm -wi-a-  15,00G                                      
  melina-xen09-swap   xen-vm -wi-a-   1,00G                                      
  melina-xen10-disk-1 xen-vm -wi-a-  20,00G                                      

dimanche 3 octobre 2010

Paquet .deb pour NSIS 2.46 sous Debian Lenny 5.0 ou Ubuntu <= 8.04

1. Télécharger et installer le paquet

  1. Il faut télécharger le paquet
    wget http://www.davidgis.fr/download/nsis_2.46-1.deb
  2. Il faut ensuite l'installer
    dpkg -i nsis_2.46-1.deb

2. Générer le paquet (FACULTATIF)

REMARQUE: Cette section est fournie uniquement à titre informatif dans le but de montrer comment créer le paquet

2. 1 Pré-requis

Comme précisé dans ce billet
apt-get update
apt-get install -y python scons g++ gcc bzip2 unzip mingw32-binutils mingw32 mingw32-runtime libpthread-stubs0-dev

2.2 Script général pour compilation et obtention du paquet nsis_2.46-1.deb

Dans un script build_nsis.sh, on mettra
DIR_ORIG="${PWD}"

NSIS_DIR_TEMP="/tmp/NSIS_DIR_TEMP_$$"
PREFIX="/usr/local/"
PREFIX_BIN="${PREFIX}bin/"
PREFIX_CONF="/etc/nsis/"
PREFIX_DATA="${PREFIX}share/nsis/"
PREFIX_DOC="${PREFIX}share/doc/nsis/"


mkdir  ${NSIS_DIR_TEMP}

cd ${NSIS_DIR_TEMP}

echo "NSIS_DIR_TEMP = ${NSIS_DIR_TEMP}"

echo -n "1. Downloading and decompressing sources..."
wget -q http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-src.tar.bz2/download -O - |tar xjf -

[ $? -gt 0 ] && { 
		 echo "Sorry..The sources could not be downloaded";
		 echo "Stop";
		 exit 1; 
		} 
echo done

echo -n "2. Build and install..."
cd nsis-2.46-src
scons PREFIX=${PREFIX} PREFIX_BIN=${PREFIX_BIN} PREFIX_CONF=${PREFIX_CONF} PREFIX_DATA=${PREFIX_DATA} PREFIX_DOC=${PREFIX_DOC} install > install.log 2>&1
echo done
echo "See $PWD/install.log"

cd ..

echo -e "3. Copy files for dpkg..."
mkdir -p nsis_2.46-1{/DEBIAN,${PREFIX},${PREFIX_BIN},${PREFIX_CONF},${PREFIX_DATA},${PREFIX_DOC}}

cp -r ${PREFIX_DATA} nsis_2.46-1${PREFIX_DATA}

cp -r ${PREFIX_DOC} nsis_2.46-1/${PREFIX_DOC}

cp ${PREFIX_CONF}nsisconf.nsh nsis_2.46-1${PREFIX_CONF}

cp ${PREFIX_BIN}{GenPat,LibraryLocal,makensis} nsis_2.46-1${PREFIX_BIN}

cat << EOF > nsis_2.46-1/DEBIAN/control
Package: nsis
Priority: optional
Section: devel
Priority: optional
Version: 2.46-1
Architecture: i386
Depends: libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.2.1)
Maintainer: David TECHER 
Description: Nullsoft Scriptable Install System (modified for Debian)
 NSIS is a tool for creating quick and user friendly installers for
 Microsoft Windows (Win32) operating systems.
 .
 NSIS creates installers that are capable of installing, uninstalling,
 setting system settings, extracting files, etc. Because it's based on
 script files, you can fully control every part of your installers. The
 script language supports variables, functions, string manipulation,
 just like a normal programming language - but designed for the creation
 of installers. Even with all these features, NSIS is still the smallest
 installer system available. With the default options, it has an overhead
 of only 34 KB.
 .
 JEAN DAVID TECHER (MAINTAINER) SAID:
 "CONTRARY TO DEBIAN RULES(*), I DID A FULL INSTALL OF NSIS."
 .
  (*) <<...Some parts of nsis cannot be built on Debian because of non-free
 requirements...>>.
Homepage: http://nsis.sourceforge.net/
Tag: devel::packaging, implemented-in::c, implemented-in::c++, interface::commandline, role::program, scope::utility
EOF

echo -e "4. Remove files..."
rm -f ${PREFIX_BIN}{GenPat,LibraryLocal,makensis} 
rm -rf ${PREFIX_DATA} ${PREFIX_DOC}
echo done

echo "5. Build .deb for nsis"
dpkg-deb --build nsis_2.46-1
[ $? -eq 0 ] && { 
		  mv "${NSIS_DIR_TEMP}/nsis_2.46-1.deb" "${DIR_ORIG}";
		  cd "${DIR_ORIG}";	
		  rm -rf ${NSIS_DIR_TEMP}/;
		  echo "deb := '${DIR_ORIG}/nsis_2.46-1.deb'";
		 }

samedi 2 octobre 2010

Installation de NSIS 2.46 sous Debian Lenny

0. Exemple

J'ai mon domaine Windows à la maison géré par Samba/OpenLDAP en tant que PDC.

Je veux utiliser NSIS pour me créer un petit exe qui affiche un petit message de bienvenue lors de l'ouverture de session.

Ca affichera pendant une dizaine de seconde

Message de bienvenue apparaissant (pendant quelques secondes) lors de l'ouverture de session pour un domaine en PDC géré par Samba/OpenLDAP

1. Motivations

  1. Travailler avec NSIS sous Windaube c'est bien mais l'avoir sous Nunux c'est encore mieux

    Si vous travaillez avec quelqu'un qui est sous Nunux et vous sous Windaube, ca évitera qu'il vienne vous squatter votre ordi pour compiler ses scripts de NSIS. (Moi je dis ça mais je dis rien)
  2. De plus les paquets .deb proposés par Debian sont quand même assez anciens. Il est intéressant de disposer d'une version à jour

    melina-xen07:~/example# apt-cache policy nsis
    nsis:
      Installé : (aucun)
      Candidat : 2.37-3
     Table de version :
         2.37-3 0
            500 http://ftp.us.debian.org lenny/main Packages
    
  3. Par ailleurs le paquet est incomplet comme l'atteste
    melina-xen07:~/example# apt-cache show nsis |tail -6 |head -3
     Some parts of nsis cannot be built on Debian because of non-free
     requirements. Please see the following file for more information:
     /usr/share/doc/nsis/README.Debian
    

2. Pré-requis

Cette version de NSIS suppose d'installer scons, python et gcc/g++. Pour scons, il faut une version supérieure à 0.98 Ca tombe bien. Sous Lenny, on a
melina-xen07:~/nsis_work# apt-cache show scons | grep -i ^version
Version: 1.0.0-1
Donc on peut installer
apt-get update
apt-get install -y python scons g++ gcc bzip2 unzip mingw32-binutils mingw32 mingw32-runtime libpthread-stubs0-dev

2. Téléchargement

On télécharge nsis-2.46-src.tar.bz2. On décompresse ensuite
wget -q http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-src.tar.bz2/download -O nsis-2.46-src.tar.bz2 && tar xjf nsis-2.46-src.tar.bz2
Ou sinon le tout à la voléé
wget -q http://sourceforge.net/projects/nsis/files/NSIS%202/2.46/nsis-2.46-src.tar.bz2/download -O - |tar xjf -

3. Compilation et installation

Rien de plus simple que
scons PREFIX=/opt/nsis install

4 .Exemple

4.1 Le script
Le script welcome.nsi utilisé sera donc
/*

    Script de connexion au domaine DavidGIS.fr
*/
!define PRODUCT_NAME "Welcome"
!define PRODUCT_VERSION "0.1"
!define PRODUCT_PUBLISHER "Jean David TECHER"
!define PRODUCT_WEB_SITE "http://www.davidgis.fr"

SetCompressor zlib

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}.exe"
InstallDir "$TEMP"
# Mode silencieux
SilentInstall silent

# Ecran de bienvenue inspiré de http://nsis.sourceforge.net/Docs/Splash/splash.txt
####################################################################
Function .onInit
  SetOutPath $TEMP
  File /oname=spltmp.bmp "welcome_davidgis.bmp"

  splash::show 10000 $TEMP\spltmp

#  advsplash::show 3000 1600 1400 0xFFFFFF $TEMP\spltmp

  Pop $0 ; $0 has '1' if the user closed the splash screen early,
     ; '0' if everything closed normally, and '-1' if some error occurred.

  Delete $TEMP\spltmp.bmp
FunctionEnd


Section "Principal" SEC01
SetOverwrite on
SetOutPath "$TEMP"
File "connexion.txt"
Exec `cmd /c echo %COMPUTERNAME%: l'utilisateur "%USERNAME%" est connecté sur le domaine "%USERDOMAIN%"  >> %TEMP%\connexion.txt`
SectionEnd

Section -Post

SectionEnd
4.2 Compilation et mise en place avec Samba
Pour la compilation
/opt/nsis/bin/makensis welcome.ns
qui générera le fichier Welcome-0.1.exe

Mon serveur Samba est sur l'hote olivia.davidgis.fr. Pour mon Samba, j'ai configuré mon netlogon ainsi de manière général pour tout les utilisateurs

root@olivia:~# grep logon /etc/samba/smb.conf|grep -E '(script|netlogon)'
logon script = logon.bat
[netlogon]
path = /home/netlogon
C'est donc /home/netlogon/logon.bat que je vais devoir modifier.

Il suffit donc de copier Welcome-0.1.exe sur un partage commun à tous afin de le rendre accessible à tous les utilisateurs. Par exemple

root@olivia:~# grep '\[partage\]' -A5 /etc/samba/smb.conf
[partage]
comment = Repertoire commun
browseable = Yes
writeable = Yes
public = No
path = /home/partage

On le copie donc sur /home/partage

Le contenu de /home/partage devient donc

root@olivia:~# cat /home/netlogon/logon.bat
\\olivia\partage\Welcome-0.1.exe
net use p: \\olivia\partage
net use u: \\olivia\%username%

vendredi 1 octobre 2010

blog intéressant sur le recrutement en informatique

Une fois n'est pas coutume. Un site que j'ai trouvé très instructif http://blog.recrut-info.com