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
|
||||
|
||||
|
|
|
@ -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