Bagaimana cara mengakses nama distribusi di baris perintah?

12

Saya memiliki sejumlah distro yang saya mainkan. Saya memberi label pada kartu SD, tetapi:

  1. Mereka terbalik
  2. Saya biasanya di ruangan lain dari RPi

Saya mengatur layanan di init.d yang memberi tahu saya melalui Pushover ketika Pi saya dimatikan atau memulai (menggunakan API via curl).

Saya ingin ini termasuk distro mana yang saya gunakan saat ini.

Saya dapat melihat pada sepatu boot terbaru saya (bermain dengan Raspbian AdWords):

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

Bagaimana saya bisa mendapatkan informasi itu untuk dimasukkan ke dalam skrip saya?

Saya menginstal lsb-release, tetapi itu hanya memberi saya ini:

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

Yang akan terlihat sama dengan Raspbian reguler saya.

Selain itu, saya mungkin ingin menunjukkan sesuatu sendiri tentang contoh khusus pada kartu SD (karena saya mungkin akan memiliki beberapa distro basis yang sama). Jelas, saya hanya bisa meletakkan file di tempat yang sama pada setiap kartu-SD, tetapi apakah ada konvensi tempat untuk meletakkan informasi semacam itu?

Cade Roux
sumber
Wow Keren. Bisakah Anda menunjukkan bagaimana Anda menyusun hal pushover / init.d itu? Saya akan mengajukan pertanyaan jika Anda akan menjawabnya :)
Zlatko
@zladuric Daftar di pushover.net untuk mendapatkan akun. API ikal sangat sederhana. Saya membuat skrip sederhana di init.d sebagai "layanan" dan hanya mengirim notifikasi yang berbeda saat start / stop. Secara teknis itu adalah pemberitahuan berhenti, jadi jika itu pernah "mulai" itu akan mengirimkan pemberitahuan. Dalam praktiknya, tidak ada yang memulai atau menghentikannya kecuali boot dan shutdown. Jika Anda ingin kode lengkap, silakan dan kirim pertanyaan.
Cade Roux
di sini adalah pertanyaan: raspberrypi.stackexchange.com/questions/1531/... :)
Zlatko

Jawaban:

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

Mencoba

cat /etc/*-release

Di desktop saya, itu memberi

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/"

Setelah memeriksa gambar resmi Raspberry Pi (Raspbian dan Arch), /etc/os-releasetersedia di keduanya dan berisi setidaknya properti NAME dan PRETTY_NAME.

Bagaimana cara mengekstrak nama distribusi?

Itu cukup sederhana, coba

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

Referensi

  1. HowTo: Cari Tahu Nama dan Versi Distribusi Linux Saya
Alex Chamberlain
sumber
Kelihatan bagus. Pada akhirnya tidak masalah jika ini benar-benar universal, asalkan itu berfungsi untuk distro yang bersangkutan. Dan akan mudah untuk meletakkan file sendiri di sistem file jika bereksperimen dengan yang tidak memilikinya secara default.
Chris Stratton
4

Seperti yang ditunjukkan, Anda dapat menggunakan uname, tetapi ini hanya akan menampilkan versi kernel. Jika Anda memiliki versi kernel yang sama pada beberapa distribusi / kartu yang berbeda (yang sangat mungkin karena beberapa dari mereka menggunakan kernel foundation yang sama), Anda akan mendapatkan hasil yang sama untuk masing-masingnya. Jadi cara terbaik untuk membedakan distro adalah dengan menggunakan sesuatu selain kernel. Namun tidak ada cara universal. Salah satu cara mudah adalah dengan menggunakan nama host (dan mengubahnya untuk setiap distro).

cat / proc / versi / proc / sys / kernel / hostname

atau

hostname && uname -a

Krzysztof Adamski
sumber
cat / proc / versi / proc / sys / kernel / hostname
Krzysztof Adamski
hostname && uname -a (dengan asumsi hostname berfungsi - pi tidak bisa di-boot untuk memeriksa saat ini)
Chris Stratton