Archives par étiquette : Linux

Créer une image debian minimale (non graphique) pour booter un compulab utilite standard depuis une microsd

Comment créer une image bootable de debian minimale à jour pour un français avec un kernel stable pour une machine compulab utilite standard. (admirez la beauté de l’utilisation de qemu de façon transparente grâce à binfmt-support)

Je recommande de récupérer certains fichiers de l’installation qui figurent dans la distribution de base qui vient avec votre OS…. Typiquement il faut récupérer au minimum les firmwares qui sont installés dans /lib/firmware.

Depuis un PC sur lequel on montera la microsd (ici dans un mini-lecteur que l’on met dans un port USB d’où sdc au lieu de mmcxxxxyyyyypt)…. Le contenu sera vide sauf le répertoire boot sur le fs ext4 de la microsd

mount /dev/sdc2 /mnt
mount /dev/sdc1 /mnt/boot

apt-get install qemu binfmt-support qemu-user-static dpkg-cross debootstrap

debootstrap --foreign --arch armhf wheezy /mnt/ http://ftp.fr.debian.org/debian

root@jylenhof-XPS-L701X:/mnt# cp /usr/bin/qemu-arm-static usr/bin/
root@jylenhof-XPS-L701X:/mnt# LC_ALL=C LANGUAGE=C LANG=C chroot . /debootstrap/debootstrap --second-stage
root@jylenhof-XPS-L701X:/mnt# echo utilite > etc/hostname
root@jylenhof-XPS-L701X:/mnt# echo nameserver 8.8.8.8 >> etc/resolv.conf
root@jylenhof-XPS-L701X:/mnt# echo nameserver 8.8.4.4 >> etc/resolv.conf
root@jylenhof-XPS-L701X:/mnt# echo deb http://ftp.fr.debian.org/debian wheezy main contrib non-free > etc/apt/sources.list
root@jylenhof-XPS-L701X:/mnt# echo deb-src http://ftp.fr.debian.org/debian wheezy main contrib non-free >> etc/apt/sources.list
root@jylenhof-XPS-L701X:/mnt# echo deb http://security.debian.org/ wheezy/updates main contrib non-free >> etc/apt/sources.list
root@jylenhof-XPS-L701X:/mnt# echo deb-src http://security.debian.org/ wheezy/updates main contrib non-free >> etc/apt/sources.list
root@jylenhof-XPS-L701X:/mnt# echo auto eth0 >> etc/network/interfaces
root@jylenhof-XPS-L701X:/mnt# echo allow-hotplug eth0 >> etc/network/interfaces
root@jylenhof-XPS-L701X:/mnt# echo iface eth0 inet dhcp >> etc/network/interfaces
root@jylenhof-XPS-L701X:/mnt# echo T0:2345:respawn:/sbin/getty -L ttymxc3 115200 vt100 >> etc/inittab
root@jylenhof-XPS-L701X:/mnt#
root@jylenhof-XPS-L701X:/mnt# LC_ALL=C LANGUAGE=C LANG=C chroot . apt-get update
root@jylenhof-XPS-L701X:/mnt# LC_ALL=C LANGUAGE=C LANG=C chroot . apt-get upgrade
LC_ALL=C LANGUAGE=C LANG=C chroot . apt-get install openssh-server locales ntpdate ntp usbutils pciutils less lsof most sysfsutils ntfs-3g exfat-utils exfat-fuse
chroot . /etc/init.d/ssh stop
chroot . /etc/init.d/ntp stop
root@jylenhof-XPS-L701X:/mnt# LC_ALL=C LANGUAGE=C LANG=C chroot . dpkg-reconfigure locales
Generating locales (this might take a while)…
en_US.ISO-8859-1… done
en_US.ISO-8859-15… done
en_US.UTF-8… done
fr_FR.ISO-8859-1… done
fr_FR.UTF-8… done
fr_FR.ISO-8859-15@euro… done
Generation complete.

root@jylenhof-XPS-L701X:/mnt# chroot . apt-get clean
root@jylenhof-XPS-L701X:/mnt# chroot . dpkg-reconfigure tzdata

Current default time zone: ‘Europe/Paris’
Local time is now: Sun Apr 20 19:39:31 CEST 2014.
Universal Time is now: Sun Apr 20 17:39:31 UTC 2014.

root@jylenhof-XPS-L701X:/mnt#

Puis on créé le fichier etc/fstab

root@jylenhof-XPS-L701X:/mnt# cat etc/fstab
#the Kernel image
/dev/mmcblk0p1 /boot vfat noatime,errors=remount-ro 0 1
#Mount the rootfs partition
/dev/mmcblk0p2 / ext4 noatime 0 1
proc /proc proc defaults 0 0
root@jylenhof-XPS-L701X:/mnt#

On positionne le mot de passe de root (ici, 111111 comme l’image ubuntu de base)

root@jylenhof-XPS-L701X:/mnt# chroot . /usr/bin/passwd
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
root@jylenhof-XPS-L701X:/mnt#
root@jylenhof-XPS-L701X:/mnt# rm usr/bin/qemu-arm-static
root@jylenhof-XPS-L701X:/mnt#

On efface les clés générées de façon à rendre générique l’image ainsi créée :
root@jylenhof-XPS-L701X:/mnt# rm etc/ssh/moduli etc/ssh/ssh_host*
root@jylenhof-XPS-L701X:/mnt#

 

Puis pour compiler le kernel, récupérer les sources du kernel 3.15-rc1 (les sources essentielles pour cette carte ont été intégrées)

Patcher ce kernel avec le patch suivant :
http://www.lenhof.eu.org/utilite/imx6q-cm-fx6.dts.patch

root@jylenhof-XPS-L701X:/home/jylenhof/Téléchargements/utilite/linux-3.15-rc1# patch -p0 < ../imx6q-cm-fx6.dts.patch
patching file arch/arm/boot/dts/imx6q-cm-fx6.dts
root@jylenhof-XPS-L701X:/home/jylenhof/Téléchargements/utilite/linux-3.15-rc1#

apt-get install gcc-arm-linux-gnueabihf
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm
make imx_v6_v7_defconfig

make gconfig, pour ajouter les trois options suivantes (dans boot options) :
CONFIG_ARM_APPENDED_DTB=y
CONFIG_ARM_ATAG_DTB_COMPAT=y
CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND=y

mkdir -p /mnt/lib/modules/3.15.0-rc1
INSTALL_MOD_PATH=/mnt/ INSTALL_PATH=/mnt/boot/ make zImage modules_install

cat arch/arm/boot/zImage arch/arm/boot/dts/imx6q-cm-fx6.dtb > /tmp/zImage-cm-fx6

On recopie le kernel à la main :
cp /tmp/zImage-cm-fx6 /mnt/boot/

On récupère les infos du kernel existant avant d’en faire l’image U-Boot :
root@jylenhof-XPS-L701X:/home/jylenhof/Téléchargements/linux-3.15-rc1# mkimage -l /mnt/boot/uImage-cm-fx6.old
Image Name:   Linux-3.0.35-cm-fx6-5.3
Created:      Sun Jan 26 13:38:22 2014
Image Type:   ARM Linux Kernel Image (uncompressed)
Data Size:    4061524 Bytes = 3966.33 kB = 3.87 MB
Load Address: 10008000
Entry Point:  10008000
root@jylenhof-XPS-L701X:/home/jylenhof/Téléchargements/linux-3.15-rc1#

mkimage -A arm -O linux -T kernel -C none -a 0x10008000 -e 0x10008000 -n Linux-3.15-rc1-cm-fx6-byjyl -d zImage-cm-fx6 uImage-cm-fx6

Je n’aurais pas réussi à écrire ce billet sans les informations précieuses trouvées sur certaines pages sur Internet, dont notamment :
http://www.yoovant.com/debian-wheezy-rootfs/

Share

Compulab Utilite…. Quelques liens

Les liens de téléchargement (si vous avez cassé la distro présent sur la microSD livré avec)

