Outils pour utilisateurs

Outils du site


blog

Notes son-alsa

Voir :

Voir aussi PulseAudio

alsamixer #this sets the simplified Pulseaudio mixer controls
alsamixer -c0 #this sets up the actual ALSA sound card levels
alsamixer -c 0

[F4] pour les entrées son (micros) Input Source Rear Mic

A tester

Si tout est ok en root :

alsactl store

Mettre “Rear Mic” en “Input Source” en ligne de commande

amixer -c0 cset iface=MIXER,name='Input Source',index=0 'Rear Mic'

http://thenerdshow.com/index30e5.html

Ca marche ! Mais j'ai rajoutée cette ligne partout pour la lancer au démarrage du PC, pas moyen. Visiblement qqch change ma config son.

En tapant mate-session-properties (idem que gnome-session-properties, mais pour mate)

Système de son PulseAudio start-pulseaudio-x11

C'est lui le coupable. Je ruse en remplaçant la ligne :

start-pulseaudio-x11; amixer -c0 cset iface=MIXER,name='Input Source',index=0 'Rear Mic'

Ça ne marche pas. Un autre process se lançant au démarrage modifie ma config.

Je ruse en créant un script :

/usr/local/bin/jitsi.sh

#! /bin/bash
 
sleep 15 ; amixer -c0 cset iface=MIXER,name='Input Source',index=0 'Rear Mic'
 
jitsi

C'est lui que j'appelle au démarrage du PC.


Couper le son HP (Mute)

amixer set Master mute

Rétablir le son HP

amixer set Master toggle

Couper le son du micro (Mute)

amixer set Capture nocap

Rétablir le son du micro

amixer set Capture cap

Réduire ou augmenter le son

amixer -D pulse sset Master 50%
amixer set Master 5+

Désactiver le micro

$ cat /proc/asound/modules
 0 snd_hda_intel
 1 snd_hda_intel
echo 'blacklist snd_hda_intel' | sudo tee -a /etc/modprobe.d/blacklist.conf

Autres

Sur Raspbian

/usr/sbin/alsactl -E HOME=/run/alsa -s -n 19 -c rdaemon
Mix
2025/03/24 15:06

Snapshot LVM

Voir :

  • btrfs
  • Stratis
  • nilfs2
2025/03/24 15:06

Snapshot de process avec criu

CRIU avec Docker tmux

Source : https://github.com/jpetazzo/critmux

Démo ici : https://asciinema.org/a/9889

docker run -t -i --privileged --name critmux jpetazzo/critmux
docker stop critmux
docker start critmux ; docker attach critmux

Brouillon

wget http://ftp.fr.debian.org/debian/pool/main/c/criu/criu_1.6.1-1_amd64.deb
sha256sum criu_1.6.1-1_amd64.deb

Le nombre en hexadécimal retourné par sha256sum doit être le même que celui figurant sur la page https://packages.debian.org/experimental/amd64/criu/download

<cide → 78c1acc0fa73e7b7843945f314802760c485557a927f9f886489d0ccb823fc87 criu_1.6.1-1_amd64.deb </code>

dpki -i criu_1.6.1-1_amd64.deb
apt-get -f install
# mkdir checkpoint
# criu dump -D checkpoint -t $(pgrep iceweasel) --file-locks
Error (sk-inet.c:141): Connected TCP socket, consider using tcp-established option.
Error (cr-dump.c:1584): Dump files (pid: 17543) failed with -1
Error (cr-dump.c:1947): Dumping FAILED.

