mirror of https://framagit.org/kyodev/kyopages.git
maj
This commit is contained in:
parent
5ac9f5279f
commit
00ca89de64
|
@ -1,279 +0,0 @@
|
||||||
# attention: remplacer index par les encadrés "", ex:
|
|
||||||
# DSCPL ⟷ "ds_cpl" CPL Qual. Debug Store par DS_CPL ⟷ _CPL Qual. Debug Store
|
|
||||||
# https://github.com/torvalds/linux/blob/master/arch/x86/include/asm/cpufeatures.h
|
|
||||||
# 11/2017
|
|
||||||
|
|
||||||
## Intel-defined CPU features, CPUID level 0x00000001 (edx), word 0
|
|
||||||
FPU ⟷ Onboard FPU
|
|
||||||
VME ⟷ Virtual Mode Extensions
|
|
||||||
DE ⟷ Debugging Extensions
|
|
||||||
PSE ⟷ Page Size Extensions
|
|
||||||
TSC ⟷ Time Stamp Counter
|
|
||||||
MSR ⟷ Model-Specific Registers
|
|
||||||
PAE ⟷ Physical Address Extensions
|
|
||||||
MCE ⟷ Machine Check Exception
|
|
||||||
CX8 ⟷ CMPXCHG8 instruction
|
|
||||||
APIC ⟷ Onboard APIC
|
|
||||||
SEP ⟷ SYSENTER/SYSEXIT
|
|
||||||
MTRR ⟷ Memory Type Range Registers
|
|
||||||
PGE ⟷ Page Global Enable
|
|
||||||
MCA ⟷ Machine Check Architecture
|
|
||||||
CMOV ⟷ CMOV instructions (plus FCMOVcc, FCOMI with FPU)
|
|
||||||
PAT ⟷ Page Attribute Table
|
|
||||||
PSE36 ⟷ 36-bit PSEs
|
|
||||||
PN ⟷ Processor serial number
|
|
||||||
CLFLUSH ⟷ CLFLUSH instruction
|
|
||||||
DTS ⟷ Debug Store
|
|
||||||
ACPI ⟷ ACPI via MSR
|
|
||||||
MMX ⟷ Multimedia Extensions
|
|
||||||
FXSR ⟷ FXSAVE/FXRSTOR, CR4.OSFXSR
|
|
||||||
SSE ⟷ sse
|
|
||||||
SSE2 ⟷ sse2
|
|
||||||
SS ⟷ CPU self snoop
|
|
||||||
HT ⟷ Hyper-Threading
|
|
||||||
TM ⟷ Automatic clock control
|
|
||||||
IA64 ⟷ IA-64 processor
|
|
||||||
PBE ⟷ Pending Break Enable
|
|
||||||
|
|
||||||
## AMD-defined CPU features, CPUID level 0x80000001, word 1 Don't duplicate feature flags which are redundant with Intel!
|
|
||||||
SYSCALL ⟷ SYSCALL/SYSRET
|
|
||||||
MP ⟷ MP Capable.
|
|
||||||
NX ⟷ Execute Disable
|
|
||||||
MMXEXT ⟷ AMD MMX extensions
|
|
||||||
FXSR_OPT ⟷ FXSAVE/FXRSTOR optimizations
|
|
||||||
PDPE1GB ⟷ GB pages
|
|
||||||
RDTSCP ⟷ RDTSCP
|
|
||||||
LM ⟷ Long Mode (x86-64)
|
|
||||||
3DNOWEXT ⟷ AMD 3DNow! extensions
|
|
||||||
3DNOW ⟷ 3DNow!
|
|
||||||
|
|
||||||
## Transmeta-defined CPU features, CPUID level 0x80860001, word 2
|
|
||||||
RECOVERY ⟷ CPU in recovery mode
|
|
||||||
LONGRUN ⟷ Longrun power control
|
|
||||||
LRTI ⟷ LongRun table interface
|
|
||||||
|
|
||||||
## Other features, Linux-defined mapping, word 3 This range is used for feature bits which conflict or are synthesized
|
|
||||||
CXMMX ⟷ Cyrix MMX extensions
|
|
||||||
K6_MTRR ⟷ AMD K6 nonstandard MTRRs
|
|
||||||
CYRIX_ARR ⟷ Cyrix ARRs (= MTRRs)
|
|
||||||
CENTAUR_MCR ⟷ Centaur MCRs (= MTRRs)
|
|
||||||
|
|
||||||
## cpu types for specific tunings:
|
|
||||||
K8 ⟷ Opteron, Athlon64
|
|
||||||
K7 ⟷ Athlon
|
|
||||||
P3 ⟷ P3
|
|
||||||
P4 ⟷ P4
|
|
||||||
CONSTANT_TSC ⟷ TSC ticks at a constant rate
|
|
||||||
UP ⟷ smp kernel running on up
|
|
||||||
ART ⟷ Platform has always running timer (ART)
|
|
||||||
ARCH_PERFMON ⟷ Intel Architectural PerfMon
|
|
||||||
PEBS ⟷ Precise-Event Based Sampling
|
|
||||||
BTS ⟷ Branch Trace Store
|
|
||||||
SYSCALL32 ⟷ syscall in ia32 userspace
|
|
||||||
SYSENTER32 ⟷ sysenter in ia32 userspace
|
|
||||||
REP_GOOD ⟷ rep microcode works well
|
|
||||||
MFENCE_RDTSC ⟷ Mfence synchronizes RDTSC
|
|
||||||
LFENCE_RDTSC ⟷ Lfence synchronizes RDTSC
|
|
||||||
ACC_POWERAMD ⟷ Accumulated Power Mechanism
|
|
||||||
NOPL ⟷ instructions
|
|
||||||
ALWAYS ⟷ Always-present feature
|
|
||||||
XTOPOLOGY ⟷ cpu topology enum extensions
|
|
||||||
TSC_RELIABLE ⟷ TSC is known to be reliable
|
|
||||||
NONSTOP_TSC ⟷ TSC does not stop in C states
|
|
||||||
CPUID ⟷ CPU has CPUID instruction itself
|
|
||||||
EXTD_APICID ⟷ has extended APICID (8 bits)
|
|
||||||
AMD_DCM ⟷ multi-node processor
|
|
||||||
APERFMPERF ⟷ APERFMPERF
|
|
||||||
NONSTOP_TSC_S3 ⟷ TSC doesn't stop in S3 state
|
|
||||||
TSC_KNOWN_FREQ ⟷ TSC has known frequency
|
|
||||||
|
|
||||||
## Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4
|
|
||||||
PNI ⟷ SSE-3
|
|
||||||
PCLMULQDQ ⟷ PCLMULQDQ instruction
|
|
||||||
DTES64 ⟷ 64-bit Debug Store
|
|
||||||
MONITOR ⟷ Monitor/Mwait support
|
|
||||||
DS_CPL ⟷ CPL Qual. Debug Store
|
|
||||||
VMX ⟷ Hardware virtualization
|
|
||||||
SMX ⟷ Safer mode
|
|
||||||
EST ⟷ Enhanced SpeedStep
|
|
||||||
TM2 ⟷ Thermal Monitor 2
|
|
||||||
SSSE3 ⟷ Supplemental SSE-3
|
|
||||||
CID ⟷ Context ID
|
|
||||||
SDBG ⟷ Silicon Debug
|
|
||||||
FMA ⟷ Fused multiply-add
|
|
||||||
CX16 ⟷ CMPXCHG16B
|
|
||||||
XTPR ⟷ Send Task Priority Messages
|
|
||||||
PDCM ⟷ Performance Capabilities
|
|
||||||
PCID ⟷ Process Context Identifiers
|
|
||||||
DCA ⟷ Direct Cache Access
|
|
||||||
SSE4_1 ⟷ SSE-4.1
|
|
||||||
SSE4_2 ⟷ SSE-4.2
|
|
||||||
X2APIC ⟷ x2APIC
|
|
||||||
MOVBE ⟷ MOVBE instruction
|
|
||||||
POPCNT ⟷ POPCNT instruction
|
|
||||||
TSC_DEADLINE_TIMER ⟷ Tsc deadline timer
|
|
||||||
AES ⟷ AES instructions
|
|
||||||
XSAVE ⟷ XSAVE/XRSTOR/XSETBV/XGETBV
|
|
||||||
OSXSAVE ⟷ XSAVE enabled in the OS
|
|
||||||
AVX ⟷ Advanced Vector Extensions
|
|
||||||
F16C ⟷ 16-bit fp conversions
|
|
||||||
RDRAND ⟷ The RDRAND instruction
|
|
||||||
HYPERVISOR ⟷ Running on a hypervisor
|
|
||||||
|
|
||||||
## VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5
|
|
||||||
RNG ⟷ RNG present (xstore)
|
|
||||||
RNG_EN ⟷ RNG enabled
|
|
||||||
ACE ⟷ on-CPU crypto (xcrypt)
|
|
||||||
ACE_EN ⟷ on-CPU crypto enabled
|
|
||||||
ACE2 ⟷ Advanced Cryptography Engine v2
|
|
||||||
ACE2_EN ⟷ ACE v2 enabled
|
|
||||||
PHE ⟷ PadLock Hash Engine
|
|
||||||
PHE_EN ⟷ PHE enabled
|
|
||||||
PMM ⟷ PadLock Montgomery Multiplier
|
|
||||||
PMM_EN ⟷ PMM enabled
|
|
||||||
|
|
||||||
## More extended AMD flags: CPUID level 0x80000001, ecx, word 6
|
|
||||||
LAHF_LM ⟷ LAHF/SAHF in long mode
|
|
||||||
CMP_LEGACY ⟷ If yes HyperThreading not valid
|
|
||||||
SVM ⟷ Secure virtual machine
|
|
||||||
EXTAPIC ⟷ Extended APIC space
|
|
||||||
CR8_LEGACY ⟷ CR8 in 32-bit mode
|
|
||||||
ABM ⟷ Advanced bit manipulation
|
|
||||||
SSE4A ⟷ SSE-4A
|
|
||||||
MISALIGNSSE ⟷ Misaligned SSE mode
|
|
||||||
3DNOWPREFETCH ⟷ 3DNow prefetch instructions
|
|
||||||
OSVWOS ⟷ Visible Workaround
|
|
||||||
IBS ⟷ Instruction Based Sampling
|
|
||||||
XOP ⟷ extended AVX instructions
|
|
||||||
SKINIT ⟷ SKINIT/STGI instructions
|
|
||||||
WDT ⟷ Watchdog timer
|
|
||||||
LWP ⟷ Light Weight Profiling
|
|
||||||
FMA44 ⟷ operands MAC instructions
|
|
||||||
TCE ⟷ translation cache extension
|
|
||||||
NODEID_MSR ⟷ NodeId MSR
|
|
||||||
TBM ⟷ trailing bit manipulations
|
|
||||||
TOPOEXT ⟷ topology extensions CPUID leafs
|
|
||||||
PERFCTR_CORE ⟷ core performance counter extensions
|
|
||||||
PERFCTR_NB ⟷ NB performance counter extensions
|
|
||||||
BPEXT ⟷ data breakpoint extension
|
|
||||||
PTSC ⟷ performance time-stamp counter
|
|
||||||
PERFCTR_LLC ⟷ Last Level Cache performance counter extensions
|
|
||||||
MWAITX ⟷ MWAIT extension (MONITORX/MWAITX)
|
|
||||||
|
|
||||||
## Auxiliary flags: Linux defined - For features scattered in various CPUID levels like 0x6, 0xA etc, word 7.
|
|
||||||
RING3MWAIT ⟷ Ring 3 MONITOR/MWAIT
|
|
||||||
CPUID_FAULT ⟷ Intel CPUID faulting
|
|
||||||
CPB ⟷ AMD Core Performance Boost
|
|
||||||
EPB ⟷ IA32_ENERGY_PERF_BIAS support
|
|
||||||
CAT_L3 ⟷ Cache Allocation Technology L3
|
|
||||||
CAT_L2 ⟷ Cache Allocation Technology L2
|
|
||||||
CDP_L3 ⟷ Code and Data Prioritization L3
|
|
||||||
|
|
||||||
HW_PSTATE ⟷ AMD HW-PState
|
|
||||||
PROC_FEEDBACK ⟷ AMD ProcFeedbackInterface
|
|
||||||
SME ⟷ AMD Secure Memory Encryption
|
|
||||||
|
|
||||||
INTEL_PPIN ⟷ Intel Processor Inventory Number
|
|
||||||
INTEL_PT ⟷ Intel Processor Trace
|
|
||||||
AVX512_4VNNIW ⟷ AVX-512 Neural Network Instructions
|
|
||||||
AVX512_4FMAPS ⟷ AVX-512 Multiply Accumulation Single precision
|
|
||||||
|
|
||||||
MBA ⟷ Memory Bandwidth Allocation
|
|
||||||
|
|
||||||
## Virtualization flags: Linux defined, word 8
|
|
||||||
TPR_SHADOW ⟷ Intel TPR Shadow
|
|
||||||
VNMI ⟷ Intel Virtual NMI
|
|
||||||
FLEXPRIORITY ⟷ Intel FlexPriority
|
|
||||||
EPT ⟷ Intel Extended Page Table
|
|
||||||
VPID ⟷ Intel Virtual Processor ID
|
|
||||||
|
|
||||||
VMMCALL ⟷ Prefer vmmcall to vmcall
|
|
||||||
XENPV ⟷ Xen paravirtual guest
|
|
||||||
|
|
||||||
|
|
||||||
## Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9
|
|
||||||
FSGSBASE ⟷ {RD/WR}{FS/GS}BASE instructions
|
|
||||||
TSC_ADJUST ⟷ TSC adjustment MSR 0x3b
|
|
||||||
BMI1 ⟷ 1st group bit manipulation extensions
|
|
||||||
HLE ⟷ Hardware Lock Elision
|
|
||||||
AVX2 ⟷ AVX2 instructions
|
|
||||||
SMEP ⟷ Supervisor Mode Execution Protection
|
|
||||||
BMI2 ⟷ 2nd group bit manipulation extensions
|
|
||||||
ERMS ⟷ Enhanced REP MOVSB/STOSB
|
|
||||||
INVPCID ⟷ Invalidate Processor Context ID
|
|
||||||
RTM ⟷ Restricted Transactional Memory
|
|
||||||
CQM ⟷ Cache QoS Monitoring
|
|
||||||
MPX ⟷ Memory Protection Extension
|
|
||||||
RDT_A ⟷ Resource Director Technology Allocation
|
|
||||||
AVX512F ⟷ AVX-512 Foundation
|
|
||||||
AVX512DQ ⟷ AVX-512 DQ (Double/Quad granular) Instructions
|
|
||||||
RDSEED ⟷ The RDSEED instruction
|
|
||||||
ADX ⟷ The ADCX and ADOX instructions
|
|
||||||
SMAP ⟷ Supervisor Mode Access Prevention
|
|
||||||
AVX512IFMA ⟷ AVX-512 Integer Fused Multiply-Add instructions
|
|
||||||
CLFLUSHOPT ⟷ CLFLUSHOPT instruction
|
|
||||||
CLWB ⟷ CLWB instruction
|
|
||||||
AVX512PF ⟷ AVX-512 Prefetch
|
|
||||||
AVX512ER ⟷ AVX-512 Exponential and Reciprocal
|
|
||||||
AVX512CD ⟷ AVX-512 Conflict Detection
|
|
||||||
SHA_NI ⟷ SHA1/SHA256 Instruction Extensions
|
|
||||||
AVX512BW ⟷ AVX-512 BW (Byte/Word granular) Instructions
|
|
||||||
AVX512VL ⟷ AVX-512 VL (128/256 Vector Length) Extensions
|
|
||||||
|
|
||||||
#Extended state features, CPUID level 0x0000000d:1 (eax), word 10
|
|
||||||
XSAVEOPT ⟷ XSAVEOPT
|
|
||||||
XSAVEC ⟷ XSAVEC
|
|
||||||
XGETBV1 ⟷ XGETBV with ECX = 1
|
|
||||||
XSAVES ⟷ XSAVES/XRSTORS
|
|
||||||
|
|
||||||
## Intel-defined CPU QoS Sub-leaf, CPUID level 0x0000000F:0 (edx), word 11
|
|
||||||
CQM_LLC ⟷ LLC QoS if 1
|
|
||||||
|
|
||||||
## Intel-defined CPU QoS Sub-leaf, CPUID level 0x0000000F:1 (edx), word 12
|
|
||||||
CQM_OCCUP_LLC ⟷ LLC occupancy monitoring if 1
|
|
||||||
CQM_MBM_TOTAL ⟷ LLC Total MBM monitoring
|
|
||||||
CQM_MBM_LOCAL ⟷ LLC Local MBM monitoring
|
|
||||||
|
|
||||||
## AMD-defined CPU features, CPUID level 0x80000008 (ebx), word 13
|
|
||||||
CLZERO ⟷ CLZERO instruction
|
|
||||||
IRPERF ⟷ Instructions Retired Count
|
|
||||||
|
|
||||||
## Thermal and Power Management Leaf, CPUID level 0x00000006 (eax), word 14
|
|
||||||
DTHERM ⟷ Digital Thermal Sensor
|
|
||||||
IDA ⟷ Intel Dynamic Acceleration
|
|
||||||
ARAT ⟷ Always Running APIC Timer
|
|
||||||
PLN ⟷ Intel Power Limit Notification
|
|
||||||
PTS ⟷ Intel Package Thermal Status
|
|
||||||
HWP ⟷ Intel Hardware P-states
|
|
||||||
HWP_NOTIFY ⟷ HWP Notification
|
|
||||||
HWP_ACT_WINDOW ⟷ HWP Activity Window
|
|
||||||
HWP_EPP ⟷ HWP Energy Perf. Preference
|
|
||||||
HWP_PKG_REQ ⟷ HWP Package Level Request
|
|
||||||
|
|
||||||
## AMD SVM Feature Identification, CPUID level 0x8000000a (edx), word 15
|
|
||||||
NPT ⟷ Nested Page Table support
|
|
||||||
LBRV ⟷ LBR Virtualization support
|
|
||||||
SVM_LOCK ⟷ SVM locking MSR
|
|
||||||
NRIP_SAVE ⟷ SVM next_rip save
|
|
||||||
TSC_SCALE ⟷ TSC scaling support
|
|
||||||
VMCB_CLEAN ⟷ VMCB clean bits support
|
|
||||||
FLUSHBYASID ⟷ flush-by-ASID support
|
|
||||||
DECODEASSISTS ⟷ Decode Assists support
|
|
||||||
PAUSEFILTER ⟷ filtered pause intercept
|
|
||||||
PFTHRESHOLD ⟷ pause filter threshold
|
|
||||||
AVIC ⟷ Virtual Interrupt Controller
|
|
||||||
V_VMSAVE_VMLOAD ⟷ Virtual VMSAVE VMLOAD
|
|
||||||
VGIF ⟷ Virtual GIF
|
|
||||||
|
|
||||||
## Intel-defined CPU features, CPUID level 0x00000007:0 (ecx), word 16
|
|
||||||
AVX512VBMI ⟷ AVX512 Vector Bit Manipulation instructions
|
|
||||||
PKU ⟷ Protection Keys for Userspace
|
|
||||||
OSPKEOS ⟷ Protection Keys Enable
|
|
||||||
AVX512_VPOPCNTDQ ⟷ POPCNT for vectors of DW/QW
|
|
||||||
LA57 ⟷ 5-level page tables
|
|
||||||
RDPID ⟷ RDPIDinstruction
|
|
||||||
|
|
||||||
## AMD-defined CPU features, CPUID level 0x80000007 (ebx), word 17
|
|
||||||
OVERFLOW_RECOV ⟷ MCA overflow recovery support
|
|
||||||
SUCCOR ⟷ Uncorrectable error containment and recovery
|
|
||||||
SMCA ⟷ Scalable MCA
|
|
|
@ -1,64 +0,0 @@
|
||||||
09/2016
|
|
||||||
https://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-vol-2a-manual.pdf
|
|
||||||
table 3.10 registre ECX
|
|
||||||
table 3.10 registre ECX
|
|
||||||
|
|
||||||
ACPI Thermal Monitor and Software Controlled Clock Facilities.
|
|
||||||
AESNI support the AESNI instruction extensions.
|
|
||||||
APIC APIC On-Chip.
|
|
||||||
AVX support the AVX instruction extensions.
|
|
||||||
CLFSH CLFLUSH Instruction.
|
|
||||||
CMOV Conditional Move Instructions.
|
|
||||||
CMPXCHG16B CMPXCHG16B feature.
|
|
||||||
CNXT-ID L1 Context ID.
|
|
||||||
CX8 CMPXCHG8B Instruction.
|
|
||||||
DCA supports the ability to prefetch data from a memory mapped device.
|
|
||||||
DE Debugging Extensions.
|
|
||||||
DS-CPL CPL Debug Store.
|
|
||||||
DS Debug Store.
|
|
||||||
DTES64 64-bit DS Area. The processor supports DS area using 64-bit layout.
|
|
||||||
EIST Enhanced Intel SpeedStep® technology.
|
|
||||||
F16C support 16-bit floating-point conversion instructions.
|
|
||||||
FMA support FMA extensions using YMM state.
|
|
||||||
FPU Floating Point Unit On-Chip. The processor contains an x87 FPU.
|
|
||||||
FXSR FXSAVE and FXRSTOR Instructions.
|
|
||||||
HTT Max APIC IDs reserved field is Valid.
|
|
||||||
MCA Machine Check Architecture.
|
|
||||||
MCE Machine Check Exception.
|
|
||||||
MMX Intel MMX Technology.
|
|
||||||
MONITOR MONITOR/MWAIT.
|
|
||||||
MOVBE support MOVBE instruction.
|
|
||||||
MSR Model Specific Registers RDMSR and WRMSR Instructions.
|
|
||||||
MTRR Memory Type Range Registers.
|
|
||||||
OSXSAVE the OS has set CR4.OSXSAVE[bit 18] to enable XSETBV/XGETBV instructions to access XCR0 and to support processor extended state management using XSAVE/XRSTOR.
|
|
||||||
PAE Physical Address Extension.
|
|
||||||
PAT Page Attribute Table.
|
|
||||||
PBE Pending Break Enable.
|
|
||||||
PCID Process-context identifiers.
|
|
||||||
PCLMULQDQ PCLMULQDQ instruction.
|
|
||||||
PDCM Perfmon and Debug Capability
|
|
||||||
PGE Page Global Bit.
|
|
||||||
POPCNT support the POPCNT instruction.
|
|
||||||
PSE-36 36-Bit Page Size Extension.
|
|
||||||
PSE Page Size Extension.
|
|
||||||
PSN Processor Serial Number.
|
|
||||||
RDRAND support RDRAND instruction.
|
|
||||||
SDBG support IA32_DEBUG_INTERFACE MSR for silicon debug.
|
|
||||||
SEP SYSENTER and SYSEXIT Instructions.
|
|
||||||
SMX Safer Mode Extensions.
|
|
||||||
SSE2 SSE2.
|
|
||||||
SSE3 Streaming SIMD Extensions 3 (SSE3).
|
|
||||||
SSE4.1 support SSE4.1.
|
|
||||||
SSE4.2 support SSE4.2.
|
|
||||||
SSE SSE.
|
|
||||||
SSSE3 Supplemental Streaming SIMD Extensions 3 (SSSE3).
|
|
||||||
SS Self Snoop.
|
|
||||||
TM2 Thermal Monitor 2.
|
|
||||||
TM Thermal Monitor.
|
|
||||||
TSC-Deadline the processor’s local APIC timer supports one-shot operation using a TSC deadline value.
|
|
||||||
TSC Time Stamp Counter.
|
|
||||||
VME Virtual 8086 Mode Enhancements.
|
|
||||||
VMX Virtual Machine Extensions
|
|
||||||
x2APIC x2APIC feature.
|
|
||||||
XSAVE support the XSAVE/XRSTOR processor extended states feature, the XSETBV/XGETBV instructions, and XCR0.
|
|
||||||
xTPR Update Control xTPR Update Control. The processor supports changing IA32_MISC_ENABLE[bit 23].
|
|
|
@ -1,112 +0,0 @@
|
||||||
librairie:
|
|
||||||
https://github.com/Maratyszcza/cpuinfo/blob/master/src/x86/uarch.c
|
|
||||||
|
|
||||||
intel
|
|
||||||
|
|
||||||
family 04) "Intel 80486, 1000 à 600nm";; # arch_x86, 1989-2007
|
|
||||||
|
|
||||||
family 05)
|
|
||||||
09) "Intel série Quark SoC X1000, 32nm";; # arch_x86, 2013 (Lakemont)
|
|
||||||
*) "Intel P5, 800 à 250nm";; # arch_x86, 1993-1999, 5V, 3.3V, pentium, pentium MMX, pentium-S
|
|
||||||
|
|
||||||
family 0F
|
|
||||||
00 | 01 | 02 NetBurst P68 (P4), 180, 130nm # arch_x86 2000, pentium4, pentium-D
|
|
||||||
03 | 04 Prescott NetBurst P68, 90nm # arch_x86?
|
|
||||||
06 Presler NetBurst P68 # arch_x86?
|
|
||||||
|
|
||||||
family 0B)
|
|
||||||
01 Knights Corner (Xeon Phi) # arch_x86?
|
|
||||||
|
|
||||||
family 06
|
|
||||||
01 "Intel P6 (i686) (Pentium Pro)";; # arch_x86, 1995
|
|
||||||
03 | 04 | 05 P6 Prescott (Pentium II) 90nm # arch_x86
|
|
||||||
06 P6 Prescott (Pentium II) 65nm # arch_x86
|
|
||||||
07 | 08 | 0A | 0B P6 (Pentium III) # arch_x86
|
|
||||||
09 | 0D | 15 P6 Dothan (Pentium M) 90nm # arch_x86 2003
|
|
||||||
0E Core, 65nm # arch_x86, 2006
|
|
||||||
0F | 16 Merom (Core2) 65nm
|
|
||||||
17 | 1D Penryn (Core2) 45nm
|
|
||||||
1A | 1E | 1F | 2E Nehalem 45nm
|
|
||||||
25 | 2C | 2F Westmere 32nm
|
|
||||||
2A | 2D Sandy Bridge 32nm
|
|
||||||
3A | 3E Ivy Bridge 22nm
|
|
||||||
3C | 3F | 45 | 46 Haswell 22nm
|
|
||||||
3D | 47 | 4F | 56 Broadwell 14nm
|
|
||||||
4E) "Intel Skylake 14nm (Y/U-Processor Lines)";; # 2015, 6th Generation intel doc 332689-011 06/2017 https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/desktop-6th-gen-core-family-spec-update.pdf xeon doc 333133-017U 09/2017 https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-e3-1200v5-spec-update.pdf
|
|
||||||
5E) "Intel Skylake 14nm (H/S-Processor Lines)";; # 2015, 6th Generation intel doc 332689-011 06/2017 https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/desktop-6th-gen-core-family-spec-update.pdf xeon doc 333133-017U 09/2017 https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/xeon-e3-1200v5-spec-update.pdf
|
|
||||||
55) "Intel Skylake 14nm";; # existe? vu sur cpuinfo
|
|
||||||
8E) "Intel Kaby Lake 14nm (Y/U/U-Quad Core-Processor Lines)";; # 2016, 7/8th Generation intel doc 334663-009 08/2017 https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/7th-gen-core-family-spec-update.pdf
|
|
||||||
9E) "Intel Kaby Lake 14nm (S/H/X-Processor Lines)";; # 2016, 7/8th Generation intel doc 334663-009 08/2017 https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/7th-gen-core-family-spec-update.pdf
|
|
||||||
|
|
||||||
xx "Intel Kaby Lake R 14nm (U-Quad Core-Processor Lines)";; # 2017,8th Generation U-Quad Core
|
|
||||||
xx "Intel Coffee Lake 14nm" # 10/2017
|
|
||||||
xx "Intel Cannonlake (skymont) 10nm" # 2018
|
|
||||||
xx icelake 10nm # 2018 ou 2019
|
|
||||||
xx tigerlake 10nm # 2019 gen12
|
|
||||||
xx sapphire rapids 7nm # 2020 gen12
|
|
||||||
|
|
||||||
# Atom
|
|
||||||
1C | 26 Bonnell 45nm
|
|
||||||
27 |35 |36 Saltwell 32nm
|
|
||||||
37 | 4A | 4D | 5A Silvermont 22nm
|
|
||||||
4C | 5D | 5F Airmont 14nm # 4th Generation Atom processor
|
|
||||||
|
|
||||||
?? 5F "Intel Atom (Goldmont), 14nm") # 2016
|
|
||||||
xx Goldmont+ 14nm
|
|
||||||
|
|
||||||
# Knights-series cores
|
|
||||||
57) "Intel knights_landing ";; # 335592-064 October 2017
|
|
||||||
85) "Intel Knights Mill (Xeon Phi), 14nm";; # 335592-064 October 2017
|
|
||||||
|
|
||||||
https://software.intel.com/sites/default/files/managed/22/0d/335592-sdm-vol-4.pdf
|
|
||||||
335592-064 October 2017 Software Developer’s Manual vol 4 table 2.1
|
|
||||||
https://software.intel.com/en-us/articles/intel-sdm
|
|
||||||
|
|
||||||
amd
|
|
||||||
family 05, model 0A ??? Geode # compatible x86 proc, Cyrix->NS->AMD référencé sur cpuinfo
|
|
||||||
|
|
||||||
family 04) # arch_x86
|
|
||||||
03 | 07 | 08 | 09 | 0A) "AMD Am486";; # années 90
|
|
||||||
0E | 0F) "AMD Am5x86, 350nm";; # 1995-1999
|
|
||||||
*) fg_uarch="AMD ?86 $defaut_model";;
|
|
||||||
|
|
||||||
family 05) # arch_x86
|
|
||||||
00 | 01 | 02 | 03) "AMD K5 SSA/5 ou 5k86, 350nm";; # 1996
|
|
||||||
06 | 07) "AMD K6 350, 250nm";; # 1997-1998
|
|
||||||
08) "AMD K6-2, 250nm";; # 1998-1999
|
|
||||||
09 | 0D) "AMD K6-3 Sharptooth, 250, 180nm";; # 1999-2000
|
|
||||||
*) fg_uarch="AMD K5/K6 $defaut_model";;
|
|
||||||
|
|
||||||
family 06) "AMD K7 Athlon, 250, 180, 130nm, (Classic/T-Bird/Palomino/T-Bred/Barton and Thorton";; # arch_x86 1999-2005
|
|
||||||
|
|
||||||
family 0F) # 2003-?
|
|
||||||
0? | 1?) "AMD K8 Hammer (SledgeHammer), 130-65nm";;
|
|
||||||
2?) "AMD K8 Hammer (SledgeHammer) (rev.E), 130-65nm";;
|
|
||||||
4? | 5? | 6? | 7? | C?) "AMD K8 Hammer (SledgeHammer) (rev.F+), 130-65nm";;
|
|
||||||
*) fg_uarch="AMD K8 Hammer (SledgeHammer) $defaut_model";;
|
|
||||||
|
|
||||||
family 10) "AMD Barcelona K10, 65, 45, 32nm";; # 2007-2012 Agena, Toliman, Thuban, Deneb, Heka, Callisto, Regor, Propus APU: Llano
|
|
||||||
family 11) "AMD Turion X2 Ultra/Puma mobile, dérivée K8/K10, 65, 45nm";; # mixture of K8/K10 designs with lower power consumption
|
|
||||||
family 12) "AMD Fusion, dérivée K10, 32nm";; # Llano
|
|
||||||
|
|
||||||
family 15)
|
|
||||||
00 | 01) "AMD Bulldozer 1ère génération, 32nm";; # 2011- success to K10,
|
|
||||||
02 | 1?) "AMD Piledriver (Enhanced Bulldozer) (Bulldozer 2e génération), 32nm";; # 2012- APU: Trinity, Richland
|
|
||||||
3?) "AMD Steamroller (Bulldozer 3e génération), 28nm";; # 2014- APU: Kaveri
|
|
||||||
6? | 7?) "AMD Excavator (Bulldozer 4e génération), 28nm";; # 2015- gén. finale APU: Carrizo, Bristol Ridge, Stoney Ridge
|
|
||||||
*) "AMD Bulldozer, $defaut_model";;
|
|
||||||
|
|
||||||
family 17)
|
|
||||||
*) "AMD Zen, 14nm";; # 2017- APU: Raven Ridge
|
|
||||||
|
|
||||||
xxx Zen2 successeur Zen, apu: Pinnacle Ridge
|
|
||||||
|
|
||||||
# basse consommation
|
|
||||||
family 14) "AMD Bobcat, 40nm";; # 2011- APU: Desna, Ontario, Zacate
|
|
||||||
family 16)
|
|
||||||
0?) "AMD Jaguar 28nm";; # 2013- APU: Kabini, Temash
|
|
||||||
3?) "AMD Puma ou Puma+ (family 16h 2e génération), 28nm";; # 2014- APU: Beema, Mullins, Puma+ APU: Carrizo-L
|
|
||||||
*) fg_uarch="AMD family 16h (Jaguar/Puma) $defaut_model";;
|
|
||||||
|
|
||||||
|
|
||||||
http://developer.amd.com/resources/developer-guides-manuals/
|
|
|
@ -1,332 +0,0 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0 */
|
|
||||||
#ifndef _ASM_X86_CPUFEATURES_H
|
|
||||||
#define _ASM_X86_CPUFEATURES_H
|
|
||||||
|
|
||||||
#ifndef _ASM_X86_REQUIRED_FEATURES_H
|
|
||||||
#include <asm/required-features.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef _ASM_X86_DISABLED_FEATURES_H
|
|
||||||
#include <asm/disabled-features.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Defines x86 CPU feature bits
|
|
||||||
*/
|
|
||||||
#define NCAPINTS 18 /* N 32-bit words worth of info */
|
|
||||||
#define NBUGINTS 1 /* N 32-bit bug flags */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Note: If the comment begins with a quoted string, that string is used
|
|
||||||
* in /proc/cpuinfo instead of the macro name. If the string is "",
|
|
||||||
* this feature bit is not displayed in /proc/cpuinfo at all.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Intel-defined CPU features, CPUID level 0x00000001 (edx), word 0 */
|
|
||||||
#define X86_FEATURE_FPU ( 0*32+ 0) /* Onboard FPU */
|
|
||||||
#define X86_FEATURE_VME ( 0*32+ 1) /* Virtual Mode Extensions */
|
|
||||||
#define X86_FEATURE_DE ( 0*32+ 2) /* Debugging Extensions */
|
|
||||||
#define X86_FEATURE_PSE ( 0*32+ 3) /* Page Size Extensions */
|
|
||||||
#define X86_FEATURE_TSC ( 0*32+ 4) /* Time Stamp Counter */
|
|
||||||
#define X86_FEATURE_MSR ( 0*32+ 5) /* Model-Specific Registers */
|
|
||||||
#define X86_FEATURE_PAE ( 0*32+ 6) /* Physical Address Extensions */
|
|
||||||
#define X86_FEATURE_MCE ( 0*32+ 7) /* Machine Check Exception */
|
|
||||||
#define X86_FEATURE_CX8 ( 0*32+ 8) /* CMPXCHG8 instruction */
|
|
||||||
#define X86_FEATURE_APIC ( 0*32+ 9) /* Onboard APIC */
|
|
||||||
#define X86_FEATURE_SEP ( 0*32+11) /* SYSENTER/SYSEXIT */
|
|
||||||
#define X86_FEATURE_MTRR ( 0*32+12) /* Memory Type Range Registers */
|
|
||||||
#define X86_FEATURE_PGE ( 0*32+13) /* Page Global Enable */
|
|
||||||
#define X86_FEATURE_MCA ( 0*32+14) /* Machine Check Architecture */
|
|
||||||
#define X86_FEATURE_CMOV ( 0*32+15) /* CMOV instructions */
|
|
||||||
/* (plus FCMOVcc, FCOMI with FPU) */
|
|
||||||
#define X86_FEATURE_PAT ( 0*32+16) /* Page Attribute Table */
|
|
||||||
#define X86_FEATURE_PSE36 ( 0*32+17) /* 36-bit PSEs */
|
|
||||||
#define X86_FEATURE_PN ( 0*32+18) /* Processor serial number */
|
|
||||||
#define X86_FEATURE_CLFLUSH ( 0*32+19) /* CLFLUSH instruction */
|
|
||||||
#define X86_FEATURE_DS ( 0*32+21) /* "dts" Debug Store */
|
|
||||||
#define X86_FEATURE_ACPI ( 0*32+22) /* ACPI via MSR */
|
|
||||||
#define X86_FEATURE_MMX ( 0*32+23) /* Multimedia Extensions */
|
|
||||||
#define X86_FEATURE_FXSR ( 0*32+24) /* FXSAVE/FXRSTOR, CR4.OSFXSR */
|
|
||||||
#define X86_FEATURE_XMM ( 0*32+25) /* "sse" */
|
|
||||||
#define X86_FEATURE_XMM2 ( 0*32+26) /* "sse2" */
|
|
||||||
#define X86_FEATURE_SELFSNOOP ( 0*32+27) /* "ss" CPU self snoop */
|
|
||||||
#define X86_FEATURE_HT ( 0*32+28) /* Hyper-Threading */
|
|
||||||
#define X86_FEATURE_ACC ( 0*32+29) /* "tm" Automatic clock control */
|
|
||||||
#define X86_FEATURE_IA64 ( 0*32+30) /* IA-64 processor */
|
|
||||||
#define X86_FEATURE_PBE ( 0*32+31) /* Pending Break Enable */
|
|
||||||
|
|
||||||
/* AMD-defined CPU features, CPUID level 0x80000001, word 1 */
|
|
||||||
/* Don't duplicate feature flags which are redundant with Intel! */
|
|
||||||
#define X86_FEATURE_SYSCALL ( 1*32+11) /* SYSCALL/SYSRET */
|
|
||||||
#define X86_FEATURE_MP ( 1*32+19) /* MP Capable. */
|
|
||||||
#define X86_FEATURE_NX ( 1*32+20) /* Execute Disable */
|
|
||||||
#define X86_FEATURE_MMXEXT ( 1*32+22) /* AMD MMX extensions */
|
|
||||||
#define X86_FEATURE_FXSR_OPT ( 1*32+25) /* FXSAVE/FXRSTOR optimizations */
|
|
||||||
#define X86_FEATURE_GBPAGES ( 1*32+26) /* "pdpe1gb" GB pages */
|
|
||||||
#define X86_FEATURE_RDTSCP ( 1*32+27) /* RDTSCP */
|
|
||||||
#define X86_FEATURE_LM ( 1*32+29) /* Long Mode (x86-64) */
|
|
||||||
#define X86_FEATURE_3DNOWEXT ( 1*32+30) /* AMD 3DNow! extensions */
|
|
||||||
#define X86_FEATURE_3DNOW ( 1*32+31) /* 3DNow! */
|
|
||||||
|
|
||||||
/* Transmeta-defined CPU features, CPUID level 0x80860001, word 2 */
|
|
||||||
#define X86_FEATURE_RECOVERY ( 2*32+ 0) /* CPU in recovery mode */
|
|
||||||
#define X86_FEATURE_LONGRUN ( 2*32+ 1) /* Longrun power control */
|
|
||||||
#define X86_FEATURE_LRTI ( 2*32+ 3) /* LongRun table interface */
|
|
||||||
|
|
||||||
/* Other features, Linux-defined mapping, word 3 */
|
|
||||||
/* This range is used for feature bits which conflict or are synthesized */
|
|
||||||
#define X86_FEATURE_CXMMX ( 3*32+ 0) /* Cyrix MMX extensions */
|
|
||||||
#define X86_FEATURE_K6_MTRR ( 3*32+ 1) /* AMD K6 nonstandard MTRRs */
|
|
||||||
#define X86_FEATURE_CYRIX_ARR ( 3*32+ 2) /* Cyrix ARRs (= MTRRs) */
|
|
||||||
#define X86_FEATURE_CENTAUR_MCR ( 3*32+ 3) /* Centaur MCRs (= MTRRs) */
|
|
||||||
/* cpu types for specific tunings: */
|
|
||||||
#define X86_FEATURE_K8 ( 3*32+ 4) /* "" Opteron, Athlon64 */
|
|
||||||
#define X86_FEATURE_K7 ( 3*32+ 5) /* "" Athlon */
|
|
||||||
#define X86_FEATURE_P3 ( 3*32+ 6) /* "" P3 */
|
|
||||||
#define X86_FEATURE_P4 ( 3*32+ 7) /* "" P4 */
|
|
||||||
#define X86_FEATURE_CONSTANT_TSC ( 3*32+ 8) /* TSC ticks at a constant rate */
|
|
||||||
#define X86_FEATURE_UP ( 3*32+ 9) /* smp kernel running on up */
|
|
||||||
#define X86_FEATURE_ART ( 3*32+10) /* Platform has always running timer (ART) */
|
|
||||||
#define X86_FEATURE_ARCH_PERFMON ( 3*32+11) /* Intel Architectural PerfMon */
|
|
||||||
#define X86_FEATURE_PEBS ( 3*32+12) /* Precise-Event Based Sampling */
|
|
||||||
#define X86_FEATURE_BTS ( 3*32+13) /* Branch Trace Store */
|
|
||||||
#define X86_FEATURE_SYSCALL32 ( 3*32+14) /* "" syscall in ia32 userspace */
|
|
||||||
#define X86_FEATURE_SYSENTER32 ( 3*32+15) /* "" sysenter in ia32 userspace */
|
|
||||||
#define X86_FEATURE_REP_GOOD ( 3*32+16) /* rep microcode works well */
|
|
||||||
#define X86_FEATURE_MFENCE_RDTSC ( 3*32+17) /* "" Mfence synchronizes RDTSC */
|
|
||||||
#define X86_FEATURE_LFENCE_RDTSC ( 3*32+18) /* "" Lfence synchronizes RDTSC */
|
|
||||||
#define X86_FEATURE_ACC_POWER ( 3*32+19) /* AMD Accumulated Power Mechanism */
|
|
||||||
#define X86_FEATURE_NOPL ( 3*32+20) /* The NOPL (0F 1F) instructions */
|
|
||||||
#define X86_FEATURE_ALWAYS ( 3*32+21) /* "" Always-present feature */
|
|
||||||
#define X86_FEATURE_XTOPOLOGY ( 3*32+22) /* cpu topology enum extensions */
|
|
||||||
#define X86_FEATURE_TSC_RELIABLE ( 3*32+23) /* TSC is known to be reliable */
|
|
||||||
#define X86_FEATURE_NONSTOP_TSC ( 3*32+24) /* TSC does not stop in C states */
|
|
||||||
#define X86_FEATURE_CPUID ( 3*32+25) /* CPU has CPUID instruction itself */
|
|
||||||
#define X86_FEATURE_EXTD_APICID ( 3*32+26) /* has extended APICID (8 bits) */
|
|
||||||
#define X86_FEATURE_AMD_DCM ( 3*32+27) /* multi-node processor */
|
|
||||||
#define X86_FEATURE_APERFMPERF ( 3*32+28) /* APERFMPERF */
|
|
||||||
#define X86_FEATURE_NONSTOP_TSC_S3 ( 3*32+30) /* TSC doesn't stop in S3 state */
|
|
||||||
#define X86_FEATURE_TSC_KNOWN_FREQ ( 3*32+31) /* TSC has known frequency */
|
|
||||||
|
|
||||||
/* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
|
|
||||||
#define X86_FEATURE_XMM3 ( 4*32+ 0) /* "pni" SSE-3 */
|
|
||||||
#define X86_FEATURE_PCLMULQDQ ( 4*32+ 1) /* PCLMULQDQ instruction */
|
|
||||||
#define X86_FEATURE_DTES64 ( 4*32+ 2) /* 64-bit Debug Store */
|
|
||||||
#define X86_FEATURE_MWAIT ( 4*32+ 3) /* "monitor" Monitor/Mwait support */
|
|
||||||
#define X86_FEATURE_DSCPL ( 4*32+ 4) /* "ds_cpl" CPL Qual. Debug Store */
|
|
||||||
#define X86_FEATURE_VMX ( 4*32+ 5) /* Hardware virtualization */
|
|
||||||
#define X86_FEATURE_SMX ( 4*32+ 6) /* Safer mode */
|
|
||||||
#define X86_FEATURE_EST ( 4*32+ 7) /* Enhanced SpeedStep */
|
|
||||||
#define X86_FEATURE_TM2 ( 4*32+ 8) /* Thermal Monitor 2 */
|
|
||||||
#define X86_FEATURE_SSSE3 ( 4*32+ 9) /* Supplemental SSE-3 */
|
|
||||||
#define X86_FEATURE_CID ( 4*32+10) /* Context ID */
|
|
||||||
#define X86_FEATURE_SDBG ( 4*32+11) /* Silicon Debug */
|
|
||||||
#define X86_FEATURE_FMA ( 4*32+12) /* Fused multiply-add */
|
|
||||||
#define X86_FEATURE_CX16 ( 4*32+13) /* CMPXCHG16B */
|
|
||||||
#define X86_FEATURE_XTPR ( 4*32+14) /* Send Task Priority Messages */
|
|
||||||
#define X86_FEATURE_PDCM ( 4*32+15) /* Performance Capabilities */
|
|
||||||
#define X86_FEATURE_PCID ( 4*32+17) /* Process Context Identifiers */
|
|
||||||
#define X86_FEATURE_DCA ( 4*32+18) /* Direct Cache Access */
|
|
||||||
#define X86_FEATURE_XMM4_1 ( 4*32+19) /* "sse4_1" SSE-4.1 */
|
|
||||||
#define X86_FEATURE_XMM4_2 ( 4*32+20) /* "sse4_2" SSE-4.2 */
|
|
||||||
#define X86_FEATURE_X2APIC ( 4*32+21) /* x2APIC */
|
|
||||||
#define X86_FEATURE_MOVBE ( 4*32+22) /* MOVBE instruction */
|
|
||||||
#define X86_FEATURE_POPCNT ( 4*32+23) /* POPCNT instruction */
|
|
||||||
#define X86_FEATURE_TSC_DEADLINE_TIMER ( 4*32+24) /* Tsc deadline timer */
|
|
||||||
#define X86_FEATURE_AES ( 4*32+25) /* AES instructions */
|
|
||||||
#define X86_FEATURE_XSAVE ( 4*32+26) /* XSAVE/XRSTOR/XSETBV/XGETBV */
|
|
||||||
#define X86_FEATURE_OSXSAVE ( 4*32+27) /* "" XSAVE enabled in the OS */
|
|
||||||
#define X86_FEATURE_AVX ( 4*32+28) /* Advanced Vector Extensions */
|
|
||||||
#define X86_FEATURE_F16C ( 4*32+29) /* 16-bit fp conversions */
|
|
||||||
#define X86_FEATURE_RDRAND ( 4*32+30) /* The RDRAND instruction */
|
|
||||||
#define X86_FEATURE_HYPERVISOR ( 4*32+31) /* Running on a hypervisor */
|
|
||||||
|
|
||||||
/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
|
|
||||||
#define X86_FEATURE_XSTORE ( 5*32+ 2) /* "rng" RNG present (xstore) */
|
|
||||||
#define X86_FEATURE_XSTORE_EN ( 5*32+ 3) /* "rng_en" RNG enabled */
|
|
||||||
#define X86_FEATURE_XCRYPT ( 5*32+ 6) /* "ace" on-CPU crypto (xcrypt) */
|
|
||||||
#define X86_FEATURE_XCRYPT_EN ( 5*32+ 7) /* "ace_en" on-CPU crypto enabled */
|
|
||||||
#define X86_FEATURE_ACE2 ( 5*32+ 8) /* Advanced Cryptography Engine v2 */
|
|
||||||
#define X86_FEATURE_ACE2_EN ( 5*32+ 9) /* ACE v2 enabled */
|
|
||||||
#define X86_FEATURE_PHE ( 5*32+10) /* PadLock Hash Engine */
|
|
||||||
#define X86_FEATURE_PHE_EN ( 5*32+11) /* PHE enabled */
|
|
||||||
#define X86_FEATURE_PMM ( 5*32+12) /* PadLock Montgomery Multiplier */
|
|
||||||
#define X86_FEATURE_PMM_EN ( 5*32+13) /* PMM enabled */
|
|
||||||
|
|
||||||
/* More extended AMD flags: CPUID level 0x80000001, ecx, word 6 */
|
|
||||||
#define X86_FEATURE_LAHF_LM ( 6*32+ 0) /* LAHF/SAHF in long mode */
|
|
||||||
#define X86_FEATURE_CMP_LEGACY ( 6*32+ 1) /* If yes HyperThreading not valid */
|
|
||||||
#define X86_FEATURE_SVM ( 6*32+ 2) /* Secure virtual machine */
|
|
||||||
#define X86_FEATURE_EXTAPIC ( 6*32+ 3) /* Extended APIC space */
|
|
||||||
#define X86_FEATURE_CR8_LEGACY ( 6*32+ 4) /* CR8 in 32-bit mode */
|
|
||||||
#define X86_FEATURE_ABM ( 6*32+ 5) /* Advanced bit manipulation */
|
|
||||||
#define X86_FEATURE_SSE4A ( 6*32+ 6) /* SSE-4A */
|
|
||||||
#define X86_FEATURE_MISALIGNSSE ( 6*32+ 7) /* Misaligned SSE mode */
|
|
||||||
#define X86_FEATURE_3DNOWPREFETCH ( 6*32+ 8) /* 3DNow prefetch instructions */
|
|
||||||
#define X86_FEATURE_OSVW ( 6*32+ 9) /* OS Visible Workaround */
|
|
||||||
#define X86_FEATURE_IBS ( 6*32+10) /* Instruction Based Sampling */
|
|
||||||
#define X86_FEATURE_XOP ( 6*32+11) /* extended AVX instructions */
|
|
||||||
#define X86_FEATURE_SKINIT ( 6*32+12) /* SKINIT/STGI instructions */
|
|
||||||
#define X86_FEATURE_WDT ( 6*32+13) /* Watchdog timer */
|
|
||||||
#define X86_FEATURE_LWP ( 6*32+15) /* Light Weight Profiling */
|
|
||||||
#define X86_FEATURE_FMA4 ( 6*32+16) /* 4 operands MAC instructions */
|
|
||||||
#define X86_FEATURE_TCE ( 6*32+17) /* translation cache extension */
|
|
||||||
#define X86_FEATURE_NODEID_MSR ( 6*32+19) /* NodeId MSR */
|
|
||||||
#define X86_FEATURE_TBM ( 6*32+21) /* trailing bit manipulations */
|
|
||||||
#define X86_FEATURE_TOPOEXT ( 6*32+22) /* topology extensions CPUID leafs */
|
|
||||||
#define X86_FEATURE_PERFCTR_CORE ( 6*32+23) /* core performance counter extensions */
|
|
||||||
#define X86_FEATURE_PERFCTR_NB ( 6*32+24) /* NB performance counter extensions */
|
|
||||||
#define X86_FEATURE_BPEXT (6*32+26) /* data breakpoint extension */
|
|
||||||
#define X86_FEATURE_PTSC ( 6*32+27) /* performance time-stamp counter */
|
|
||||||
#define X86_FEATURE_PERFCTR_LLC ( 6*32+28) /* Last Level Cache performance counter extensions */
|
|
||||||
#define X86_FEATURE_MWAITX ( 6*32+29) /* MWAIT extension (MONITORX/MWAITX) */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Auxiliary flags: Linux defined - For features scattered in various
|
|
||||||
* CPUID levels like 0x6, 0xA etc, word 7.
|
|
||||||
*
|
|
||||||
* Reuse free bits when adding new feature flags!
|
|
||||||
*/
|
|
||||||
#define X86_FEATURE_RING3MWAIT ( 7*32+ 0) /* Ring 3 MONITOR/MWAIT */
|
|
||||||
#define X86_FEATURE_CPUID_FAULT ( 7*32+ 1) /* Intel CPUID faulting */
|
|
||||||
#define X86_FEATURE_CPB ( 7*32+ 2) /* AMD Core Performance Boost */
|
|
||||||
#define X86_FEATURE_EPB ( 7*32+ 3) /* IA32_ENERGY_PERF_BIAS support */
|
|
||||||
#define X86_FEATURE_CAT_L3 ( 7*32+ 4) /* Cache Allocation Technology L3 */
|
|
||||||
#define X86_FEATURE_CAT_L2 ( 7*32+ 5) /* Cache Allocation Technology L2 */
|
|
||||||
#define X86_FEATURE_CDP_L3 ( 7*32+ 6) /* Code and Data Prioritization L3 */
|
|
||||||
|
|
||||||
#define X86_FEATURE_HW_PSTATE ( 7*32+ 8) /* AMD HW-PState */
|
|
||||||
#define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */
|
|
||||||
#define X86_FEATURE_SME ( 7*32+10) /* AMD Secure Memory Encryption */
|
|
||||||
|
|
||||||
#define X86_FEATURE_INTEL_PPIN ( 7*32+14) /* Intel Processor Inventory Number */
|
|
||||||
#define X86_FEATURE_INTEL_PT ( 7*32+15) /* Intel Processor Trace */
|
|
||||||
#define X86_FEATURE_AVX512_4VNNIW (7*32+16) /* AVX-512 Neural Network Instructions */
|
|
||||||
#define X86_FEATURE_AVX512_4FMAPS (7*32+17) /* AVX-512 Multiply Accumulation Single precision */
|
|
||||||
|
|
||||||
#define X86_FEATURE_MBA ( 7*32+18) /* Memory Bandwidth Allocation */
|
|
||||||
|
|
||||||
/* Virtualization flags: Linux defined, word 8 */
|
|
||||||
#define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */
|
|
||||||
#define X86_FEATURE_VNMI ( 8*32+ 1) /* Intel Virtual NMI */
|
|
||||||
#define X86_FEATURE_FLEXPRIORITY ( 8*32+ 2) /* Intel FlexPriority */
|
|
||||||
#define X86_FEATURE_EPT ( 8*32+ 3) /* Intel Extended Page Table */
|
|
||||||
#define X86_FEATURE_VPID ( 8*32+ 4) /* Intel Virtual Processor ID */
|
|
||||||
|
|
||||||
#define X86_FEATURE_VMMCALL ( 8*32+15) /* Prefer vmmcall to vmcall */
|
|
||||||
#define X86_FEATURE_XENPV ( 8*32+16) /* "" Xen paravirtual guest */
|
|
||||||
|
|
||||||
|
|
||||||
/* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9 */
|
|
||||||
#define X86_FEATURE_FSGSBASE ( 9*32+ 0) /* {RD/WR}{FS/GS}BASE instructions*/
|
|
||||||
#define X86_FEATURE_TSC_ADJUST ( 9*32+ 1) /* TSC adjustment MSR 0x3b */
|
|
||||||
#define X86_FEATURE_BMI1 ( 9*32+ 3) /* 1st group bit manipulation extensions */
|
|
||||||
#define X86_FEATURE_HLE ( 9*32+ 4) /* Hardware Lock Elision */
|
|
||||||
#define X86_FEATURE_AVX2 ( 9*32+ 5) /* AVX2 instructions */
|
|
||||||
#define X86_FEATURE_SMEP ( 9*32+ 7) /* Supervisor Mode Execution Protection */
|
|
||||||
#define X86_FEATURE_BMI2 ( 9*32+ 8) /* 2nd group bit manipulation extensions */
|
|
||||||
#define X86_FEATURE_ERMS ( 9*32+ 9) /* Enhanced REP MOVSB/STOSB */
|
|
||||||
#define X86_FEATURE_INVPCID ( 9*32+10) /* Invalidate Processor Context ID */
|
|
||||||
#define X86_FEATURE_RTM ( 9*32+11) /* Restricted Transactional Memory */
|
|
||||||
#define X86_FEATURE_CQM ( 9*32+12) /* Cache QoS Monitoring */
|
|
||||||
#define X86_FEATURE_MPX ( 9*32+14) /* Memory Protection Extension */
|
|
||||||
#define X86_FEATURE_RDT_A ( 9*32+15) /* Resource Director Technology Allocation */
|
|
||||||
#define X86_FEATURE_AVX512F ( 9*32+16) /* AVX-512 Foundation */
|
|
||||||
#define X86_FEATURE_AVX512DQ ( 9*32+17) /* AVX-512 DQ (Double/Quad granular) Instructions */
|
|
||||||
#define X86_FEATURE_RDSEED ( 9*32+18) /* The RDSEED instruction */
|
|
||||||
#define X86_FEATURE_ADX ( 9*32+19) /* The ADCX and ADOX instructions */
|
|
||||||
#define X86_FEATURE_SMAP ( 9*32+20) /* Supervisor Mode Access Prevention */
|
|
||||||
#define X86_FEATURE_AVX512IFMA ( 9*32+21) /* AVX-512 Integer Fused Multiply-Add instructions */
|
|
||||||
#define X86_FEATURE_CLFLUSHOPT ( 9*32+23) /* CLFLUSHOPT instruction */
|
|
||||||
#define X86_FEATURE_CLWB ( 9*32+24) /* CLWB instruction */
|
|
||||||
#define X86_FEATURE_AVX512PF ( 9*32+26) /* AVX-512 Prefetch */
|
|
||||||
#define X86_FEATURE_AVX512ER ( 9*32+27) /* AVX-512 Exponential and Reciprocal */
|
|
||||||
#define X86_FEATURE_AVX512CD ( 9*32+28) /* AVX-512 Conflict Detection */
|
|
||||||
#define X86_FEATURE_SHA_NI ( 9*32+29) /* SHA1/SHA256 Instruction Extensions */
|
|
||||||
#define X86_FEATURE_AVX512BW ( 9*32+30) /* AVX-512 BW (Byte/Word granular) Instructions */
|
|
||||||
#define X86_FEATURE_AVX512VL ( 9*32+31) /* AVX-512 VL (128/256 Vector Length) Extensions */
|
|
||||||
|
|
||||||
/* Extended state features, CPUID level 0x0000000d:1 (eax), word 10 */
|
|
||||||
#define X86_FEATURE_XSAVEOPT (10*32+ 0) /* XSAVEOPT */
|
|
||||||
#define X86_FEATURE_XSAVEC (10*32+ 1) /* XSAVEC */
|
|
||||||
#define X86_FEATURE_XGETBV1 (10*32+ 2) /* XGETBV with ECX = 1 */
|
|
||||||
#define X86_FEATURE_XSAVES (10*32+ 3) /* XSAVES/XRSTORS */
|
|
||||||
|
|
||||||
/* Intel-defined CPU QoS Sub-leaf, CPUID level 0x0000000F:0 (edx), word 11 */
|
|
||||||
#define X86_FEATURE_CQM_LLC (11*32+ 1) /* LLC QoS if 1 */
|
|
||||||
|
|
||||||
/* Intel-defined CPU QoS Sub-leaf, CPUID level 0x0000000F:1 (edx), word 12 */
|
|
||||||
#define X86_FEATURE_CQM_OCCUP_LLC (12*32+ 0) /* LLC occupancy monitoring if 1 */
|
|
||||||
#define X86_FEATURE_CQM_MBM_TOTAL (12*32+ 1) /* LLC Total MBM monitoring */
|
|
||||||
#define X86_FEATURE_CQM_MBM_LOCAL (12*32+ 2) /* LLC Local MBM monitoring */
|
|
||||||
|
|
||||||
/* AMD-defined CPU features, CPUID level 0x80000008 (ebx), word 13 */
|
|
||||||
#define X86_FEATURE_CLZERO (13*32+0) /* CLZERO instruction */
|
|
||||||
#define X86_FEATURE_IRPERF (13*32+1) /* Instructions Retired Count */
|
|
||||||
|
|
||||||
/* Thermal and Power Management Leaf, CPUID level 0x00000006 (eax), word 14 */
|
|
||||||
#define X86_FEATURE_DTHERM (14*32+ 0) /* Digital Thermal Sensor */
|
|
||||||
#define X86_FEATURE_IDA (14*32+ 1) /* Intel Dynamic Acceleration */
|
|
||||||
#define X86_FEATURE_ARAT (14*32+ 2) /* Always Running APIC Timer */
|
|
||||||
#define X86_FEATURE_PLN (14*32+ 4) /* Intel Power Limit Notification */
|
|
||||||
#define X86_FEATURE_PTS (14*32+ 6) /* Intel Package Thermal Status */
|
|
||||||
#define X86_FEATURE_HWP (14*32+ 7) /* Intel Hardware P-states */
|
|
||||||
#define X86_FEATURE_HWP_NOTIFY (14*32+ 8) /* HWP Notification */
|
|
||||||
#define X86_FEATURE_HWP_ACT_WINDOW (14*32+ 9) /* HWP Activity Window */
|
|
||||||
#define X86_FEATURE_HWP_EPP (14*32+10) /* HWP Energy Perf. Preference */
|
|
||||||
#define X86_FEATURE_HWP_PKG_REQ (14*32+11) /* HWP Package Level Request */
|
|
||||||
|
|
||||||
/* AMD SVM Feature Identification, CPUID level 0x8000000a (edx), word 15 */
|
|
||||||
#define X86_FEATURE_NPT (15*32+ 0) /* Nested Page Table support */
|
|
||||||
#define X86_FEATURE_LBRV (15*32+ 1) /* LBR Virtualization support */
|
|
||||||
#define X86_FEATURE_SVML (15*32+ 2) /* "svm_lock" SVM locking MSR */
|
|
||||||
#define X86_FEATURE_NRIPS (15*32+ 3) /* "nrip_save" SVM next_rip save */
|
|
||||||
#define X86_FEATURE_TSCRATEMSR (15*32+ 4) /* "tsc_scale" TSC scaling support */
|
|
||||||
#define X86_FEATURE_VMCBCLEAN (15*32+ 5) /* "vmcb_clean" VMCB clean bits support */
|
|
||||||
#define X86_FEATURE_FLUSHBYASID (15*32+ 6) /* flush-by-ASID support */
|
|
||||||
#define X86_FEATURE_DECODEASSISTS (15*32+ 7) /* Decode Assists support */
|
|
||||||
#define X86_FEATURE_PAUSEFILTER (15*32+10) /* filtered pause intercept */
|
|
||||||
#define X86_FEATURE_PFTHRESHOLD (15*32+12) /* pause filter threshold */
|
|
||||||
#define X86_FEATURE_AVIC (15*32+13) /* Virtual Interrupt Controller */
|
|
||||||
#define X86_FEATURE_V_VMSAVE_VMLOAD (15*32+15) /* Virtual VMSAVE VMLOAD */
|
|
||||||
#define X86_FEATURE_VGIF (15*32+16) /* Virtual GIF */
|
|
||||||
|
|
||||||
/* Intel-defined CPU features, CPUID level 0x00000007:0 (ecx), word 16 */
|
|
||||||
#define X86_FEATURE_AVX512VBMI (16*32+ 1) /* AVX512 Vector Bit Manipulation instructions*/
|
|
||||||
#define X86_FEATURE_PKU (16*32+ 3) /* Protection Keys for Userspace */
|
|
||||||
#define X86_FEATURE_OSPKE (16*32+ 4) /* OS Protection Keys Enable */
|
|
||||||
#define X86_FEATURE_AVX512_VPOPCNTDQ (16*32+14) /* POPCNT for vectors of DW/QW */
|
|
||||||
#define X86_FEATURE_LA57 (16*32+16) /* 5-level page tables */
|
|
||||||
#define X86_FEATURE_RDPID (16*32+22) /* RDPID instruction */
|
|
||||||
|
|
||||||
/* AMD-defined CPU features, CPUID level 0x80000007 (ebx), word 17 */
|
|
||||||
#define X86_FEATURE_OVERFLOW_RECOV (17*32+0) /* MCA overflow recovery support */
|
|
||||||
#define X86_FEATURE_SUCCOR (17*32+1) /* Uncorrectable error containment and recovery */
|
|
||||||
#define X86_FEATURE_SMCA (17*32+3) /* Scalable MCA */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* BUG word(s)
|
|
||||||
*/
|
|
||||||
#define X86_BUG(x) (NCAPINTS*32 + (x))
|
|
||||||
|
|
||||||
#define X86_BUG_F00F X86_BUG(0) /* Intel F00F */
|
|
||||||
#define X86_BUG_FDIV X86_BUG(1) /* FPU FDIV */
|
|
||||||
#define X86_BUG_COMA X86_BUG(2) /* Cyrix 6x86 coma */
|
|
||||||
#define X86_BUG_AMD_TLB_MMATCH X86_BUG(3) /* "tlb_mmatch" AMD Erratum 383 */
|
|
||||||
#define X86_BUG_AMD_APIC_C1E X86_BUG(4) /* "apic_c1e" AMD Erratum 400 */
|
|
||||||
#define X86_BUG_11AP X86_BUG(5) /* Bad local APIC aka 11AP */
|
|
||||||
#define X86_BUG_FXSAVE_LEAK X86_BUG(6) /* FXSAVE leaks FOP/FIP/FOP */
|
|
||||||
#define X86_BUG_CLFLUSH_MONITOR X86_BUG(7) /* AAI65, CLFLUSH required before MONITOR */
|
|
||||||
#define X86_BUG_SYSRET_SS_ATTRS X86_BUG(8) /* SYSRET doesn't fix up SS attrs */
|
|
||||||
#ifdef CONFIG_X86_32
|
|
||||||
/*
|
|
||||||
* 64-bit kernels don't use X86_BUG_ESPFIX. Make the define conditional
|
|
||||||
* to avoid confusion.
|
|
||||||
*/
|
|
||||||
#define X86_BUG_ESPFIX X86_BUG(9) /* "" IRET to 16-bit SS corrupts ESP/RSP high bits */
|
|
||||||
#endif
|
|
||||||
#define X86_BUG_NULL_SEG X86_BUG(10) /* Nulling a selector preserves the base */
|
|
||||||
#define X86_BUG_SWAPGS_FENCE X86_BUG(11) /* SWAPGS without input dep on GS */
|
|
||||||
#define X86_BUG_MONITOR X86_BUG(12) /* IPI required to wake up remote CPU */
|
|
||||||
#define X86_BUG_AMD_E400 X86_BUG(13) /* CPU is among the affected by Erratum 400 */
|
|
||||||
#endif /* _ASM_X86_CPUFEATURES_H */
|
|
|
@ -1,968 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
SCRIPT_VERSION=0.4.64
|
|
||||||
CHANGELOG="http://www.alsa-project.org/alsa-info.sh.changelog"
|
|
||||||
|
|
||||||
#################################################################################
|
|
||||||
#Copyright (C) 2007 Free Software Foundation.
|
|
||||||
|
|
||||||
#This program is free software; you can redistribute it and/or modify
|
|
||||||
#it under the terms of the GNU General Public License as published by
|
|
||||||
#the Free Software Foundation; either version 2 of the License, or
|
|
||||||
#(at your option) any later version.
|
|
||||||
|
|
||||||
#This program is distributed in the hope that it will be useful,
|
|
||||||
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
#GNU General Public License for more details.
|
|
||||||
|
|
||||||
#You should have received a copy of the GNU General Public License
|
|
||||||
#along with this program; if not, write to the Free Software
|
|
||||||
#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
##################################################################################
|
|
||||||
|
|
||||||
#The script was written for 2 main reasons:
|
|
||||||
# 1. Remove the need for the devs/helpers to ask several questions before we can easily help the user.
|
|
||||||
# 2. Allow newer/inexperienced ALSA users to give us all the info we need to help them.
|
|
||||||
|
|
||||||
#Set the locale (this may or may not be a good idea.. let me know)
|
|
||||||
export LC_ALL=C
|
|
||||||
|
|
||||||
#Change the PATH variable, so we can run lspci (needed for some distros)
|
|
||||||
PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin
|
|
||||||
BGTITLE="ALSA-Info v $SCRIPT_VERSION"
|
|
||||||
PASTEBINKEY="C9cRIO8m/9y8Cs0nVs0FraRx7U0pHsuc"
|
|
||||||
#Define some simple functions
|
|
||||||
|
|
||||||
WGET=$(which wget 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
|
||||||
|
|
||||||
pbcheck(){
|
|
||||||
[[ $UPLOAD = "no" ]] && return
|
|
||||||
|
|
||||||
if [[ -z $PASTEBIN ]]; then
|
|
||||||
[[ $(ping -c1 www.alsa-project.org) ]] || KEEP_FILES="yes" UPLOAD="no" PBERROR="yes"
|
|
||||||
else
|
|
||||||
[[ $(ping -c1 www.pastebin.ca) ]] || KEEP_FILES="yes" UPLOAD="no" PBERROR="yes"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
update() {
|
|
||||||
test -z "$WGET" -o ! -x "$WGET" && return
|
|
||||||
|
|
||||||
SHFILE=`mktemp -t alsa-info.XXXXXXXXXX` || exit 1
|
|
||||||
wget -O $SHFILE "http://www.alsa-project.org/alsa-info.sh" >/dev/null 2>&1
|
|
||||||
REMOTE_VERSION=`grep SCRIPT_VERSION $SHFILE |head -n1 |sed 's/.*=//'`
|
|
||||||
if [ -s "$SHFILE" -a "$REMOTE_VERSION" != "$SCRIPT_VERSION" ]; then
|
|
||||||
if [[ -n $DIALOG ]]
|
|
||||||
then
|
|
||||||
OVERWRITE=
|
|
||||||
if [ -w $0 ]; then
|
|
||||||
dialog --yesno "Newer version of ALSA-Info has been found\n\nDo you wish to install it?\nNOTICE: The original file $0 will be overwritten!" 0 0
|
|
||||||
DIALOG_EXIT_CODE=$?
|
|
||||||
if [[ $DIALOG_EXIT_CODE = 0 ]]; then
|
|
||||||
OVERWRITE=yes
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -z "$OVERWRITE" ]; then
|
|
||||||
dialog --yesno "Newer version of ALSA-Info has been found\n\nDo you wish to download it?" 0 0
|
|
||||||
DIALOG_EXIT_CODE=$?
|
|
||||||
fi
|
|
||||||
if [[ $DIALOG_EXIT_CODE = 0 ]]
|
|
||||||
then
|
|
||||||
echo "Newer version detected: $REMOTE_VERSION"
|
|
||||||
echo "To view the ChangeLog, please visit $CHANGELOG"
|
|
||||||
if [ "$OVERWRITE" = "yes" ]; then
|
|
||||||
cp $SHFILE $0
|
|
||||||
echo "ALSA-Info script has been updated to v $REMOTE_VERSION"
|
|
||||||
echo "Please re-run the script"
|
|
||||||
rm $SHFILE 2>/dev/null
|
|
||||||
else
|
|
||||||
echo "ALSA-Info script has been downloaded as $SHFILE."
|
|
||||||
echo "Please re-run the script from new location."
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
else
|
|
||||||
rm $SHFILE 2>/dev/null
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Newer version detected: $REMOTE_VERSION"
|
|
||||||
echo "To view the ChangeLog, please visit $CHANGELOG"
|
|
||||||
if [ -w $0 ]; then
|
|
||||||
echo "The original file $0 will be overwritten!"
|
|
||||||
echo -n "If you do not like to proceed, press Ctrl-C now.." ; read inp
|
|
||||||
cp $SHFILE $0
|
|
||||||
echo "ALSA-Info script has been updated. Please re-run it."
|
|
||||||
rm $SHFILE 2>/dev/null
|
|
||||||
else
|
|
||||||
echo "ALSA-Info script has been downloaded $SHFILE."
|
|
||||||
echo "Please, re-run it from new location."
|
|
||||||
fi
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
rm $SHFILE 2>/dev/null
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup() {
|
|
||||||
if [ -n "$TEMPDIR" -a "$KEEP_FILES" != "yes" ]; then
|
|
||||||
rm -rf "$TEMPDIR" 2>/dev/null
|
|
||||||
fi
|
|
||||||
test -n "$KEEP_OUTPUT" || rm -f "$NFILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
withaplay() {
|
|
||||||
echo "!!Aplay/Arecord output" >> $FILE
|
|
||||||
echo "!!--------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "APLAY" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
aplay -l >> $FILE 2>&1
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "ARECORD" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
arecord -l >> $FILE 2>&1
|
|
||||||
echo "" >> $FILE
|
|
||||||
}
|
|
||||||
|
|
||||||
withlsmod() {
|
|
||||||
echo "!!All Loaded Modules" >> $FILE
|
|
||||||
echo "!!------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
lsmod |awk {'print $1'} >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
}
|
|
||||||
|
|
||||||
withamixer() {
|
|
||||||
echo "!!Amixer output" >> $FILE
|
|
||||||
echo "!!-------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
for i in `grep "]: " /proc/asound/cards | awk -F ' ' '{ print $1} '` ; do
|
|
||||||
CARD_NAME=`grep "^ *$i " $TEMPDIR/alsacards.tmp|awk {'print $2'}`
|
|
||||||
echo "!!-------Mixer controls for card $i $CARD_NAME]" >> $FILE
|
|
||||||
echo "" >>$FILE
|
|
||||||
amixer -c$i info>> $FILE 2>&1
|
|
||||||
amixer -c$i>> $FILE 2>&1
|
|
||||||
echo "" >> $FILE
|
|
||||||
done
|
|
||||||
echo "" >> $FILE
|
|
||||||
}
|
|
||||||
|
|
||||||
withalsactl() {
|
|
||||||
echo "!!Alsactl output" >> $FILE
|
|
||||||
echo "!!--------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
exe=""
|
|
||||||
if [ -x /usr/sbin/alsactl ]; then
|
|
||||||
exe="/usr/sbin/alsactl"
|
|
||||||
fi
|
|
||||||
if [ -x /usr/local/sbin/alsactl ]; then
|
|
||||||
exe="/usr/local/sbin/alsactl"
|
|
||||||
fi
|
|
||||||
if [ -z "$exe" ]; then
|
|
||||||
exe=`whereis alsactl | cut -d ' ' -f 2`
|
|
||||||
fi
|
|
||||||
$exe -f $TEMPDIR/alsactl.tmp store
|
|
||||||
echo "--startcollapse--" >> $FILE
|
|
||||||
cat $TEMPDIR/alsactl.tmp >> $FILE
|
|
||||||
echo "--endcollapse--" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
}
|
|
||||||
|
|
||||||
withdevices() {
|
|
||||||
echo "!!ALSA Device nodes" >> $FILE
|
|
||||||
echo "!!-----------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
ls -la /dev/snd/* >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
}
|
|
||||||
|
|
||||||
withconfigs() {
|
|
||||||
if [[ -e $HOME/.asoundrc ]] || [[ -e /etc/asound.conf ]] || [[ -e $HOME/.asoundrc.asoundconf ]]
|
|
||||||
then
|
|
||||||
echo "!!ALSA configuration files" >> $FILE
|
|
||||||
echo "!!------------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
|
|
||||||
#Check for ~/.asoundrc
|
|
||||||
if [[ -e $HOME/.asoundrc ]]
|
|
||||||
then
|
|
||||||
echo "!!User specific config file (~/.asoundrc)" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $HOME/.asoundrc >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
#Check for .asoundrc.asoundconf (seems to be Ubuntu specific)
|
|
||||||
if [[ -e $HOME/.asoundrc.asoundconf ]]
|
|
||||||
then
|
|
||||||
echo "!!asoundconf-generated config file" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $HOME/.asoundrc.asoundconf >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
#Check for /etc/asound.conf
|
|
||||||
if [[ -e /etc/asound.conf ]]
|
|
||||||
then
|
|
||||||
echo "!!System wide config file (/etc/asound.conf)" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat /etc/asound.conf >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
withsysfs() {
|
|
||||||
local i f
|
|
||||||
local printed=""
|
|
||||||
for i in /sys/class/sound/*; do
|
|
||||||
case "$i" in
|
|
||||||
*/hwC?D?)
|
|
||||||
if [ -f $i/init_pin_configs ]; then
|
|
||||||
if [ -z "$printed" ]; then
|
|
||||||
echo "!!Sysfs Files" >> $FILE
|
|
||||||
echo "!!-----------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
for f in init_pin_configs driver_pin_configs user_pin_configs init_verbs hints; do
|
|
||||||
echo "$i/$f:" >> $FILE
|
|
||||||
cat $i/$f >> $FILE
|
|
||||||
echo >> $FILE
|
|
||||||
done
|
|
||||||
printed=yes
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
if [ -n "$printed" ]; then
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
withdmesg() {
|
|
||||||
echo "!!ALSA/HDA dmesg" >> $FILE
|
|
||||||
echo "!!--------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
dmesg | grep -C1 -E 'ALSA|HDA|HDMI|snd[_-]|sound|hda.codec|hda.intel' >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
}
|
|
||||||
|
|
||||||
withall() {
|
|
||||||
withdevices
|
|
||||||
withconfigs
|
|
||||||
withaplay
|
|
||||||
withamixer
|
|
||||||
withalsactl
|
|
||||||
withlsmod
|
|
||||||
withsysfs
|
|
||||||
withdmesg
|
|
||||||
WITHALL="no"
|
|
||||||
}
|
|
||||||
|
|
||||||
get_alsa_library_version() {
|
|
||||||
ALSA_LIB_VERSION=`grep VERSION_STR /usr/include/alsa/version.h 2>/dev/null|awk {'print $3'}|sed 's/"//g'`
|
|
||||||
|
|
||||||
if [ -z "$ALSA_LIB_VERSION" ]; then
|
|
||||||
if [ -f /etc/lsb-release ]; then
|
|
||||||
. /etc/lsb-release
|
|
||||||
case "$DISTRIB_ID" in
|
|
||||||
Ubuntu)
|
|
||||||
if which dpkg > /dev/null ; then
|
|
||||||
ALSA_LIB_VERSION=`dpkg -l libasound2 | tail -1 | awk '{print $3}' | cut -f 1 -d -`
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ALSA_LIB_VERSION" = "<none>" ]; then
|
|
||||||
ALSA_LIB_VERSION=""
|
|
||||||
fi
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
elif [ -f /etc/debian_version ]; then
|
|
||||||
if which dpkg > /dev/null ; then
|
|
||||||
ALSA_LIB_VERSION=`dpkg -l libasound2 | tail -1 | awk '{print $3}' | cut -f 1 -d -`
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$ALSA_LIB_VERSION" = "<none>" ]; then
|
|
||||||
ALSA_LIB_VERSION=""
|
|
||||||
fi
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#Run checks to make sure the programs we need are installed.
|
|
||||||
LSPCI=$(which lspci 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null);
|
|
||||||
TPUT=$(which tput 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null);
|
|
||||||
DIALOG=$(which dialog 2>/dev/null | sed 's|^[^/]*||' 2>/dev/null);
|
|
||||||
|
|
||||||
#Check to see if sysfs is enabled in the kernel. We'll need this later on
|
|
||||||
SYSFS=$(mount |grep sysfs|awk {'print $3'});
|
|
||||||
|
|
||||||
#Check modprobe config files for sound related options
|
|
||||||
SNDOPTIONS=$(modprobe -c|sed -n 's/^options \(snd[-_][^ ]*\)/\1:/p')
|
|
||||||
|
|
||||||
KEEP_OUTPUT=
|
|
||||||
NFILE=""
|
|
||||||
|
|
||||||
PASTEBIN=""
|
|
||||||
WWWSERVICE="www.alsa-project.org"
|
|
||||||
WELCOME="yes"
|
|
||||||
PROCEED="yes"
|
|
||||||
UPLOAD="ask"
|
|
||||||
REPEAT=""
|
|
||||||
while [ -z "$REPEAT" ]; do
|
|
||||||
REPEAT="no"
|
|
||||||
case "$1" in
|
|
||||||
--update|--help|--about)
|
|
||||||
WELCOME="no"
|
|
||||||
PROCEED="no"
|
|
||||||
;;
|
|
||||||
--upload)
|
|
||||||
UPLOAD="yes"
|
|
||||||
WELCOME="no"
|
|
||||||
;;
|
|
||||||
--no-upload)
|
|
||||||
UPLOAD="no"
|
|
||||||
WELCOME="no"
|
|
||||||
;;
|
|
||||||
--pastebin)
|
|
||||||
PASTEBIN="yes"
|
|
||||||
WWWSERVICE="pastebin"
|
|
||||||
;;
|
|
||||||
--no-dialog)
|
|
||||||
DIALOG=""
|
|
||||||
REPEAT=""
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--stdout)
|
|
||||||
DIALOG=""
|
|
||||||
UPLOAD="no"
|
|
||||||
WELCOME="no"
|
|
||||||
TOSTDOUT="yes"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
#Script header output.
|
|
||||||
if [ "$WELCOME" = "yes" ]; then
|
|
||||||
greeting_message="\
|
|
||||||
|
|
||||||
This script visits the following commands/files to collect diagnostic
|
|
||||||
information about your ALSA installation and sound related hardware.
|
|
||||||
|
|
||||||
dmesg
|
|
||||||
lspci
|
|
||||||
lsmod
|
|
||||||
aplay
|
|
||||||
amixer
|
|
||||||
alsactl
|
|
||||||
/proc/asound/
|
|
||||||
/sys/class/sound/
|
|
||||||
~/.asoundrc (etc.)
|
|
||||||
|
|
||||||
See '$0 --help' for command line options.
|
|
||||||
"
|
|
||||||
if [ -n "$DIALOG" ]; then
|
|
||||||
dialog --backtitle "$BGTITLE" \
|
|
||||||
--title "ALSA-Info script v $SCRIPT_VERSION" \
|
|
||||||
--msgbox "$greeting_message" 20 80
|
|
||||||
else
|
|
||||||
echo "ALSA Information Script v $SCRIPT_VERSION"
|
|
||||||
echo "--------------------------------"
|
|
||||||
echo "$greeting_message"
|
|
||||||
fi # dialog
|
|
||||||
fi # WELCOME
|
|
||||||
|
|
||||||
#Set the output file
|
|
||||||
TEMPDIR=`mktemp -t -d alsa-info.XXXXXXXXXX` || exit 1
|
|
||||||
FILE="$TEMPDIR/alsa-info.txt"
|
|
||||||
if [ -z "$NFILE" ]; then
|
|
||||||
NFILE=`mktemp -t alsa-info.txt.XXXXXXXXXX` || exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
trap cleanup 0
|
|
||||||
|
|
||||||
if [ "$PROCEED" = "yes" ]; then
|
|
||||||
|
|
||||||
if [ -z "$LSPCI" ]; then
|
|
||||||
if [ -d /sys/bus/pci ]; then
|
|
||||||
echo "This script requires lspci. Please install it, and re-run this script."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
#Fetch the info and store in temp files/variables
|
|
||||||
DISTRO=`grep -ihs "buntu\|SUSE\|Fedora\|PCLinuxOS\|MEPIS\|Mandriva\|Debian\|Damn\|Sabayon\|Slackware\|KNOPPIX\|Gentoo\|Zenwalk\|Mint\|Kubuntu\|FreeBSD\|Puppy\|Freespire\|Vector\|Dreamlinux\|CentOS\|Arch\|Xandros\|Elive\|SLAX\|Red\|BSD\|KANOTIX\|Nexenta\|Foresight\|GeeXboX\|Frugalware\|64\|SystemRescue\|Novell\|Solaris\|BackTrack\|KateOS\|Pardus" /etc/{issue,*release,*version}`
|
|
||||||
KERNEL_VERSION=`uname -r`
|
|
||||||
KERNEL_PROCESSOR=`uname -p`
|
|
||||||
KERNEL_MACHINE=`uname -m`
|
|
||||||
KERNEL_OS=`uname -o`
|
|
||||||
[[ `uname -v | grep SMP` ]] && KERNEL_SMP="Yes" || KERNEL_SMP="No"
|
|
||||||
ALSA_DRIVER_VERSION=`cat /proc/asound/version |head -n1|awk {'print $7'} |sed 's/\.$//'`
|
|
||||||
get_alsa_library_version
|
|
||||||
ALSA_UTILS_VERSION=`amixer -v |awk {'print $3'}`
|
|
||||||
LAST_CARD=$((`grep "]: " /proc/asound/cards | wc -l` - 1 ))
|
|
||||||
|
|
||||||
ESDINST=$(which esd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
|
||||||
PAINST=$(which pulseaudio 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
|
||||||
ARTSINST=$(which artsd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
|
||||||
JACKINST=$(which jackd 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
|
||||||
ROARINST=$(which roard 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
|
||||||
DMIDECODE=$(which dmidecode 2>/dev/null| sed 's|^[^/]*||' 2>/dev/null)
|
|
||||||
|
|
||||||
#Check for DMI data
|
|
||||||
if [ -d /sys/class/dmi/id ]; then
|
|
||||||
# No root privileges are required when using sysfs method
|
|
||||||
DMI_SYSTEM_MANUFACTURER=$(cat /sys/class/dmi/id/sys_vendor 2>/dev/null)
|
|
||||||
DMI_SYSTEM_PRODUCT_NAME=$(cat /sys/class/dmi/id/product_name 2>/dev/null)
|
|
||||||
DMI_SYSTEM_PRODUCT_VERSION=$(cat /sys/class/dmi/id/product_version 2>/dev/null)
|
|
||||||
DMI_SYSTEM_FIRMWARE_VERSION=$(cat /sys/class/dmi/id/bios_version 2>/dev/null)
|
|
||||||
DMI_BOARD_VENDOR=$(cat /sys/class/dmi/id/board_vendor 2>/dev/null)
|
|
||||||
DMI_BOARD_NAME=$(cat /sys/class/dmi/id/board_name 2>/dev/null)
|
|
||||||
elif [ -x $DMIDECODE ]; then
|
|
||||||
DMI_SYSTEM_MANUFACTURER=$($DMIDECODE -s system-manufacturer 2>/dev/null)
|
|
||||||
DMI_SYSTEM_PRODUCT_NAME=$($DMIDECODE -s system-product-name 2>/dev/null)
|
|
||||||
DMI_SYSTEM_PRODUCT_VERSION=$($DMIDECODE -s system-version 2>/dev/null)
|
|
||||||
DMI_SYSTEM_FIRMWARE_VERSION=$($DMIDECODE -s bios-version 2>/dev/null)
|
|
||||||
DMI_BOARD_VENDOR=$($DMIDECODE -s baseboard-manufacturer 2>/dev/null)
|
|
||||||
DMI_BOARD_NAME=$($DMIDECODE -s baseboard-product-name 2>/dev/null)
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for ACPI device status
|
|
||||||
if [ -d /sys/bus/acpi/devices ]; then
|
|
||||||
for f in /sys/bus/acpi/devices/*/status; do
|
|
||||||
ACPI_STATUS=$(cat $f 2>/dev/null);
|
|
||||||
if [[ "$ACPI_STATUS" -ne 0 ]]; then
|
|
||||||
echo $f $'\t' $ACPI_STATUS >>$TEMPDIR/acpidevicestatus.tmp;
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat /proc/asound/modules 2>/dev/null|awk {'print $2'}>$TEMPDIR/alsamodules.tmp
|
|
||||||
cat /proc/asound/cards >$TEMPDIR/alsacards.tmp
|
|
||||||
if [[ ! -z "$LSPCI" ]]; then
|
|
||||||
lspci |grep -i "multi\|audio">$TEMPDIR/lspci.tmp
|
|
||||||
fi
|
|
||||||
|
|
||||||
#Check for HDA-Intel cards codec#*
|
|
||||||
cat /proc/asound/card*/codec\#* > $TEMPDIR/alsa-hda-intel.tmp 2> /dev/null
|
|
||||||
|
|
||||||
#Check for AC97 cards codec
|
|
||||||
cat /proc/asound/card*/codec97\#0/ac97\#0-0 > $TEMPDIR/alsa-ac97.tmp 2> /dev/null
|
|
||||||
cat /proc/asound/card*/codec97\#0/ac97\#0-0+regs > $TEMPDIR/alsa-ac97-regs.tmp 2> /dev/null
|
|
||||||
|
|
||||||
#Check for USB mixer setup
|
|
||||||
cat /proc/asound/card*/usbmixer > $TEMPDIR/alsa-usbmixer.tmp 2> /dev/null
|
|
||||||
|
|
||||||
#Fetch the info, and put it in $FILE in a nice readable format.
|
|
||||||
if [[ -z $PASTEBIN ]]; then
|
|
||||||
echo "upload=true&script=true&cardinfo=" > $FILE
|
|
||||||
else
|
|
||||||
echo "name=$USER&type=33&description=/tmp/alsa-info.txt&expiry=&s=Submit+Post&content=" > $FILE
|
|
||||||
fi
|
|
||||||
echo "!!################################" >> $FILE
|
|
||||||
echo "!!ALSA Information Script v $SCRIPT_VERSION" >> $FILE
|
|
||||||
echo "!!################################" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!Script ran on: `LANG=C TZ=UTC date`" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!Linux Distribution" >> $FILE
|
|
||||||
echo "!!------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo $DISTRO >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!DMI Information" >> $FILE
|
|
||||||
echo "!!---------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "Manufacturer: $DMI_SYSTEM_MANUFACTURER" >> $FILE
|
|
||||||
echo "Product Name: $DMI_SYSTEM_PRODUCT_NAME" >> $FILE
|
|
||||||
echo "Product Version: $DMI_SYSTEM_PRODUCT_VERSION" >> $FILE
|
|
||||||
echo "Firmware Version: $DMI_SYSTEM_FIRMWARE_VERSION" >> $FILE
|
|
||||||
echo "Board Vendor: $DMI_BOARD_VENDOR" >> $FILE
|
|
||||||
echo "Board Name: $DMI_BOARD_NAME" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!ACPI Device Status Information" >> $FILE
|
|
||||||
echo "!!---------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $TEMPDIR/acpidevicestatus.tmp >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!Kernel Information" >> $FILE
|
|
||||||
echo "!!------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "Kernel release: $KERNEL_VERSION" >> $FILE
|
|
||||||
echo "Operating System: $KERNEL_OS" >> $FILE
|
|
||||||
echo "Architecture: $KERNEL_MACHINE" >> $FILE
|
|
||||||
echo "Processor: $KERNEL_PROCESSOR" >> $FILE
|
|
||||||
echo "SMP Enabled: $KERNEL_SMP" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!ALSA Version" >> $FILE
|
|
||||||
echo "!!------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "Driver version: $ALSA_DRIVER_VERSION" >> $FILE
|
|
||||||
echo "Library version: $ALSA_LIB_VERSION" >> $FILE
|
|
||||||
echo "Utilities version: $ALSA_UTILS_VERSION" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!Loaded ALSA modules" >> $FILE
|
|
||||||
echo "!!-------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $TEMPDIR/alsamodules.tmp >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!Sound Servers on this system" >> $FILE
|
|
||||||
echo "!!----------------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
if [[ -n $PAINST ]];then
|
|
||||||
[[ `pgrep '^(.*/)?pulseaudio$'` ]] && PARUNNING="Yes" || PARUNNING="No"
|
|
||||||
echo "Pulseaudio:" >> $FILE
|
|
||||||
echo " Installed - Yes ($PAINST)" >> $FILE
|
|
||||||
echo " Running - $PARUNNING" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
if [[ -n $ESDINST ]];then
|
|
||||||
[[ `pgrep '^(.*/)?esd$'` ]] && ESDRUNNING="Yes" || ESDRUNNING="No"
|
|
||||||
echo "ESound Daemon:" >> $FILE
|
|
||||||
echo " Installed - Yes ($ESDINST)" >> $FILE
|
|
||||||
echo " Running - $ESDRUNNING" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
if [[ -n $ARTSINST ]];then
|
|
||||||
[[ `pgrep '^(.*/)?artsd$'` ]] && ARTSRUNNING="Yes" || ARTSRUNNING="No"
|
|
||||||
echo "aRts:" >> $FILE
|
|
||||||
echo " Installed - Yes ($ARTSINST)" >> $FILE
|
|
||||||
echo " Running - $ARTSRUNNING" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
if [[ -n $JACKINST ]];then
|
|
||||||
[[ `pgrep '^(.*/)?jackd$'` ]] && JACKRUNNING="Yes" || JACKRUNNING="No"
|
|
||||||
echo "Jack:" >> $FILE
|
|
||||||
echo " Installed - Yes ($JACKINST)" >> $FILE
|
|
||||||
echo " Running - $JACKRUNNING" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
if [[ -n $ROARINST ]];then
|
|
||||||
[[ `pgrep '^(.*/)?roard$'` ]] && ROARRUNNING="Yes" || ROARRUNNING="No"
|
|
||||||
echo "RoarAudio:" >> $FILE
|
|
||||||
echo " Installed - Yes ($ROARINST)" >> $FILE
|
|
||||||
echo " Running - $ROARRUNNING" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
if [[ -z "$PAINST" && -z "$ESDINST" && -z "$ARTSINST" && -z "$JACKINST" && -z "$ROARINST" ]];then
|
|
||||||
echo "No sound servers found." >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!Soundcards recognised by ALSA" >> $FILE
|
|
||||||
echo "!!-----------------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $TEMPDIR/alsacards.tmp >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
|
|
||||||
if [[ ! -z "$LSPCI" ]]; then
|
|
||||||
echo "!!PCI Soundcards installed in the system" >> $FILE
|
|
||||||
echo "!!--------------------------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $TEMPDIR/lspci.tmp >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "!!Advanced information - PCI Vendor/Device/Subsystem ID's" >> $FILE
|
|
||||||
echo "!!-------------------------------------------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
lspci -vvn |grep -A1 040[1-3] >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$SNDOPTIONS" ]
|
|
||||||
then
|
|
||||||
echo "!!Modprobe options (Sound related)" >> $FILE
|
|
||||||
echo "!!--------------------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
modprobe -c|sed -n 's/^options \(snd[-_][^ ]*\)/\1:/p' >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d "$SYSFS" ]
|
|
||||||
then
|
|
||||||
echo "!!Loaded sound module options" >> $FILE
|
|
||||||
echo "!!---------------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
for mod in `cat /proc/asound/modules|awk {'print $2'}`;do
|
|
||||||
echo "!!Module: $mod" >> $FILE
|
|
||||||
for params in `echo $SYSFS/module/$mod/parameters/*`; do
|
|
||||||
echo -ne "\t";
|
|
||||||
echo "$params : `cat $params`" | sed 's:.*/::';
|
|
||||||
done >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
done
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -s "$TEMPDIR/alsa-hda-intel.tmp" ]; then
|
|
||||||
echo "!!HDA-Intel Codec information" >> $FILE
|
|
||||||
echo "!!---------------------------" >> $FILE
|
|
||||||
echo "--startcollapse--" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $TEMPDIR/alsa-hda-intel.tmp >> $FILE
|
|
||||||
echo "--endcollapse--" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -s "$TEMPDIR/alsa-ac97.tmp" ]; then
|
|
||||||
echo "!!AC97 Codec information" >> $FILE
|
|
||||||
echo "!!----------------------" >> $FILE
|
|
||||||
echo "--startcollapse--" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $TEMPDIR/alsa-ac97.tmp >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $TEMPDIR/alsa-ac97-regs.tmp >> $FILE
|
|
||||||
echo "--endcollapse--" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -s "$TEMPDIR/alsa-usbmixer.tmp" ]; then
|
|
||||||
echo "!!USB Mixer information" >> $FILE
|
|
||||||
echo "!!---------------------" >> $FILE
|
|
||||||
echo "--startcollapse--" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $TEMPDIR/alsa-usbmixer.tmp >> $FILE
|
|
||||||
echo "--endcollapse--" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
#If no command line options are specified, then run as though --with-all was specified
|
|
||||||
if [ -z "$1" ]; then
|
|
||||||
update
|
|
||||||
pbcheck
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi # proceed
|
|
||||||
|
|
||||||
#loop through command line arguments, until none are left.
|
|
||||||
if [ -n "$1" ]; then
|
|
||||||
until [ -z "$1" ]
|
|
||||||
do
|
|
||||||
case "$1" in
|
|
||||||
--pastebin)
|
|
||||||
update
|
|
||||||
pbcheck
|
|
||||||
;;
|
|
||||||
--update)
|
|
||||||
update
|
|
||||||
exit
|
|
||||||
;;
|
|
||||||
--upload)
|
|
||||||
UPLOAD="yes"
|
|
||||||
;;
|
|
||||||
--no-upload)
|
|
||||||
UPLOAD="no"
|
|
||||||
;;
|
|
||||||
--output)
|
|
||||||
shift
|
|
||||||
NFILE="$1"
|
|
||||||
KEEP_OUTPUT="yes"
|
|
||||||
;;
|
|
||||||
--debug)
|
|
||||||
echo "Debugging enabled. $FILE and $TEMPDIR will not be deleted"
|
|
||||||
KEEP_FILES="yes"
|
|
||||||
echo ""
|
|
||||||
;;
|
|
||||||
--with-all)
|
|
||||||
withall
|
|
||||||
;;
|
|
||||||
--with-aplay)
|
|
||||||
withaplay
|
|
||||||
WITHALL="no"
|
|
||||||
;;
|
|
||||||
--with-amixer)
|
|
||||||
withamixer
|
|
||||||
WITHALL="no"
|
|
||||||
;;
|
|
||||||
--with-alsactl)
|
|
||||||
withalsactl
|
|
||||||
WITHALL="no"
|
|
||||||
;;
|
|
||||||
--with-devices)
|
|
||||||
withdevices
|
|
||||||
WITHALL="no"
|
|
||||||
;;
|
|
||||||
--with-dmesg)
|
|
||||||
withdmesg
|
|
||||||
WITHALL="no"
|
|
||||||
;;
|
|
||||||
--with-configs)
|
|
||||||
WITHALL="no"
|
|
||||||
if [[ -e $HOME/.asoundrc ]] || [[ -e /etc/asound.conf ]]
|
|
||||||
then
|
|
||||||
echo "!!ALSA configuration files" >> $FILE
|
|
||||||
echo "!!------------------------" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
|
|
||||||
#Check for ~/.asoundrc
|
|
||||||
if [[ -e $HOME/.asoundrc ]]
|
|
||||||
then
|
|
||||||
echo "!!User specific config file ($HOME/.asoundrc)" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat $HOME/.asoundrc >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
#Check for /etc/asound.conf
|
|
||||||
if [[ -e /etc/asound.conf ]]
|
|
||||||
then
|
|
||||||
echo "!!System wide config file (/etc/asound.conf)" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
cat /etc/asound.conf >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
echo "" >> $FILE
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
--stdout)
|
|
||||||
UPLOAD="no"
|
|
||||||
if [ -z "$WITHALL" ]; then
|
|
||||||
withall
|
|
||||||
fi
|
|
||||||
cat $FILE
|
|
||||||
rm $FILE
|
|
||||||
;;
|
|
||||||
--about)
|
|
||||||
echo "Written/Tested by the following users of #alsa on irc.freenode.net:"
|
|
||||||
echo ""
|
|
||||||
echo " wishie - Script author and developer / Testing"
|
|
||||||
echo " crimsun - Various script ideas / Testing"
|
|
||||||
echo " gnubien - Various script ideas / Testing"
|
|
||||||
echo " GrueMaster - HDA Intel specific items / Testing"
|
|
||||||
echo " olegfink - Script update function"
|
|
||||||
echo " TheMuso - display to stdout functionality"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "alsa-info.sh version $SCRIPT_VERSION"
|
|
||||||
echo ""
|
|
||||||
echo "Available options:"
|
|
||||||
echo " --with-aplay (includes the output of aplay -l)"
|
|
||||||
echo " --with-amixer (includes the output of amixer)"
|
|
||||||
echo " --with-alsactl (includes the output of alsactl)"
|
|
||||||
echo " --with-configs (includes the output of ~/.asoundrc and"
|
|
||||||
echo " /etc/asound.conf if they exist)"
|
|
||||||
echo " --with-devices (shows the device nodes in /dev/snd/)"
|
|
||||||
echo " --with-dmesg (shows the ALSA/HDA kernel messages)"
|
|
||||||
echo ""
|
|
||||||
echo " --output FILE (specify the file to output for no-upload mode)"
|
|
||||||
echo " --update (check server for script updates)"
|
|
||||||
echo " --upload (upload contents to remote server)"
|
|
||||||
echo " --no-upload (do not upload contents to remote server)"
|
|
||||||
echo " --pastebin (use http://pastebin.ca) as remote server"
|
|
||||||
echo " instead www.alsa-project.org"
|
|
||||||
echo " --stdout (print alsa information to standard output"
|
|
||||||
echo " instead of a file)"
|
|
||||||
echo " --about (show some information about the script)"
|
|
||||||
echo " --debug (will run the script as normal, but will not"
|
|
||||||
echo " delete $FILE)"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift 1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$PROCEED" = "no" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$WITHALL" ]; then
|
|
||||||
withall
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$UPLOAD" = "ask" ]; then
|
|
||||||
if [ -n "$DIALOG" ]; then
|
|
||||||
dialog --backtitle "$BGTITLE" --title "Information collected" --yes-label " UPLOAD / SHARE " --no-label " SAVE LOCALLY " --defaultno --yesno "\n\nAutomatically upload ALSA information to $WWWSERVICE?" 10 80
|
|
||||||
DIALOG_EXIT_CODE=$?
|
|
||||||
if [ $DIALOG_EXIT_CODE != 0 ]; then
|
|
||||||
UPLOAD="no"
|
|
||||||
else
|
|
||||||
UPLOAD="yes"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo -n "Automatically upload ALSA information to $WWWSERVICE? [y/N] : "
|
|
||||||
read -e CONFIRM
|
|
||||||
if [ "$CONFIRM" != "y" ]; then
|
|
||||||
UPLOAD="no"
|
|
||||||
else
|
|
||||||
UPLOAD="yes"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$UPLOAD" = "no" ]; then
|
|
||||||
|
|
||||||
if [ -z "$TOSTDOUT" ]; then
|
|
||||||
mv -f $FILE $NFILE || exit 1
|
|
||||||
KEEP_OUTPUT="yes"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n $DIALOG ]]
|
|
||||||
then
|
|
||||||
if [[ -n $PBERROR ]]; then
|
|
||||||
dialog --backtitle "$BGTITLE" --title "Information collected" --msgbox "An error occurred while contacting the $WWWSERVICE.\n Your information was NOT automatically uploaded.\n\nYour ALSA information is in $NFILE" 10 100
|
|
||||||
else
|
|
||||||
dialog --backtitle "$BGTITLE" --title "Information collected" --msgbox "\n\nYour ALSA information is in $NFILE" 10 60
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo
|
|
||||||
|
|
||||||
if [[ -n $PBERROR ]]; then
|
|
||||||
echo "An error occurred while contacting the $WWWSERVICE."
|
|
||||||
echo "Your information was NOT automatically uploaded."
|
|
||||||
echo ""
|
|
||||||
echo "Your ALSA information is in $NFILE"
|
|
||||||
echo ""
|
|
||||||
else
|
|
||||||
if [ -z "$TOSTDOUT" ]; then
|
|
||||||
echo ""
|
|
||||||
echo "Your ALSA information is in $NFILE"
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit
|
|
||||||
|
|
||||||
fi # UPLOAD
|
|
||||||
|
|
||||||
#Test that wget is installed, and supports --post-file. Upload $FILE if it does, and prompt user to upload file if it doesnt.
|
|
||||||
if [[ -n "${WGET}" ]] && [[ -x "${WGET}" ]] && [[ `wget --help |grep post-file` ]]
|
|
||||||
then
|
|
||||||
|
|
||||||
if [[ -n $DIALOG ]]
|
|
||||||
then
|
|
||||||
|
|
||||||
if [[ -z $PASTEBIN ]]; then
|
|
||||||
wget -O - --tries=5 --timeout=60 --post-file=$FILE "http://www.alsa-project.org/cardinfo-db/" &>$TEMPDIR/wget.tmp || echo "Upload failed; exit"
|
|
||||||
{ for i in 10 20 30 40 50 60 70 80 90; do
|
|
||||||
echo $i
|
|
||||||
sleep 0.2
|
|
||||||
done
|
|
||||||
echo; } |dialog --backtitle "$BGTITLE" --guage "Uploading information to www.alsa-project.org ..." 6 70 0
|
|
||||||
else
|
|
||||||
wget -O - --tries=5 --timeout=60 --post-file=$FILE "http://pastebin.ca/quiet-paste.php?api=$PASTEBINKEY&encrypt=t&encryptpw=blahblah" &>$TEMPDIR/wget.tmp || echo "Upload failed; exit"
|
|
||||||
{ for i in 10 20 30 40 50 60 70 80 90; do
|
|
||||||
echo $i
|
|
||||||
sleep 0.2
|
|
||||||
done
|
|
||||||
echo; } |dialog --backtitle "$BGTITLE" --guage "Uploading information to www.pastebin.ca ..." 6 70 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
dialog --backtitle "$BGTITLE" --title "Information uploaded" --yesno "Would you like to see the uploaded information?" 5 100
|
|
||||||
DIALOG_EXIT_CODE=$?
|
|
||||||
if [ $DIALOG_EXIT_CODE = 0 ]; then
|
|
||||||
grep -v "alsa-info.txt" $FILE >$TEMPDIR/uploaded.txt
|
|
||||||
dialog --backtitle "$BGTITLE" --textbox $TEMPDIR/uploaded.txt 0 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
clear
|
|
||||||
|
|
||||||
# no dialog
|
|
||||||
else
|
|
||||||
|
|
||||||
if [[ -z $PASTEBIN ]]; then
|
|
||||||
echo -n "Uploading information to www.alsa-project.org ... "
|
|
||||||
wget -O - --tries=5 --timeout=60 --post-file=$FILE http://www.alsa-project.org/cardinfo-db/ &>$TEMPDIR/wget.tmp &
|
|
||||||
else
|
|
||||||
echo -n "Uploading information to www.pastebin.ca ... "
|
|
||||||
wget -O - --tries=5 --timeout=60 --post-file=$FILE http://pastebin.ca/quiet-paste.php?api=$PASTEBINKEY &>$TEMPDIR/wget.tmp &
|
|
||||||
fi
|
|
||||||
|
|
||||||
#Progess spinner for wget transfer.
|
|
||||||
i=1
|
|
||||||
sp="/-\|"
|
|
||||||
echo -n ' '
|
|
||||||
while pgrep wget &>/dev/null
|
|
||||||
do
|
|
||||||
echo -en "\b${sp:i++%${#sp}:1}"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo -e "\b Done!"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
fi #dialog
|
|
||||||
|
|
||||||
#See if tput is available, and use it if it is.
|
|
||||||
if [ -n "$TPUT" ]; then
|
|
||||||
if [[ -z $PASTEBIN ]]; then
|
|
||||||
FINAL_URL=`tput setaf 1; grep "SUCCESS:" $TEMPDIR/wget.tmp | cut -d ' ' -f 2 ; tput sgr0`
|
|
||||||
else
|
|
||||||
FINAL_URL=`tput setaf 1; grep "SUCCESS:" $TEMPDIR/wget.tmp | sed -n 's/.*\:\([0-9]\+\).*/http:\/\/pastebin.ca\/\1/p';tput sgr0`
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [[ -z $PASTEBIN ]]; then
|
|
||||||
FINAL_URL=`grep "SUCCESS:" $TEMPDIR/wget.tmp | cut -d ' ' -f 2`
|
|
||||||
else
|
|
||||||
FINAL_URL=`grep "SUCCESS:" $TEMPDIR/wget.tmp | sed -n 's/.*\:\([0-9]\+\).*/http:\/\/pastebin.ca\/\1/p'`
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Output the URL of the uploaded file.
|
|
||||||
echo "Your ALSA information is located at $FINAL_URL"
|
|
||||||
echo "Please inform the person helping you."
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# We couldnt find a suitable wget, so tell the user to upload manually.
|
|
||||||
else
|
|
||||||
mv -f $FILE $NFILE || exit 1
|
|
||||||
KEEP_OUTPUT="yes"
|
|
||||||
if [[ -z $DIALOG ]]
|
|
||||||
then
|
|
||||||
if [[ -z $PASTEBIN ]]; then
|
|
||||||
echo ""
|
|
||||||
echo "Could not automatically upload output to http://www.alsa-project.org"
|
|
||||||
echo "Possible reasons are:"
|
|
||||||
echo " 1. Couldnt find 'wget' in your PATH"
|
|
||||||
echo " 2. Your version of wget is less than 1.8.2"
|
|
||||||
echo ""
|
|
||||||
echo "Please manually upload $NFILE to http://www.alsa-project.org/cardinfo-db/ and submit your post."
|
|
||||||
echo ""
|
|
||||||
else
|
|
||||||
echo ""
|
|
||||||
echo "Could not automatically upload output to http://www.pastebin.ca"
|
|
||||||
echo "Possible reasons are:"
|
|
||||||
echo " 1. Couldnt find 'wget' in your PATH"
|
|
||||||
echo " 2. Your version of wget is less than 1.8.2"
|
|
||||||
echo ""
|
|
||||||
echo "Please manually upload $NFILE to http://www.pastebin.ca/upload.php and submit your post."
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [[ -z $PASTEBIN ]]; then
|
|
||||||
dialog --backtitle "$BGTITLE" --msgbox "Could not automatically upload output to http://www.alsa-project.org.\nPossible reasons are:\n\n 1. Couldn't find 'wget' in your PATH\n 2. Your version of wget is less than 1.8.2\n\nPlease manually upload $NFILE to http://www.alsa-project,org/cardinfo-db/ and submit your post." 25 100
|
|
||||||
else
|
|
||||||
dialog --backtitle "$BGTITLE" --msgbox "Could not automatically upload output to http://www.pastebin.ca.\nPossible reasons are:\n\n 1. Couldn't find 'wget' in your PATH\n 2. Your version of wget is less than 1.8.2\n\nPlease manually upload $NFILE to http://www.pastebin.ca/upload.php and submit your post." 25 100
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
|
@ -1,4 +1,4 @@
|
||||||
> getInfo sur *1101HA*
|
> getInfo sur *HOSTNAME*
|
||||||
|
|
||||||
# titre 1
|
# titre 1
|
||||||
|
|
||||||
|
|
|
@ -1,154 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
|
|
||||||
## variables scripts
|
|
||||||
|
|
||||||
version=1.4.0
|
|
||||||
date="28.11.2017"
|
|
||||||
|
|
||||||
prefix_url="http://zone.spip.org/trac/spip-zone/changeset/latest/_plugins_/"
|
|
||||||
sufix_url="?old_path=/&format=zip"
|
|
||||||
repToSave="/home/lf2hyggr/public_html/plugins"
|
|
||||||
repTemporaire="/tmp"
|
|
||||||
public_html/plugins/_plugins_/rainette
|
|
||||||
# la liste des 66 plugins à charger, juste le nom
|
|
||||||
toLoad=(
|
|
||||||
palette
|
|
||||||
rainette
|
|
||||||
)
|
|
||||||
|
|
||||||
# http://zone.spip.org/trac/spip-zone/changeset/latest/_plugins_/palette?old_path=/&format=zip
|
|
||||||
|
|
||||||
## début du script, plus rien à configurer à partir d'ici
|
|
||||||
|
|
||||||
PATH='/usr/sbin:/usr/bin:/sbin:/bin'
|
|
||||||
TERM=xterm
|
|
||||||
IFS_INI="$IFS"
|
|
||||||
IFS=$' \t\n'
|
|
||||||
export PATH TERM IFS
|
|
||||||
|
|
||||||
### fonctions utiles
|
|
||||||
|
|
||||||
# test wget, $1 url à tester, sortie du script si $1 seul (même si url testée ok)
|
|
||||||
# si $2=print affiche url testée & entêtes http & location (si présente) et sortie normale fonction
|
|
||||||
# si $2=loc affiche seulement location et sortie normale fonction
|
|
||||||
# si $2=test return 0 si ok, return 1 si ko
|
|
||||||
f__wget_test(){ # 28/11/2017
|
|
||||||
local file_test_wget retourWget retourHttp location
|
|
||||||
file_test_wget="/tmp/testWget-$$-$RANDOM"
|
|
||||||
wget -Sq --timeout=10 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget"
|
|
||||||
retourWget="$?"
|
|
||||||
[ "$retourWget" == 1 ] && retourWget="code erreur générique"
|
|
||||||
[ "$retourWget" == 2 ] && retourWget="parse erreur (ligne de commande?)"
|
|
||||||
[ "$retourWget" == 3 ] && retourWget="erreur Entrée/sortie fichier"
|
|
||||||
[ "$retourWget" == 4 ] && retourWget="défaut réseau"
|
|
||||||
[ "$retourWget" == 5 ] && retourWget="défaut vérification SSL"
|
|
||||||
[ "$retourWget" == 6 ] && retourWget="défaut authentification"
|
|
||||||
[ "$retourWget" == 7 ] && retourWget="erreur de protocole"
|
|
||||||
[ "$retourWget" == 8 ] && retourWget="réponse serveur en erreur"
|
|
||||||
retourHttp="$(grep -i 'HTTP/' "$file_test_wget" | tr -d '\n' | xargs)"
|
|
||||||
if [ "$2" == "test" ]; then
|
|
||||||
rm "$file_test_wget" 2>/dev/null
|
|
||||||
# spécial maintenance frama.link
|
|
||||||
[ "$(grep -c '303' <<< $retourHttp)" -ne 0 ] && return 1 # 303 See Other
|
|
||||||
[ "$retourWget" == "0" ] && return 0 || return 1
|
|
||||||
fi
|
|
||||||
location="$(grep -i 'location' $file_test_wget | xargs)"
|
|
||||||
if [ "$2" == "print" ]; then
|
|
||||||
if [ "$retourWget" ]; then
|
|
||||||
echo "erreur wget: $RED$retourWget"
|
|
||||||
echo -e "$BLUE $1$STD\t$RED $retourHttp"
|
|
||||||
else
|
|
||||||
echo -e "$BLUE $1$STD\t$GREEN $retourHttp"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ "$2" == "print" ] || [ "$2" == "loc" ]; then
|
|
||||||
[ "$location" ] && echo "$YELLOW $location" || echo "$YELLOW no location"
|
|
||||||
echo "$STD"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
if [ "$retourWget" ]; then
|
|
||||||
rm "$file_test_wget"
|
|
||||||
# f__error "wget, $retourWget" "$1" "$YELLOW$retourHttp" "$location"
|
|
||||||
echo -e "$RED errur wget, $retourWget \n $1 \n $YELLOW$retourHttp \n $location"
|
|
||||||
fi
|
|
||||||
if [ "$(grep -c '200' <<< $retourHttp)" -ne 0 ]; then
|
|
||||||
echo -e "$GREEN\ntout est ok, réessayer\n$STD"
|
|
||||||
fi
|
|
||||||
rm "$file_test_wget" 2>/dev/null
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
|
|
||||||
f__start(){ # 08/10/2017
|
|
||||||
YELLOW=$(tput setaf 3) # question
|
|
||||||
GREEN=$(tput setaf 2) # ok
|
|
||||||
BLUE=$(tput setaf 4) # info
|
|
||||||
RED=$(tput setaf 1) # alerte
|
|
||||||
STD=$(tput sgr0) # retour normal
|
|
||||||
BOLD=$(tput bold)
|
|
||||||
|
|
||||||
[ "$( type -p figlet 2>/dev/null )" ] && figlet $( basename $0 | tr '`' "'")
|
|
||||||
echo "$GREEN$( basename $0 )$BLUE $version$STD du $BLUEE$date$STD"
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
f_test_auDemarrage(){
|
|
||||||
# on vérifie certains paramètres/variables
|
|
||||||
[ "${prefix_url -1}" == "/" ] && prefix_url=${prefix_url%/} # si présent, on enlève slash final
|
|
||||||
[ "${repToSave -1}" == "/" ] && repToSave=${repToSave%/}
|
|
||||||
[ "${repTemporaire -1}" == "/" ] && repTemporaire=${repTemporaire%/}
|
|
||||||
|
|
||||||
if [ ! -d "$repToSave" ]; then
|
|
||||||
echo -e "$REDCritique:$STD erreur, répertoire cible inexistant: $repToSave"
|
|
||||||
exit 1
|
|
||||||
elif [ ! -d "$repTemporaire" ]; then
|
|
||||||
echo -e "$REDCritique:$STD erreur, répertoire temporaire inexistant: $repTemporaire"
|
|
||||||
exit 1
|
|
||||||
elif [ "$EUID" == "0" ]; then
|
|
||||||
echo "attention aux droit si root.. ;)"
|
|
||||||
elif [ -z $( which wget ) ]; then
|
|
||||||
echo "$REDCritique:$STD wget requis: apt install wget"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
### coeur du script
|
|
||||||
|
|
||||||
f__start
|
|
||||||
f_test_auDemarrage
|
|
||||||
|
|
||||||
# coeur du chargement, plugins chargés à partir du tableau complété en tête du script (toLoad)
|
|
||||||
for plugin in "${toLoad[@]}"; do
|
|
||||||
|
|
||||||
echo "Chargement$BOLD $plugin $STD..." # affichage plugin en cours
|
|
||||||
|
|
||||||
urlPlugin="$prefix_url/$plugin/$sufix_url" # formation url complète
|
|
||||||
|
|
||||||
# pour débugguer, décommenter
|
|
||||||
# echo "$urlPlugin"
|
|
||||||
# echo "\$repTemporaire/\$plugin "$repTemporaire/$plugin""
|
|
||||||
# echo "\$repToSave/\$plugin $repToSave/$plugin"
|
|
||||||
|
|
||||||
# on télécharge
|
|
||||||
wget -q --tries=2 --timeout=15 -O "$repTemporaire/$plugin" "$urlPlugin"
|
|
||||||
if [ "$?" != "0" ]; then # ERREUR wget
|
|
||||||
f__wget_test "$urlPlugin"
|
|
||||||
else # OK, on traitements finaux
|
|
||||||
mkdir -p "$repToSave/$plugin" # création répertoire du plugin, sans erreur si existant
|
|
||||||
|
|
||||||
cp "$repTemporaire/$plugin" "$repToSave/$plugin/$plugin" # copie à l'emplacement final
|
|
||||||
# -o overwrite sans prompt
|
|
||||||
unzip -o "$repToSave/$plugin/$plugin" #-d "$repToSave/$plugin/"
|
|
||||||
fi
|
|
||||||
# ménage
|
|
||||||
rm "$repTemporaire/$plugin" 2>/dev/null # si encore présent, on efface le fichier temporaire
|
|
||||||
rm "$repToSave/$plugin/$plugin" 2>/dev/null # suppression zip après décompression (si vraiment besoin)
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
script:
|
|
||||||
|
|
||||||
wget -nv -O pluginsToLoad.sh https://framagit.org/kyodev/kyopages/raw/master/scripts/tests/pluginsToLoad.sh
|
|
||||||
chmod +x pluginsToLoad.sh && ./pluginsToLoad.sh
|
|
|
@ -1,139 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# version=1.0
|
|
||||||
# 28.11.2017
|
|
||||||
|
|
||||||
exec 6>&1 # Lie le descripteur de fichier #6 avec stdout, sauvegarde stdout
|
|
||||||
exec > tempo # stdout dans tempo
|
|
||||||
|
|
||||||
echo " ### Advanced Linux Sound Architecture ( ALSA )"
|
|
||||||
echo
|
|
||||||
## CPU
|
|
||||||
echo "CPU ( le premier ) ------------------------------------------------------"
|
|
||||||
gawk -F': ' '
|
|
||||||
/model name/ {
|
|
||||||
gsub(/ /," ")
|
|
||||||
print " "$2
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
' /proc/cpuinfo
|
|
||||||
echo
|
|
||||||
## Mémoire
|
|
||||||
echo "Mémoire -----------------------------------------------------------------"
|
|
||||||
gawk '
|
|
||||||
/MemTotal|SwapTotal/ {
|
|
||||||
gsub(/kB/,"ko")
|
|
||||||
gsub(/:/,"")
|
|
||||||
printf " %-9s %\047d %s\n",$1,$2,$3
|
|
||||||
}
|
|
||||||
' /proc/meminfo
|
|
||||||
echo
|
|
||||||
## Matériel
|
|
||||||
echo "Matériel ( vidéo, réseau, son ) -----------------------------------------"
|
|
||||||
gawk '
|
|
||||||
BEGIN { IGNORECASE=1 }
|
|
||||||
/VGA .* controller|Display controller|3D controller|Graphic|multimedia/ {
|
|
||||||
print " "$0
|
|
||||||
}
|
|
||||||
/Ethernet controller|Network controller/ {
|
|
||||||
print " "$0
|
|
||||||
}
|
|
||||||
/Audio device|Audio controller|Multimedia audio controller/ &&
|
|
||||||
$0 !~ /modem|usb|webcam/ {
|
|
||||||
print " "$0
|
|
||||||
}
|
|
||||||
' <<< $( lspci )
|
|
||||||
echo
|
|
||||||
## version ALSA
|
|
||||||
echo "Version kernel et driver ALSA -------------------------------------------"
|
|
||||||
gawk '
|
|
||||||
NR == 1 { print " kernel: " $0}
|
|
||||||
NR != 1 {
|
|
||||||
sub(/Advanced Linux Sound Architecture Driver /,"Driver ALSA : ")
|
|
||||||
sub(/Version /,"")
|
|
||||||
sub(/.$/,"")
|
|
||||||
print " "$0
|
|
||||||
}
|
|
||||||
' <<< "$( uname -r )"$'\n'"$( cat /proc/asound/version )"
|
|
||||||
echo
|
|
||||||
## ALSA devices
|
|
||||||
echo "ALSA devices ------------------------------------------------------------"
|
|
||||||
if [ ! -d /dev/snd ] ; then
|
|
||||||
echo "/dev/snd/ : erreur, répertoire inexistant"
|
|
||||||
critic="snd"
|
|
||||||
else
|
|
||||||
gawk '
|
|
||||||
!/^d|total/ { print " /dev/snd/"$NF}
|
|
||||||
' <<< $( ls -l /dev/snd )
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
## asound
|
|
||||||
echo "/proc/asound ------------------------------------------------------------"
|
|
||||||
if [ ! -d /proc/asound ] ; then
|
|
||||||
echo "/proc/asound : erreur, répertoire inexistant"
|
|
||||||
echo "ALSA n'est pas installé correctement"
|
|
||||||
critic="asound"
|
|
||||||
else
|
|
||||||
gawk ' BEGIN { print " > /proc/asound/cards" }
|
|
||||||
{ print " "$0 }' /proc/asound/cards
|
|
||||||
|
|
||||||
gawk ' BEGIN { print "\n > /proc/asound/devices" }
|
|
||||||
{ print " "$0 }' /proc/asound/devices
|
|
||||||
|
|
||||||
gawk ' BEGIN { print "\n > /proc/asound/hwdep" }
|
|
||||||
{ print " "$0 }' /proc/asound/hwdep
|
|
||||||
|
|
||||||
gawk ' BEGIN { print "\n > /proc/asound/pcm" }
|
|
||||||
{ print " "$0 }' /proc/asound/pcm
|
|
||||||
|
|
||||||
gawk ' BEGIN { print "\n > /proc/asound/seq/clients" }
|
|
||||||
{ print " "$0 }' /proc/asound/seq/clients
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
|
|
||||||
## modules
|
|
||||||
echo "Modules --------------------------------------------"
|
|
||||||
if [ "$critic" ]; then
|
|
||||||
echo "erreur critique"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
lsmod | grep -Eq '(^usb-midi|^audio)'
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
echo "Warning: OSS modules 'audio' et/ou 'usb-midi' sont chargés"
|
|
||||||
echo "cela peut interférer avec le modules ALSA snd-usb-audio."
|
|
||||||
echo "créer un fichier .conf dans /etc/modprobe.d/ pour blacklister ces DEUX modules"
|
|
||||||
if [ ! -f /etc/hotplug/blacklist ]; then
|
|
||||||
echo "You should create a file '/etc/hotplug/blacklist' with"
|
|
||||||
echo "both names on it to avoid hotplug loading them."
|
|
||||||
else
|
|
||||||
grep -Eq '(^usb-midi|^audio)' /etc/hotplug/blacklist
|
|
||||||
if [ $? -eq 1 ]; then
|
|
||||||
echo "You should add both modules to '/etc/hotplug/blacklist'"
|
|
||||||
echo "to avoid hotplug loading them."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
gawk ' BEGIN { print "\n > /proc/asound/modules" }
|
|
||||||
{ print " "$2"\n" }' /proc/asound/modules
|
|
||||||
|
|
||||||
|
|
||||||
modules=$( gawk ' { print " "$2 }' /proc/asound/modules )
|
|
||||||
modules=${modules// /}
|
|
||||||
echo -"$modules"-
|
|
||||||
|
|
||||||
# /^snd/
|
|
||||||
|
|
||||||
gawk '
|
|
||||||
#-v modules="$modules"
|
|
||||||
# /modules/ { printf " %-25s %s %2s %s\n",$1, $2, $3, $4 }
|
|
||||||
/'$( echo $modules )'/ { printf " %-25s %s %2s %s\n",$1, $2, $3, $4 }
|
|
||||||
' <<<$( lsmod )
|
|
||||||
|
|
||||||
echo
|
|
||||||
|
|
||||||
exec 1>&6 6>&- # Restaure stdout et ferme le descripteur de fichier #6
|
|
||||||
pager tempo
|
|
||||||
rm tempo
|
|
||||||
|
|
||||||
exit 0
|
|
|
@ -1,309 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
version=1.0.0
|
|
||||||
date=18/09/2017
|
|
||||||
script="$(basename $0)"
|
|
||||||
urlNotice="https://kyodev.frama.io/kyopages/scripts/getInfo/"
|
|
||||||
|
|
||||||
|
|
||||||
# assigne $affichage_text
|
|
||||||
f_g_affichage(){ # 19/09/2017
|
|
||||||
f_g_color
|
|
||||||
affichage_text=" _ ___ __
|
|
||||||
__ _ ___| |_|_ _|_ __ / _| ___
|
|
||||||
/ _' |/ _ \ __|| || '_ \| |_ / _ \
|
|
||||||
| (_| | __/ |_ | || | | | _| (_) |
|
|
||||||
\__, |\___|\__|___|_| |_|_| \___/
|
|
||||||
|___/
|
|
||||||
"
|
|
||||||
case $context_appli in
|
|
||||||
terminal)
|
|
||||||
echo -e "$affichage_text\n$YELLOW version $version - $date$COLOR\n"
|
|
||||||
;;
|
|
||||||
zenity)
|
|
||||||
affichage_text="$(sed 's/\\/\\\\/g' <<< $affichage_text)"
|
|
||||||
affichage_text+="\n$YELLOW version $version - $date</span>"
|
|
||||||
# zenity --info --icon-name preferences-system --no-wrap --timeout 3 --title "$script $version" \
|
|
||||||
# --text="<span font-family=\"monospace\">$(f_g_lint zen "$affichage_text")</span>\n$g_espaces$g_espaces"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
#system-help applications-internet go-up go-top
|
|
||||||
#https://developer.gnome.org/icon-naming-spec/#names
|
|
||||||
|
|
||||||
f_g_color(){ # 18/09/2017
|
|
||||||
case $context_appli in
|
|
||||||
terminal)
|
|
||||||
RED="$(printf "\033[0;31m")" # alerte
|
|
||||||
GREEN="$(printf "\033[0;32m")" # ok
|
|
||||||
YELLOW="$(printf "\033[0;33m")" # question
|
|
||||||
BLUE="$(printf "\033[0;34m")" # info
|
|
||||||
# COLOR="$(printf "\033[0m")" # standard par défaut, black
|
|
||||||
COLOR="$(tput sgr0)" # standard par défaut, black
|
|
||||||
MAGENTA="$(printf "\033[0;35m")"
|
|
||||||
CYAN="$(printf "\033[0;36m")"
|
|
||||||
WHITE="$(printf "\033[0;37m")"
|
|
||||||
|
|
||||||
comment(){
|
|
||||||
tput setab 7 # background white ??!! gris clair! tput setb 7 (HP)
|
|
||||||
tput setaf 0 # foreground black
|
|
||||||
clear
|
|
||||||
tput setab 7 # background white ??!! gris clair! tput setb 7 (HP)
|
|
||||||
tput setaf 0 # foreground black
|
|
||||||
clear
|
|
||||||
|
|
||||||
tput sgr0 & clear # effacement attribut -> réglages par défaut
|
|
||||||
|
|
||||||
\033[code_police;couleur_texte;couleur_fondm
|
|
||||||
COULEUR....TEXTE....ARRIÈRE-PLAN
|
|
||||||
Noir 30 40
|
|
||||||
Rouge 31 41
|
|
||||||
Vert 32 42
|
|
||||||
Jaune 33 43
|
|
||||||
Bleu 34 44
|
|
||||||
Magenta 35 45
|
|
||||||
Cyan 36 46
|
|
||||||
Blanc 37 47
|
|
||||||
Tektronix-type terminal voir tput setaf ou setab
|
|
||||||
BLACK 0 0, 0, 0
|
|
||||||
RED 1 max,0,0
|
|
||||||
GREEN 2 0,max,0
|
|
||||||
YELLOW 3 max,max,0
|
|
||||||
BLUE 4 0,0,max
|
|
||||||
MAGENTA 5 max,0,max
|
|
||||||
CYAN 6 0,max,max
|
|
||||||
WHITE 7 max,max,max
|
|
||||||
}
|
|
||||||
;;
|
|
||||||
zenity)
|
|
||||||
# red green blue yellow magenta white black gray lightblue lightgray violet purple teal navy MediumBlue Brown Chocolate
|
|
||||||
# http://htmlcolorcodes.com/fr/noms-de-couleur/
|
|
||||||
YELLOW="<span color=\"Chocolate\">" #D2691E
|
|
||||||
GREEN="<span color=\"green\">" #008000
|
|
||||||
BLUE="<span color=\"MediumBlue\">" # blue: 0000FF
|
|
||||||
RED="<span color=\"red\">" #FF0000
|
|
||||||
COLOR="<span color=\"black\">" #000000
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# assigne $context_appli, context_break
|
|
||||||
f_g_context(){ # 15/09/2017
|
|
||||||
g_espaces="$(printf " %.s" $(seq 40))" # nb d'espaces pour élargir la fenêtre
|
|
||||||
if [ -t 0 ]; then context_appli="terminal";
|
|
||||||
elif [ -x /usr/bin/zenity ]; then context_appli="zenity";
|
|
||||||
elif [ -x /usr/bin/kdialog ]; then context_appli="kdialog";
|
|
||||||
else exit 1; fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# $1=oui|non réponse par défaut, $2=message de la question, return 0 pour oui, 1 pour non
|
|
||||||
f_g_dialog_oui_non () { # 18/09/2017
|
|
||||||
local reply
|
|
||||||
[[ "$1" =~ ^oui$|^non$ ]] || f_g_error "dialog_oui_non, erreur \$1 fonction"
|
|
||||||
case $context_appli in
|
|
||||||
terminal )
|
|
||||||
printf "$BLUE $2"
|
|
||||||
[ "$1" == "oui" ] && printf " [O/n] " || printf " [o/N] "
|
|
||||||
printf "$COLOR"
|
|
||||||
read -r reply
|
|
||||||
if [ -z "$reply" ]; then
|
|
||||||
[ "$1" == "oui" ] && reply="oui" || reply="non"
|
|
||||||
fi
|
|
||||||
if [[ ${reply,,} =~ ^ou?i?$ ]]; then return 0; else return 1; fi #${,,} lowercase
|
|
||||||
;;
|
|
||||||
zenity )
|
|
||||||
local yes no default_cancel
|
|
||||||
[ "$1" != "oui" ] && default_cancel="--default-cancel" # non par défaut
|
|
||||||
zenity --question "$default_cancel" --ok-label "Oui" --cancel-label "Non" --no-wrap \
|
|
||||||
--title "$script $version" --text="<span color=\"$YELLOW\"> $(f_g_lint zen "$2") </span>\n$g_espaces"
|
|
||||||
[ "$?" -eq 0 ] && return 0 || return 1
|
|
||||||
# if [ "$?" -eq 0 ]; then return 0
|
|
||||||
# elif [ "$?" -eq 1 ]; then return 1
|
|
||||||
# elif [ "$?" -eq -1 ]; then f_g_error "erreur inattendue"
|
|
||||||
# elif [ "$?" -eq 5 ]; then f_g_info "timeout"
|
|
||||||
# else return 1
|
|
||||||
# fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $opType=upgrade
|
|
||||||
# pas de balisage dans $1 pour éviter pollution logs
|
|
||||||
# pour inclure un balisage couleur à lintérieur d'un paramètre: $COULEUR texte</span>
|
|
||||||
f_g_error() { # 23/09/2017
|
|
||||||
local text depart=2
|
|
||||||
text="$RED $script $version, erreur critique: $1"
|
|
||||||
case $context_appli in
|
|
||||||
terminal)
|
|
||||||
text+="$COLOR\n"
|
|
||||||
for (( i="$depart" ; i<="$#" ; i++ )); do text+="$BLUE ${!i}$COLOR\n"; done
|
|
||||||
unset i
|
|
||||||
echo -e "$(f_g_lint trm "$text")"
|
|
||||||
if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
zenity)
|
|
||||||
text+="</span>\n"
|
|
||||||
for (( i="$depart" ; i<="$#" ; i++ )); do text+="$BLUE ${!i}</span>\n"; done
|
|
||||||
unset i
|
|
||||||
zenity --error --no-wrap --title "$script $version, erreur critique" \
|
|
||||||
--text="$(f_g_lint zen "$text")\n$g_espaces"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# affichage des paramètres en bleu, si $1=raw pas de ligne vide à la fin, si $1=log $2 uniquement logué
|
|
||||||
# pour inclure un balisage couleur à lintérieur d'un paramètre: $COULEUR texte</span>
|
|
||||||
f_g_info() { # 23/09/2017
|
|
||||||
local text depart=1
|
|
||||||
if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2; fi
|
|
||||||
[ "$1" == "log" ] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )"
|
|
||||||
case $context_appli in
|
|
||||||
terminal)
|
|
||||||
for (( i="$depart" ; i<="$#" ; i++ )); do text+="$BLUE $(sed "s/<\/span>/$COLOR/" <<< ${!i})$COLOR\n"; done
|
|
||||||
[ "$1" == raw ] && printf "$(f_g_lint trm "$text")" || echo -e "$(f_g_lint trm "$text")"
|
|
||||||
unset i
|
|
||||||
;;
|
|
||||||
zenity)
|
|
||||||
for (( i="$depart" ; i<="$#" ; i++ )); do text+="$BLUE ${!i}</span>\n"; done
|
|
||||||
zenity --info --no-wrap --title "$script $version" --text="$(f_g_lint zen "$text")\n$g_espaces"
|
|
||||||
unset i
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# $1=trm|zen|kdi $2=texte à nettoyer
|
|
||||||
f_g_lint(){ # 20/09/2017
|
|
||||||
case "$1" in
|
|
||||||
trm)
|
|
||||||
sed "s/<\/span>/$COLOR/g" <<< "$2"
|
|
||||||
;;
|
|
||||||
zen)
|
|
||||||
sed 's/&/&/g' <<< "$2"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
fg_help(){ # 19/09/2017
|
|
||||||
local text
|
|
||||||
text+=" ./getInfo : exécution normale, rapport markdown configuration & diagnostic
|
|
||||||
getInfo : exécution normale si script installé dans le système
|
|
||||||
|
|
||||||
options:
|
|
||||||
-d, --dmesg : dmesg erreur, warning, critique.$RED root requis</span>$BLUE, rapport markdown seul de dmesg
|
|
||||||
-h, --help : affichage aide
|
|
||||||
-l, --list : afficher le rapport markdown existant
|
|
||||||
-p, --paste : exporte le rapport markdown existant, durée du paste standard 7 jours
|
|
||||||
--ip : affiche ip(s) publique(s) (ipv4 / ipv6), infos confidentielles, sans rapport markdown
|
|
||||||
-m, --mac : affiche les adresses Mac, infos confidentielles, sans rapport markdown
|
|
||||||
-s, --ssid : affiche configurations ssid, infos confidentielles
|
|
||||||
pas de rapport markdown, root et NetworkManager requis
|
|
||||||
|
|
||||||
debug : le résultat json du paste sera affiché après export
|
|
||||||
-tn : durée du paste de n jour(s)
|
|
||||||
|
|
||||||
-i, --install : installation du script dans le système, droits root requis
|
|
||||||
-r, --remove : suppression du script dans le système, droits root requis
|
|
||||||
-u, --upgrade : upgrade script si maj possible
|
|
||||||
-v, --version : version du script, en ligne et en cours d'exécution</span>
|
|
||||||
"
|
|
||||||
text+="\n plus d'infos: $GREEN$urlNotice</span>"
|
|
||||||
case $context_appli in
|
|
||||||
terminal)
|
|
||||||
echo -e "$BLUE$(f_g_lint trm "$text")$COLOR\n"
|
|
||||||
;;
|
|
||||||
zenity)
|
|
||||||
local text2="$(f_g_lint zen "$affichage_text")\n"
|
|
||||||
text2+="$GREEN<b> ------------------------------------ OPTIONS EN CONSOLE TERMINAL -----</b></span>\n"
|
|
||||||
text2+="$(f_g_lint zen "$text")\n"
|
|
||||||
zenity --info --icon-name=preferences-system --no-wrap --title "$script $version" \
|
|
||||||
--text="<span font-family=\"monospace\">$BLUE$text2</span></span>\n$g_espaces$g_espaces"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
##################################""
|
|
||||||
|
|
||||||
f_g_context
|
|
||||||
f_g_affichage
|
|
||||||
|
|
||||||
# création lanceur.desktop
|
|
||||||
scrpt_lanceur_desktop(){ # 21/09/2017
|
|
||||||
# local fileDesktop="/usr/share/applications/$script.desktop"
|
|
||||||
local fileDesktop="$HOME/.local/share/applications/"$script".desktop"
|
|
||||||
rm "$fileDesktop"
|
|
||||||
|
|
||||||
# echo "#!/usr/bin/env xdg-open" > "$fileDesktop"
|
|
||||||
echo "[Desktop Entry]" >> "$fileDesktop"
|
|
||||||
echo "Name=$script" >> "$fileDesktop"
|
|
||||||
echo "Name[fr]=$script" >> "$fileDesktop"
|
|
||||||
echo "X-GNOME-FullName=$script" >> "$fileDesktop"
|
|
||||||
echo "X-GNOME-FullName[fr]=$script" >> "$fileDesktop"
|
|
||||||
echo "StartupWMClass=$script" >> "$fileDesktop"
|
|
||||||
# echo "Exec=/usr/bin/$script" >> "$fileDesktop"
|
|
||||||
# echo Exec=$HOME/kyopages/scripts/"$script" >> "$fileDesktop"
|
|
||||||
echo "Exec=$HOME/.local/bin/$script" >> "$fileDesktop"
|
|
||||||
echo "Icon=preferences-system" >> "$fileDesktop"
|
|
||||||
echo "Comment=System infos and pastebin with markdown format" >> "$fileDesktop"
|
|
||||||
echo "Comment[fr]=Infos système et pastebin au format markdown" >> "$fileDesktop"
|
|
||||||
echo "GenericName=System infos" >> "$fileDesktop"
|
|
||||||
echo "GenericName[fr]=Système infos" >> "$fileDesktop"
|
|
||||||
echo "Terminal=false" >> "$fileDesktop"
|
|
||||||
echo "X-MultipleArgs=false" >> "$fileDesktop"
|
|
||||||
echo "Type=Application" >> "$fileDesktop"
|
|
||||||
echo "Categories=System;" >> "$fileDesktop"
|
|
||||||
echo "StartupNotify=true" >> "$fileDesktop"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#fileDesktop=$HOME/.local/share/applications/"$script".desktop # +x pas obligatoire pour DE
|
|
||||||
#chmod -x $fileDesktop
|
|
||||||
|
|
||||||
#cp ~/kyopages/scripts/"$script" $HOME/.local/bin/"$script"
|
|
||||||
#chmod +x $HOME/.local/bin/"$script"
|
|
||||||
|
|
||||||
scrpt_lanceur_desktop
|
|
||||||
|
|
||||||
#fg_help
|
|
||||||
|
|
||||||
exit
|
|
||||||
|
|
||||||
f_g_info raw "Certaines$GREEN boîtes de dialogue</span> Zenity permettent l'utilisation de touches d'accès." \
|
|
||||||
"Pour indiquer la lettre à utiliser comme$RED touche d'accès</span>, placez un souligné _" \
|
|
||||||
"avant cette lettre dans le texte de la boîte de dialogue."
|
|
||||||
f_g_info "FIN"
|
|
||||||
f_g_error "Certaines$RED boîtes de dialogue</span> de Zenity permettent l'utilisation de touches d'accès." \
|
|
||||||
"Pour indiquer la lettre à utiliser comme$GREEN touche d'accès</span>, placez un souligné _" \
|
|
||||||
"avant cette lettre dans le texte de la boîte de dialogue."
|
|
||||||
if f_g_dialog_oui_non "non" "continuer?"; then
|
|
||||||
f_g_info "raw" "réponse oui,$GREEN script</span>"
|
|
||||||
else
|
|
||||||
f_g_info "raw" "réponse non,$GREEN sortie</span>"
|
|
||||||
exit
|
|
||||||
fi;
|
|
||||||
|
|
||||||
|
|
||||||
echo "Script:$script"
|
|
||||||
|
|
||||||
systemd-path | less
|
|
||||||
|
|
||||||
ps -p1 | grep systemd && userBinaires=$(systemd-path user-binaries) || userBinaires=$($HOME/.local/bin)
|
|
||||||
cat /etc/profile.d/debian-mate-default-settings_gtk-accessibility.sh
|
|
||||||
echo "# Set path to MYSTUFF folder if it exists." >> /etc/profile.d/mystuff.sh
|
|
||||||
echo "# Added /usr/local/mystuff folder for myprogram." >> /etc/profile.d/mystuff.sh
|
|
||||||
echo "[ -d /usr/local/mystuff ] && PATH=$PATH:/usr/local/mystuff" >> /etc/profile.d/mystuff.sh
|
|
||||||
|
|
||||||
man file-hierarchy
|
|
||||||
~/.local/bin
|
|
||||||
Executables that shall appear in the user s $PATH search path. It is recommended not to place executables in this directory that are not useful
|
|
||||||
for invocation from a shell; these should be placed in a subdirectory of ~/.local/lib instead. Care should be taken when placing
|
|
||||||
architecture-dependent binaries in this place, which might be problematic if the home directory is shared between multiple hosts with different
|
|
||||||
architectures.
|
|
||||||
|
|
||||||
initial(){
|
|
||||||
if [ "$1" == "oui" ]; then
|
|
||||||
if [[ ! ${reply,,} =~ ^no?n?$ ]]; then return 0; else return 1; fi #*{,,} lowercase
|
|
||||||
elif [ "$1" == "non" ]; then
|
|
||||||
if [[ ! ${reply,,} =~ ^ou?i?$ ]]; then return 0; else return 1; fi
|
|
||||||
fi
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# $1=cmd si $2: nb de tentatives pour s'identifier, sinon 1 tentative par défaut
|
|
||||||
f__sudo(){ # 11/10/2017
|
|
||||||
local nb=1 sudo isudo
|
|
||||||
# sudo --shell bash équivalent su ?
|
|
||||||
if sudo -v &>/dev/null && [ $EUID -ne 0 ] ; then
|
|
||||||
sudo="sudo su --shell $(which bash) --preserve-environment -c "
|
|
||||||
else
|
|
||||||
sudo="su --shell $(which bash) --preserve-environment -c "
|
|
||||||
fi
|
|
||||||
[ "$2" ] && nb="$2"
|
|
||||||
for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do
|
|
||||||
$sudo " $1"
|
|
||||||
[ "$?" == 0 ] && break
|
|
||||||
[ "$isudo" == "$nb" ] && return 1
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
file="/tmp/$$/random/dmesgx"
|
|
||||||
f__sudo "dmesg -l err; \
|
|
||||||
dmesg -l crit; \
|
|
||||||
echo $file"
|
|
||||||
|
|
||||||
echo $?
|
|
||||||
echo $$
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
tester:
|
|
||||||
sudo -i eq su -
|
|
||||||
-> /root
|
|
||||||
|
|
||||||
et sudo -sudo -s eq su
|
|
||||||
-> ./ pas de changement de répertoire courant
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#f__sudo "echo je suis $(whoami)"3
|
|
||||||
|
|
||||||
if ! dmesg --nopager &> /dev/null; then
|
|
||||||
echo "la commande \`dmesg\` n'est pas disponible (droits root requis?)"
|
|
||||||
else
|
|
||||||
echo "all is ok"
|
|
||||||
fi
|
|
||||||
|
|
|
@ -1,101 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
version=24/09/2017
|
|
||||||
|
|
||||||
# user ayant initié la session graphique, assigne $user_
|
|
||||||
# return 1 sur échec identification user, return 2 sur absence home/
|
|
||||||
# gestion variable environnement user avec: USER_INSTALL=user script
|
|
||||||
f__user(){ # 24/09/2017
|
|
||||||
if [ "$USER_INSTALL" ]; then # user_ via variable environnement, moyen d'injecter root
|
|
||||||
user_="$USER_INSTALL";
|
|
||||||
sortie="variable environnement USER_INSTALL"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
local user_id test root_login
|
|
||||||
root_login="$(grep ':0:' /etc/passwd | cut -d':' -f1)" || root_login="root"
|
|
||||||
if [ "$SUDO_UID" ]; then
|
|
||||||
user_id="$SUDO_UID";
|
|
||||||
elif grep -qEo '[0-9]+' <<< "$XDG_RUNTIME_DIR" ; then
|
|
||||||
user_id="$(grep -Eo '[0-9]+' <<< $XDG_RUNTIME_DIR | cut -d'/' -f4)"
|
|
||||||
elif grep -qEo '[0-9]+' <<< "$XAUTHORITY" ; then
|
|
||||||
user_id="$(grep -Eo '[0-9]+' <<< $XAUTHORITY | cut -d'/' -f4)"
|
|
||||||
fi
|
|
||||||
[ "$user_id" ] && user_="$(grep $user_id /etc/passwd | cut -d ":" -f 1 )"
|
|
||||||
if [ "$user_" ] && [ "$user_" != "$root_login" ]; then
|
|
||||||
sortie="sortie user_id"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
if [ "$SUDO_USER" ] && [ "$SUDO_USER" != "$root_login" ]; then
|
|
||||||
user_="$SUDO_USER";
|
|
||||||
elif grep -qv 'root' <<< "$(who)"; then
|
|
||||||
user_="$(grep -v 'root' <<< $(who) | head -n1 | cut -d ' ' -f1)";
|
|
||||||
elif grep -q 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab; then
|
|
||||||
user_="$(grep 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab | head -n1 | cut -d' ' -f2)";
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
sortie="sortie user final"
|
|
||||||
if [ -z "$user_" ]; then return 1; fi
|
|
||||||
if [ ! -d "/home/$user_" ]; then return 2; fi
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
f__type(){
|
|
||||||
if [ "$SSH_TTY" ]; then
|
|
||||||
type="ssh"
|
|
||||||
elif [ "$SUDO_UID" ]; then
|
|
||||||
type="sudo"
|
|
||||||
elif [ "$XDG_CURRENT_DESKTOP" ]; then
|
|
||||||
type="${XDG_CURRENT_DESKTOP,,}"
|
|
||||||
fi
|
|
||||||
# type+="$(tty -s && echo 'terminal' || echo $(LC_ALL=C tty))"
|
|
||||||
if [[ "$TERM" =~ linux ]]; then #debian 9 recovery ou nomodeset TERM=linux
|
|
||||||
echo "$TERM"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
echo -e "\ndétection user ayant acquit les droits root\n"
|
|
||||||
[ $EUID -eq 0 ] || echo -e "merci tester aussi le script en ROOT\n"
|
|
||||||
|
|
||||||
f__user && retourFUser=0 || retourFUser="$?"
|
|
||||||
[ "$retourFUser" -gt 0 ] && echo "houla :("
|
|
||||||
[ "$retourFUser" -eq 1 ] && echo -e "user indéterminé, pour contourner, lancer le script avec:\n USER_INSTALL=user $0 \n"
|
|
||||||
[ "$retourFUser" -eq 2 ] && echo -e "user détecté, mais pas de home: /home/$user_"
|
|
||||||
|
|
||||||
echo -e "\tuser détecté: $user_"
|
|
||||||
echo -e "\tsortie: $sortie"
|
|
||||||
echo -e "\tEUID: $EUID"
|
|
||||||
f__type
|
|
||||||
echo -e "\ttype: $type\n"
|
|
||||||
|
|
||||||
f__user_debug(){ # v20/08/2017-4
|
|
||||||
|
|
||||||
local user_id
|
|
||||||
|
|
||||||
debug+="user_id01:$SUDO_UID (SUDO_UID) \n";
|
|
||||||
debug+="user_id02:$(grep -Eo '[0-9]+' <<< $XDG_RUNTIME_DIR | cut -d'/' -f4) (XDG_RUNTIME_DIR) \n"
|
|
||||||
debug+="user_id03:$(grep -Eo '[0-9]+' <<< $XAUTHORITY | cut -d'/' -f4) (XAUTHORITY) \n\n"
|
|
||||||
if [ "$SUDO_UID" ]; then
|
|
||||||
user_id="$SUDO_UID"
|
|
||||||
elif [ "$(grep -Eo '[0-9]+' <<< $XDG_RUNTIME_DIR | cut -d'/' -f4)" ];then
|
|
||||||
user_id="$(grep -Eo '[0-9]+' <<< $XDG_RUNTIME_DIR | cut -d'/' -f4)"
|
|
||||||
elif [ "$(grep -Eo '[0-9]+' <<< $XAUTHORITY | cut -d'/' -f4)" ];then
|
|
||||||
user_id="$(grep -Eo '[0-9]+' <<< $XAUTHORITY | cut -d'/' -f4) (XAUTHORITY)"
|
|
||||||
fi
|
|
||||||
debug+="user00:$USER_INSTALL (USER_INSTALL) \n";
|
|
||||||
debug+="user01:$(grep $user_id /etc/passwd | cut -d ":" -f 1 ) (user_id) \n"
|
|
||||||
debug+="user02:$SUDO_USER (SUDO_USER) \n"
|
|
||||||
debug+="user03:$(grep -v 'root' <<< $(who) | head -n1 | cut -d ' ' -f1) (who) \n"
|
|
||||||
debug+="user04:$(grep 'hourly.*get[A-Z].*\.anacrontab.*\.config/anacron/spool' /etc/crontab | head -n1 | cut -d' ' -f2) (anacrontab) \n"
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
f__user_debug
|
|
||||||
|
|
||||||
echo -e "\tdebug:"
|
|
||||||
echo -e "$debug"
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
# test crontab
|
|
||||||
#*/5 * * * * kyodev /home/<user>/test_user > /home/<user>/cronTestuserUser
|
|
||||||
#*/5 * * * * root /home/<user>/test_user > /home/<user>/cronTestuserUser
|
|
||||||
|
|
Loading…
Reference in New Issue