diff options
author | Jo-Philipp Wich <jo@mein.io> | 2016-06-01 16:26:36 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2016-06-06 15:18:11 +0200 |
commit | 699f7ecd156bd147aaee554ad648bd8689d9358c (patch) | |
tree | 608c2e0c1ea260da0cf26f2efdee6057a9634d97 | |
parent | b8b23e0e648405a0af7443b7d9412f47dd9a44d4 (diff) | |
download | upstream-699f7ecd156bd147aaee554ad648bd8689d9358c.tar.gz upstream-699f7ecd156bd147aaee554ad648bd8689d9358c.tar.bz2 upstream-699f7ecd156bd147aaee554ad648bd8689d9358c.zip |
x86: use sysfs DMI information to populate sysinfo
Use the DMI data available in sysfs to extract manufacturer and model info
and write it to /tmp/sysinfo/.
The data will be picked up by board_detect and can be used by e.g. LuCI to
display a more appropriate model description.
On an APU board the files will contain the following values:
# cat /tmp/sysinfo/model
PC Engines APU
# cat /tmp/sysinfo/board_name
pc-engines-apu
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r-- | target/linux/x86/base-files/lib/preinit/20_sysinfo | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/target/linux/x86/base-files/lib/preinit/20_sysinfo b/target/linux/x86/base-files/lib/preinit/20_sysinfo new file mode 100644 index 0000000000..cb63a04014 --- /dev/null +++ b/target/linux/x86/base-files/lib/preinit/20_sysinfo @@ -0,0 +1,28 @@ +do_sysinfo_x86() { + local vendor product file + + for file in sys_vendor board_vendor; do + vendor="$(cat /sys/devices/virtual/dmi/id/$file 2>/dev/null)" + [ -n "$vendor" ] && break + done + + for file in product_name board_name; do + product="$(cat /sys/devices/virtual/dmi/id/$file 2>/dev/null)" + [ -n "$product" ] && break + done + + [ -n "$vendor" -a -n "$product" ] || return + + mkdir -p /tmp/sysinfo + + echo "$vendor $product" > /tmp/sysinfo/model + + sed -e ' + y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/; + s/[^a-z0-9_-]\+/-/g; + s/^-//; + s/-$//; + ' /tmp/sysinfo/model > /tmp/sysinfo/board_name +} + +boot_hook_add preinit_main do_sysinfo_x86 |