¿Cómo accedo al nombre de la distribución en la línea de comando?

12

Tengo varias distribuciones con las que estoy jugando. Etiqueto las tarjetas SD, pero:

  1. Están al revés
  2. Normalmente estoy en otra habitación del RPi

Configuré un servicio en init.d que me permite saber a través de Pushover cuando mi Pi se está cerrando o iniciando (usando la API a través de curl).

Me gustaría que esto incluya la distribución que estoy usando actualmente.

Puedo ver en mi último arranque (jugando con adafruit Raspbian):

Linux raspberrypi 3.1.9adafruit+ #8 PREEMPT Wed Aug 1 18:02:42 EDT 2012 armv6l

¿Cómo puedo obtener esa información para incluirla en mi script?

Instalé lsb-release, pero eso solo me da esto:

pi@raspberrypi / $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux testing/unstable
Release:    testing/unstable
Codename:   n/a

Que se vería igual que mi Raspbian habitual.

Además, probablemente me gustaría indicar algo sobre la instancia particular en la tarjeta SD (ya que probablemente tendré múltiples de la misma distribución base). Obviamente, puedo colocar un archivo en el mismo lugar en cada tarjeta SD, pero ¿hay alguna convención sobre dónde colocar ese tipo de información?

Cade Roux
fuente
Wow genial. ¿Puede señalar cómo armó esa cosa pushover / init.d? Haré una pregunta si la contestas :)
Zlatko
@zladuric Regístrese en pushover.net para obtener una cuenta. La API de curl es bastante simple. Configuré un script simple en init.d como un "servicio" y simplemente envía notificaciones diferentes al iniciar / detener. Técnicamente, es una notificación de inicio y detención, por lo que si alguna vez obtiene "inicio", enviará una notificación. En la práctica, nada los inicia ni los detiene, excepto el arranque y el apagado. Si desea el código completo, continúe y publique una pregunta.
Cade Roux
Aquí está la pregunta: raspberrypi.stackexchange.com/questions/1531/… :)
Zlatko

Respuestas:

8
$ uname -a
Linux raspberrypi 3.1.9+ #174 PREEMPT Sun Jul 22 19:04:28 BST 2012 armv6l GNU/Linux
John La Rooy
fuente
7

Tratar

cat /etc/*-release

En mi escritorio, da

NAME="Arch Linux"
ID=arch
PRETTY_NAME="Arch Linux"
ANSI_COLOR="0;36"
HOME_URL="https://www.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"

Habiendo verificado las imágenes oficiales de Raspberry Pi (Raspbian y Arch), /etc/os-releaseestá disponible en ambos y contiene al menos las propiedades NAME y PRETTY_NAME.

¿Cómo extraigo el nombre de la distribución?

Eso es bastante simple, intente

$ cat /etc/os-release | perl -n -e '/^NAME=\"([a-zA-Z ]*)\"$/ && print "$1\n"'
Arch Linux

Referencias

  1. Cómo: averiguar el nombre y la versión de mi distribución de Linux
Alex Chamberlain
fuente
Se ve bien. En última instancia, no importa si esto es realmente universal, siempre que funcione para las distribuciones en cuestión. Y sería fácil poner el propio archivo en el sistema de archivos si experimenta con uno que no lo tiene por defecto.
Chris Stratton el
4

Como se señaló, puede usar uname, pero esto solo mostrará la versión del kernel. Si tiene la misma versión de kernel en un par de diferentes distribuciones / tarjetas (lo cual es muy probable ya que algunas de ellas están usando el mismo kernel básico), obtendrá el mismo resultado para cada una de ellas. Entonces, la mejor manera de diferenciar entre distribuciones es usar algo que no sea el núcleo. Sin embargo, no hay un camino universal. Una manera fácil sería usar el nombre de host (y cambiarlo para cada distribución).

cat / proc / version / proc / sys / kernel / hostname

o

nombre de host && uname -a

Krzysztof Adamski
fuente
cat / proc / version / proc / sys / kernel / hostname
Krzysztof Adamski
hostname && uname -a (suponiendo que el nombre de host funciona - pi no está arrancado para verificar en este momento)
Chris Stratton