On compile newns (voir http://criu.org/VNC)

#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <sys/mount.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/param.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <signal.h>
#include <sched.h>
 
#define STACK_SIZE	(8 * 4096)
 
static int ac;
static char **av;
static int ns_exec(void *_arg)
{
	int fd;
 
	fd = open("newns.log", O_CREAT | O_TRUNC | O_RDWR | O_APPEND, 0600);
	if (fd >= 0) {
		close(0);
		dup2(fd, 1);
		dup2(fd, 2);
		close(fd);
	}
 
	setsid();
	execvp(av[1], av + 1);
	return 1;
}
 
int main(int argc, char **argv)
{
	void *stack;
	int ret;
	pid_t pid;
 
	ac = argc;
	av = argv;
 
	stack = mmap(NULL, STACK_SIZE, PROT_WRITE | PROT_READ,
			MAP_PRIVATE | MAP_GROWSDOWN | MAP_ANONYMOUS, -1, 0);
	if (stack == MAP_FAILED) {
		fprintf(stderr, "Can't map stack %m\n");
		exit(1);
	}
	pid = clone(ns_exec, stack + STACK_SIZE,
			CLONE_NEWPID | CLONE_NEWIPC | SIGCHLD, NULL);
	if (pid < 0) {
		fprintf(stderr, "clone() failed: %m\n");
		exit(1);
	}
	return 0;
}
gcc newns.c -o newns
mv newns /usr/local/bin/
chmod +x /usr/local/bin/newns
$ newns iceweasel

clone() failed: Operation not permitted </code>

Voir https://github.com/lxc/lxc/issues/261

J'ai essayé : Sans succès !

echo 1 > /sys/fs/cgroup/cpu,cpuacct/cgroup.clone_children 
echo 1 > /proc/sys/kernel/unprivileged_userns_clone

Analysons

$ strace newns 2>&1 | grep -i clone
clone(child_stack=0x7f105164fff0, flags=CLONE_NEWIPC|CLONE_NEWPID|SIGCHLD) = -1 EPERM (Operation not permitted)
write(2, "clone() failed: Operation not pe"..., 40clone() failed: Operation not permitted
2025/03/24 15:06

Scripting shell bash et tests unitaires avec bats

apt-get install -y --no-install-recommends bats

test/spec.bats

#!/usr/bin/env bats
 
set -euo pipefail
 
@test "Check apache2 is up" {
  ps aux | grep "apache2"
}

test/spec.bats

#! /usr/bin/env bats
 
set -eu
 
setup() {
        # Appelée avant chaque test unitaire
        #echo "$(date --iso-8601=second BEGIN $BATS_TEST_NUMBER $BATS_TEST_NAME" > /dev/stdin
        true
}
 
teardown() {
        # Appelée après chaque test unitaire
        #echo "$(date --iso-8601=second) END   $BATS_TEST_NUMBER $BATS_TEST_NAME" > /dev/stdin
        true
}
 
setup_file() {
        # Appelée une seule fois au début du lancement de ce script
        echo "$(date --iso-8601=second) BEGIN $(basename $BATS_TEST_FILENAME)" > /dev/stdin
}
 
teardown_file() {
        # Appelée une seule fois en dernier lors de l’exécution de ce script
        sleep 1
        echo -e "\b$(date --iso-8601=second) END   $(basename $BATS_TEST_FILENAME)" > /dev/stdin
}
 
### Exemple de tests
 
@test "prereq - create account" {
        ansible -b -i tests/inventory -m user -a 'name=testplop' all
}
 
@test "Check required fields" {
        ansible-playbook --check tests/test.yml -i tests/inventory |grep -q 'NameError.'
}

Dépendance et condition

test/spec.bats

foo() {
        echo foobar > /tmp/plop
}
 
@test "foobar" {
        run foo
}

Autres

tests/spec.sh

#! /bin/bash
 
set -eu
 
if [ -z "${ALREADY_RUN:-}" ]
then
        export ALREADY_RUN=yes
fi

test/spec.bats

#! /usr/bin/env bats
 
set -eu
 
load spec.sh
 
@test "clean" {
        if [ ! -z  "${ALREADY_RUN:-}" ]
        then
                ssh server -- sudo find /opt/app1/ -type f -delete
        fi
}
2025/03/24 15:06
blog.txt · Dernière modification : de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki