source: ogLive-Builder-Git/ogclientSqfs2Img

qndtest
Last change on this file was d34358c, checked in by Irina Gómez <irinagomez@…>, 5 years ago

#847 ogclientSqfs2Img and ogclientImg2Sqfs: Auxiliary file size is increased to fit the content of the second file system.

  • Property mode set to 100755
File size: 4.2 KB
Line 
1#!/bin/bash
2#/**
3#@brief Descomprime el fichero ogclient.sqfs en ogclient.img con un formato donde podemos escribir.
4#@param none
5#@note Copiado del wiki: http://opengnsys.es/wiki/ClienteInitrdDSGenerarlo
6#@note para "entrar" en ogclient: schroot -c ogclient.img o     mount  ogclient.img ogclientmount -o loop,offset=32256
7#@exeption 1 No es usuario root
8#@exeption 2 No existe el fichero ogclient.sqfs
9#@date 2013-11.27
10#*/
11PROG="$(basename $0)"
12# Mostrar ayuda si se solicita.
13if [ "$*" == "help" ]; then
14        echo -e "$PROG: Descomprime el fichero ogclient.sqfs en ogclient.img con un formato donde podemos escribir. \n" \
15                "       Uso: $PROG (sin parametros)"
16        exit 0
17fi
18
19if [ "$USER" != "root" ]; then
20        echo "$PROG: Error: solo ejecutable por root" >&2
21        exit 1
22fi
23
24
25
26DATE=$(date +%y-%m-%d)
27OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
28OGCLIENTBASEDIR=$OPENGNSYS/tftpboot/ogclient/;
29OGCLIENTSQFS=${OGCLIENTBASEDIR}ogclient.sqfs
30OGCLIENTFILE=${OGCLIENTBASEDIR}ogclient.img;
31OGCLIENTMOUNT=${OGCLIENTBASEDIR}ogclientmount;
32OGCLIENTSIZEMB=2100;
33OGCLIENTLABEL=ogClient;
34
35# Comprobamos que existe el cliente .sqfs
36! [ -f $OGCLIENTSQFS ] && echo "No existe $OGCLIENTSQFS" && exit 3
37
38# instalamos los paquetes necesarios.
39echo "Si no existen, instalamos los paquetes necesarios: squashfs-tools schroot."
40if ! which schroot unsquashfs 2>&1 >/dev/null; then
41        apt-get update
42        apt-get -y install squashfs-tools schroot
43fi
44
45# Creamos el archivo.
46echo -e "\nCreamos el archivo."
47echo dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB;
48dd if=/dev/zero of=$OGCLIENTFILE bs=1048576 count=$OGCLIENTSIZEMB;
49DISKLOOP=$(losetup -f);
50losetup $DISKLOOP $OGCLIENTFILE;
51echo -e "n\np\n1\n\n\nt\n83\nw" | fdisk $DISKLOOP;
52losetup -d $DISKLOOP ;
53
54# Creamos el sistema de ficheros.
55echo "Creamos el sistema de ficheros."
56echo "mkfs.ext4 -b 4096 -L $OGCLIENTLABEL $PARTLOOP"
57PARTLOOP=$(losetup -f);
58losetup -o 32256 $PARTLOOP $OGCLIENTFILE && mkfs.ext4 -b 4096 -L $OGCLIENTLABEL $PARTLOOP;
59losetup -d $PARTLOOP ;
60
61# Descomprimimos el ogclient.sqfs en el sistema de ficheros.
62mkdir -p $OGCLIENTMOUNT;
63echo "Descomprimimos el ogclient.sqfs en el sistema de ficheros."
64mount | grep $OGCLIENTMOUNT || mount $OGCLIENTFILE $OGCLIENTMOUNT -o loop,offset=32256;
65echo "unsquashfs  -d ${OGCLIENTMOUNT}/ -f $OGCLIENTSQFS"
66unsquashfs  -d ${OGCLIENTMOUNT}/ -f $OGCLIENTSQFS
67umount $OGCLIENTMOUNT;
68
69# Creamos los archivos de configuracion de schroot.
70echo "Creamos los archivos de configuracion de schroot."
71cp /etc/schroot/schroot.conf /etc/schroot/schroot.conf.$DATE
72cat << EOF > /etc/schroot/schroot.conf
73[ogclient.img]
74type=loopback
75file=${OGCLIENTBASEDIR}ogclient.img
76description=ogclient ubuntu luc IMGi
77#priority=1
78users=root
79groups=root
80root-groups=root
81mount-options=-o offset=32256
82root-users=root
83#[DIRogclient]
84#type=directory
85#directory=${OGCLIENTBASEDIR}ogclientmount
86#description=ogclient ubuntu lucid DIR
87#priority=2
88#users=root
89#groups=root
90#root-groups=root
91#root-users=root
92EOF
93
94cp /etc/schroot/mount-defaults /etc/schroot/mount-defaults.$DATE
95cat << EOF > /etc/schroot/mount-defaults
96# mount.defaults: static file system information for chroots.
97# Note that the mount point will be prefixed by the chroot path
98# (CHROOT_PATH)
99#
100# <file system> <mount point>   <type>  <options>       <dump>  <pass>
101proc            /proc           proc    defaults        0       0
102#procbususb      /proc/bus/usb   usbfs   defaults        0       0
103/dev            /dev            none    rw,bind         0       0
104/dev/pts        /dev/pts        none    rw,bind         0       0
105/dev/shm        /dev/shm        none    rw,bind         0       0
106#/home          /home           none    rw,bind         0       0
107/tmp            /tmp            none    rw,bind         0       0                                                               
108EOF
109
110# Si existen dispositivos loop los eliminamos.
111echo "Si existen dispositivos loop los eliminamos."
112LOOPDEVICES=$(losetup -a|grep $OGCLIENTFILE |cut -d: -f1)
113for DEVICE in $LOOPDEVICES
114do 
115        echo "losetup -d $DEVICE"
116        losetup -d $DEVICE
117done
118
119echo -e "Para \"entrar\" en ogclient: \n \t schroot -c ogclient.img o \n \t mount ogclient.img ogclientmount -o loop,offset=32256"
120echo "El servicio schroot montará el cliente automaticamente, si no queremos que pase hay que apagarlo."
Note: See TracBrowser for help on using the repository browser.