http://utilite-computer.com/download/utilite/ubuntu/

http://utilite-computer.com/download/utilite/android/ (Pas testé)

Une doc sur U-Boot :

http://www.compulab.co.il/workspace/mediawiki/index.php5/U-Boot_quick_reference

Les paramétrages de port série à faire

http://www.utilite-computer.com/wiki/index.php/Utilite:_Android:_Serial_console_connection

Perso, après un branchement sous mon portable sous Linux, j’utilise minicom…

C’est pas trop compliqué minicom, il suffit de récupérer avec dmesg le nom du port com connecté, chez moi c’est moi ttyUSB0. Après il faut lancer minicom -s pour faire le setup et roule.

Share

Installation d’une debian avec LVM sur un serveur OVH depuis le mode rescue-pro

Après avoir rebooté en mode rescue pro (avec la clé publique c’est plus facile), il faut nettoyer les partitions dans parted (commande rm) puis créer une partition de BiosBoot pour grub (si vous avez un disque en GPT)

root@rescue:~# parted
GNU Parted 3.1.52-1c659-dirty
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
Model: ATA ST32000641AS (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart
Partition name?  []? primary
File system type?  [ext2]? ext4
Start? 1
End? 100M
(parted) p
Model: ATA ST32000641AS (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
1      1049kB  99.6MB  98.6MB               primary

(parted)

Puis la « flagguer » correctement


(parted) set 1 bios_grub on
(parted) p
Model: ATA ST32000641AS (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
1      1049kB  99.6MB  98.6MB               primary  bios_grub

(parted)

Ensuite on créer une partition avec tout le reste :


(parted) mkpart
Partition name?  []? pv
File system type?  [ext2]? ext4
Start? 100M
End? -1
(parted) p
Model: ATA ST32000641AS (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
1      1049kB  99.6MB  98.6MB               primary  bios_grub
2      99.6MB  2000GB  2000GB               pv

(parted)

Puis on positionne le type LVM sur cette deuxième partition :

(parted) set 2 lvm
New state?  [on]/off? on
(parted) p
Model: ATA ST32000641AS (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name     Flags
1      1049kB  99.6MB  98.6MB               primary  bios_grub
2      99.6MB  2000GB  2000GB               pv       lvm

(parted)

(parted) quit
Information: You may need to update /etc/fstab.

root@rescue:~# pvcreate /dev/sda2
Writing physical volume data to disk "/dev/sda2"
Physical volume "/dev/sda2" successfully created
root@rescue:~#

root@rescue:/# vgcreate rootvg /dev/sda2
Volume group "rootvg" successfully created
root@rescue:/#

root@rescue:/# lvcreate -n slashlv -L10G rootvg
Logical volume "slashlv" created
root@rescue:/# lvcreate -n varlv -L2G rootvg
Logical volume "varlv" created
root@rescue:/# lvcreate -n tmplv -L2G rootvg
Logical volume "tmplv" created
root@rescue:/# lvcreate -n varliblv -L10G rootvg
Logical volume "varliblv" created
root@rescue:/#

root@rescue:/# mkfs.ext4 /dev/rootvg/slashlv
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: mdone

root@rescue:/# mkfs.ext4 /dev/rootvg/varlv
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

root@rescue:/# mkfs.ext4 /dev/rootvg/tmplv
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

root@rescue:/# mkfs.ext4 /dev/rootvg/varliblv
mke2fs 1.42.5 (29-Jul-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

root@rescue:/#

root@rescue:/# mount /dev/rootvg/slashlv /mnt/
root@rescue:/# mkdir /mnt/var
root@rescue:/# mount /dev/rootvg/varlv /mnt/var
root@rescue:/# mkdir /mnt/var/lib
root@rescue:/# mount /dev/rootvg/varliblv /mnt/var/lib/
root@rescue:/# mkdir /mnt/tmp
root@rescue:/# mount /dev/rootvg/tmplv /mnt/tmp

root@rescue:~# mkdir /mnt/proc
root@rescue:~# mkdir /mnt/sys
root@rescue:~# mkdir /mnt/dev

Télécharger et recopier debootstrap dans /mnt/tmp (il faut un endroit où on a le droit d’écrire)


jylenhof@portable-jylenhof:~$ scp debootstrap_1.0.53_all.deb root@jedimaster.lenhof.eu.org:/mnt/tmp/
Warning: the RSA host key for 'jedimaster.lenhof.eu.org' differs from the key for the IP address '91.121.74.224'
Offending key for IP in /home/jylenhof/.ssh/known_hosts:16
Matching host key in /home/jylenhof/.ssh/known_hosts:18
Are you sure you want to continue connecting (yes/no)? yes
root@jedimaster.lenhof.eu.org's password:
debootstrap_1.0.53_all.deb                    100%   59KB  58.8KB/s   00:00jylenhof@portable-jylenhof:~$

root@rescue:~# cd /mnt/tmp/
root@rescue:/mnt/tmp# ls
debootstrap_1.0.53_all.deb  lost+found
root@rescue:/mnt/tmp# ar x debootstrap_1.0.53_all.deb
root@rescue:/mnt/tmp# ls
control.tar.gz    debian-binary            lost+found
data.tar.gz    debootstrap_1.0.53_all.deb
root@rescue:/mnt/tmp# tar xvzf data.tar.gz
./
./usr/
./usr/share/
./usr/share/man/
./usr/share/man/man8/
./usr/share/man/man8/debootstrap.8.gz
./usr/share/doc/
./usr/share/doc/debootstrap/
./usr/share/doc/debootstrap/README
./usr/share/doc/debootstrap/copyright
./usr/share/doc/debootstrap/changelog.gz
./usr/share/debootstrap/
./usr/share/debootstrap/devices.tar.gz
./usr/share/debootstrap/functions
./usr/share/debootstrap/scripts/
./usr/share/debootstrap/scripts/potato
./usr/share/debootstrap/scripts/sid
./usr/share/debootstrap/scripts/breezy
./usr/share/debootstrap/scripts/hoary.buildd
./usr/share/debootstrap/scripts/woody
./usr/share/debootstrap/scripts/sarge.fakechroot
./usr/share/debootstrap/scripts/warty
./usr/share/debootstrap/scripts/warty.buildd
./usr/share/debootstrap/scripts/hoary
./usr/share/debootstrap/scripts/feisty
./usr/share/debootstrap/scripts/gutsy
./usr/share/debootstrap/scripts/sarge
./usr/share/debootstrap/scripts/sarge.buildd
./usr/share/debootstrap/scripts/edgy
./usr/share/debootstrap/scripts/woody.buildd
./usr/share/debootstrap/scripts/dapper
./usr/sbin/
./usr/sbin/debootstrap
./usr/share/debootstrap/scripts/quantal
./usr/share/debootstrap/scripts/raring
./usr/share/debootstrap/scripts/precise
./usr/share/debootstrap/scripts/oldstable
./usr/share/debootstrap/scripts/jaunty
./usr/share/debootstrap/scripts/natty
./usr/share/debootstrap/scripts/karmic
./usr/share/debootstrap/scripts/oneiric
./usr/share/debootstrap/scripts/hardy
./usr/share/debootstrap/scripts/squeeze
./usr/share/debootstrap/scripts/intrepid
./usr/share/debootstrap/scripts/etch-m68k
./usr/share/debootstrap/scripts/etch
./usr/share/debootstrap/scripts/unstable
./usr/share/debootstrap/scripts/saucy
./usr/share/debootstrap/scripts/testing
./usr/share/debootstrap/scripts/maverick
./usr/share/debootstrap/scripts/lucid
./usr/share/debootstrap/scripts/lenny
./usr/share/debootstrap/scripts/wheezy
./usr/share/debootstrap/scripts/stable
./usr/share/debootstrap/scripts/jessie
root@rescue:/mnt/tmp# ./usr/sbin/debootstrap --arch amd64 wheezy /mnt/ http://ftp.us.debian.org/debian

....

root@rescue:~# mount --bind /proc /mnt/proc
root@rescue:~# mount --bind /sys /mnt/sys
root@rescue:/mnt# mount --bind /dev /mnt/dev
root@rescue:/mnt#

LANG=C.UTF-8 chroot /mnt/ /bin/bash

&nbsp;

apt-get install locales lvm2 bind9-host

dpkg-reconfigure locales

Choisir en_US.UTF-8 & fr_FR.UTF-8 et choisir l’un des deux en langue principal

dpkg-reconfigure tzdata

vi /etc/hostname

vi /etc/network/interfaces

vi /etc/resolv.conf

vi /etc/hosts

vi /etc/fstab

Modification /etc/apt/sources.list (ajouter notamment ce qui est security)


# Debian packages for stable
deb http://ftp2.fr.debian.org/debian/ stable main contrib
# Uncomment the deb-src line if you want 'apt-get source'
# to work with most packages.
deb-src http://ftp2.fr.debian.org/debian/ stable main contrib

# Security updates for stable
deb http://security.debian.org/ stable/updates main contrib
deb-src http://security.debian.org/ stable/updates main contrib

deb http://ftp2.fr.debian.org/debian/ wheezy-updates main
deb-src http://ftp2.fr.debian.org/debian/ wheezy-updates main

deb http://ftp2.fr.debian.org/debian/ wheezy-backports main
deb-src http://ftp2.fr.debian.org/debian/ wheezy-backports main


apt-get update

apt-get dist-upgrade

tasksel install standard ssh

apt-get install grub2 linux-image-amd64 initramfs-tools openssh-server
Share

WordPress 3.6 & NetGen 2.0 ne font pas bon ménage…

A celles et ceux qui liraient ce blog, attention il n’est pas de bon ton de mettre à jour son WordPress à jour en version WordPress 3.6 avec le plugin en version NextGen 2.0….

J’ai du faire un retour arrière sur le plugin Netxgen en version 1.9.13 parce que cela plante d’un peu partout sinon.

Voilà vous êtes prévenu…

PS : Ce n’est toujours pas mieux avec la version 2.0.7

Share

Rooter son smartphone Auchan du type Lazer X40i

Télécharger sur le site http://androidsu.com/superuser/ les packages arm Superuser-3.1.3-arm-signed.zip

Dézipper sur votre PC le fichier :

root@mony-W250EGQ-W270EGQ:/home/mony/Téléchargements# unzip Superuser-3.1.3-arm-signed.zip
Archive:  Superuser-3.1.3-arm-signed.zip
signed by SignApk
  inflating: META-INF/MANIFEST.MF   
  inflating: META-INF/CERT.SF       
  inflating: META-INF/CERT.RSA      
  inflating: META-INF/com/google/android/update-binary 
  inflating: META-INF/com/google/android/updater-script 
  inflating: system/app/Superuser.apk 
  inflating: system/bin/su          
root@mony-W250EGQ-W270EGQ:/home/mony/Téléchargements#

Poussez les fichiers sur votre smartphone :

root@mony-W250EGQ-W270EGQ:/home/mony/Téléchargements# adb root
adbd is already running as root
root@mony-W250EGQ-W270EGQ:/home/mony/Téléchargements# adb push system/bin/su /system/bin
4861 KB/s (380532 bytes in 0.076s)
root@mony-W250EGQ-W270EGQ:/home/mony/Téléchargements# adb push system/app/Superuser.apk /system/app
5742 KB/s (1468798 bytes in 0.249s)
root@mony-W250EGQ-W270EGQ:/home/mony/Téléchargements#

Passer en mode shell « root » sur votre téléphone :

root@mony-W250EGQ-W270EGQ:/home/mony/Téléchargements# adb shell
root@android:/ # chmod 7655 /system/bin/su                                    
root@android:/ # chmod 644 /system/app/Superuser.apk                          
root@android:/ # chown root.shell /system/bin/su
root@android:/ # chown root.shell /system/app/Superuser.apk
root@android:/ #

Redémarrer le téléphone…

Share