Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/04/2011, à 23:51

YannUbuntu

[Resolu] comment savoir si mon script est lancé en session-live ?

Bonjour

Auriez-vous une idee de comment coder un test qui retourne vrai/faux selon le fait que le script est lancé depuis une session-live (live-CD ou live-USB) ou bien depuis une session installée en dur ?

Merci d'avance

Dernière modification par YannUbuntu (Le 16/04/2011, à 15:15)


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#2 Le 16/04/2011, à 00:55

Pylades

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

Salut.
C'est n'est qu'une solution à la Rache mais on peut se baser sur la présence ou non de l'installeur. Donc un which ubiquity >/dev/null devrait être vrai ou faux selon le cas (à confirmer, je n'ai pas testé en live).

Ce n'est pas parfait, mais c'est tout ce qui me vient à l'esprit pour le moment.


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#3 Le 16/04/2011, à 10:44

frafa

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

Bonjour,
perso je rechercherai casper dans options de boot

grep 'boot=casper' /proc/cmdline

Dernière modification par frafa (Le 16/04/2011, à 10:46)

Hors ligne

#4 Le 16/04/2011, à 12:32

Pylades

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

Ouais, meilleure idée…


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#5 Le 16/04/2011, à 12:34

Josepe36

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

salut

la méthode que j utilise pour savoir ou non si je suis en livesession ou pas dans l'ecriture de mon installateur Hybyrde et dans le code d 'Hy-mage est la suivante :

en live session le squashfs est monté dans le répertoire /rofs et le repertoire live dans /cdrom donc tout simplement controler la présence de contenue dans
/rofs et /cdrom avec un truc du style :

control_live()
{
control=$(ls /cdrom/casper/ /rofs)
if [ "$control"]
    then 
           echo "nous sommes en livesession"
           $action1
    else
           echo "nous ne sommes pas en livesession"
           $action2
fi
}

Dernière modification par Josepe36 (Le 16/04/2011, à 12:35)


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#6 Le 16/04/2011, à 12:36

frafa

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

@Josepe36
ta solution ne fonctionnera pas dans le cas d'un boot en liveusb
car dans ce cas là ce n'est pas /cdrom qui est utilisé mais /isodevice .

Hors ligne

#7 Le 16/04/2011, à 13:11

Josepe36

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

ha bon ?

et dans ce cas /rofs n existe pas ? j en doute, donc celà fonctionne quand meme car si "ls" ne trouve rien dans /cdrom il trouvera queqlue chose dans /rofs donc la variable $control n'est plus vide  wink
As tu tester frafa ?

c est que pour un liveusb je fais ça manuellement avec syslinux et mon arborescence comporte bien /cdrom et /rofs mais admettons dans ce cas là on peut adapter en rajoutant /isodevice :

control_live()
{
control=$(ls /cdrom/casper/ /rofs  /isodevice)
if [ "$control"]
    then 
           echo "nous sommes en livesession"
           $action1
    else
           echo "nous ne sommes pas en livesession"
           $action2
fi
}

Dernière modification par Josepe36 (Le 16/04/2011, à 13:13)


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#8 Le 16/04/2011, à 14:09

YannUbuntu

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

Merci a tous pour vos reponses. Alors du coup, quelle solution est valable dans tous les cas (live-CD et live-USB) ?


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#9 Le 16/04/2011, à 14:12

Josepe36

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

lol

bon je me fais un liveusb vite fait et vous envoir un ls de ma racine
je re dans 5 minutes


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#10 Le 16/04/2011, à 14:22

frafa

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

Tous les liveCD basés sur Ubuntu utilisent la paquet casper en ramdisk,
et souvent lupin-casper pour les LiveUSB.
A mon avis la seule solution universelle pour les bases Ubuntu et de chercher casper en option de boot ...

Dernière modification par frafa (Le 16/04/2011, à 14:28)

Hors ligne

#11 Le 16/04/2011, à 14:32

Josepe36

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

bon je suis en liveusb

je lance :

ubuntu@ubuntu:~$ ls /
bin    dev   initrd.img  media  proc  sbin     sys  var
boot   etc   lib         mnt    rofs  selinux  tmp  vmlinuz
cdrom  home  lib64       opt    root  srv      usr

et maintenant le script que j ai nommé test.sh incluant la fonction ecrite plus haut :

control_live()
{
control=$(ls /cdrom/casper/ /rofs /isodevice)

if [ "$control" ]
    then 
           echo "nous sommes en livesession"
           $action1
    else
           echo "nous ne sommes pas en livesession"
           $action2
fi
}

control_live

echo "
voici le contenu de la variable control :
$control"

exit

et le résultat :

ubuntu@ubuntu:~$ bash test.sh 
ls: cannot access /isodevice: No such file or directory
nous sommes en livesession

voici le contenu de la variable control :
/cdrom/casper/:
filesystem.manifest
filesystem.manifest-desktop
filesystem.size
filesystem.squashfs
initrd.lz
vmlinuz

/rofs:
bin
boot
dev
etc
home
initrd.img
lib
lib64
media
mnt
opt
proc
root
sbin
selinux
srv
sys
tmp
usr
var
vmlinuz
ubuntu@ubuntu:~$ arch
x86_64
ubuntu@ubuntu:~$ uname 
Linux
ubuntu@ubuntu:~$ 

test réalisé avec Ubuntu 10.10 x86_64

Dernière modification par Josepe36 (Le 16/04/2011, à 14:32)


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#12 Le 16/04/2011, à 14:38

Josepe36

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

bien maintenant le meme script sur un systemeinstallé en dur :

ubuntu@ubuntu:/media$ sudo chroot b154e981-83c8-4b07-b1eb-2982389278aa/
root@ubuntu:/# bash test.sh 
ls: ne peut accéder /cdrom/casper/: Aucun fichier ou dossier de ce type
ls: ne peut accéder /rofs: Aucun fichier ou dossier de ce type
ls: ne peut accéder /isodevice: Aucun fichier ou dossier de ce type
nous ne sommes pas en livesession

voici le contenu de la variable control :

root@ubuntu:/# 

Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#13 Le 16/04/2011, à 14:39

frafa

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

if [ "$(grep 'boot=casper' /proc/cmdline)" ]; then
echo live-session
else
echo non-live-session
fi

Me semble plus usiversel, mais bon on ne va pas se prendre la tête ...

Hors ligne

#14 Le 16/04/2011, à 14:45

Josepe36

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

Me semble plus usiversel, mais bon on ne va pas se prendre la tête ...

y a pas de soucis fafra, je répond simplement a ce que tu sites plus haut :

@Josepe36
ta solution ne fonctionnera pas dans le cas d'un boot en liveusb
car dans ce cas là ce n'est pas /cdrom qui est utilisé mais /isodevice .

mais ce dans une seul idée la passion du script et du partage et  démontrer ce que j'avance est une chose normale aussi.

wink
Et je pense qu'aprés c'est au codeur de se faire sa propre idée et de faire un choix.


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#15 Le 16/04/2011, à 14:48

Pylades

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

grep -q 'boot=casper' /proc/cmdline || echo -n non-; echo live-session

tongue

Dernière modification par Pylade (Le 16/04/2011, à 14:52)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#16 Le 16/04/2011, à 14:53

frafa

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

Soit, pour ajouter un justificatif a ma préférence pour la detection par option de boot,
il est possible de booter en liveCD/USB une distro customisée par un dossier casper renommé
via option live-media-path=/ce_que_je_veux_a_la_place_de_casper
Voir documentation de casper: http://manpages.ubuntu.com/manpages/luc … per.7.html

Hors ligne

#17 Le 16/04/2011, à 15:15

YannUbuntu

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

C'est cool d'avoir 2 solutions possibles. Perso tant que ca fonctionne sur des bases Debian, ca me va smile

merci a vous tous.


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#18 Le 16/04/2011, à 15:21

frafa

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

non pour les bases debian c'est encore différent !
ces solutions ne fonctionneront que sur les bases Ubuntu qui utilisent un fork de live nommé casper
pour les bases debian c'est boot=live que il faut rechercher ...

Edit:
un truc qui fonctionnera sur bases Ubuntu et Debian:

grep -E '(boot=casper)|(boot=live)' /proc/cmdline

Dernière modification par frafa (Le 16/04/2011, à 15:23)

Hors ligne

#19 Le 16/04/2011, à 16:00

YannUbuntu

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

frafa a écrit :

un truc qui fonctionnera sur bases Ubuntu et Debian:

grep -E '(boot=casper)|(boot=live)' /proc/cmdline

parfait je vais tester ca. Merci !


à consulter/améliorer: Guide du Débutant, Logiciels, Ecole, Travail, Maison

Hors ligne

#20 Le 16/04/2011, à 16:48

Josepe36

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

je veux pas faire le tétu , mais que ce passe t 'il dans ce cas ? :

Soit, pour ajouter un justificatif a ma préférence pour la detection par option de boot,
il est possible de booter en liveCD/USB une distro customisée par un dossier casper renommé
via option live-media-path=/ce_que_je_veux_a_la_place_de_casper
Voir documentation de casper: http://manpages.ubuntu.com/manpages/luc … per.7.html

si je choisi  live-media-path=/toto
et que l on fait :

grep -E '(boot=casper)|(boot=live)' /proc/cmdline

la ligne éditée dans /proc/cmdline contiendrait à la place de "casper"  "toto" donc l'argument de recherche "boot=casper" serait injustifié ?


Développeur distribution Hybryde
www.hybryde.org

Hors ligne

#21 Le 16/04/2011, à 17:24

frafa

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

@Josepe36
ben ca marche aussi, car c'est boot=casper que l'on recherche,
et cette oprion de boot n'est pas modifiable contrairement a toute les autres ...
c'est elle qui déclenche casper ....

live-media-path permet de changer le path mais boot=casper reste telquel

Dernière modification par frafa (Le 16/04/2011, à 17:26)

Hors ligne

#22 Le 16/04/2011, à 17:37

Josepe36

Re : [Resolu] comment savoir si mon script est lancé en session-live ?

ok wink


Développeur distribution Hybryde
www.hybryde.org

Hors ligne