Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Hallo,
ist es möglich und normal das man den Bootloader der die Kernelbefehlzseile an den Kernel gibt einfach abblockt und durch eine eigene ersetzt die aus dem Kernel selber stammt?
Kann man eigentlich alle Einstellungen wie partitionieren eines Flash Chips durch einen Bootloader, wieder rückgängig machen und somit erreichen das man einen Bootloader nicht zurückentwickeln muss?
Danke.
Joe
ist es möglich und normal das man den Bootloader der die Kernelbefehlzseile an den Kernel gibt einfach abblockt und durch eine eigene ersetzt die aus dem Kernel selber stammt?
Kann man eigentlich alle Einstellungen wie partitionieren eines Flash Chips durch einen Bootloader, wieder rückgängig machen und somit erreichen das man einen Bootloader nicht zurückentwickeln muss?
Danke.
Joe
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
hi,
die Grundlage ist CONFIG_CMDLINE_BOOL (am Ende von "Processor type and features"):
die Grundlage ist CONFIG_CMDLINE_BOOL (am Ende von "Processor type and features"):
und als Sahnehäubchen gibt es CONFIG_CMDLINE_OVERRIDE:Allow for specifying boot arguments to the kernel at build time. On some systems (e.g. embedded ones), it is necessary or convenient to provide some or all of the kernel boot arguments with the kernel itself (that is, to not rely on the boot loader to provide them.)
To compile command line arguments into the kernel, set this option to 'Y', then fill in the boot arguments in CONFIG_CMDLINE.
Set this option to 'Y' to have the kernel ignore the boot loader command line, and use ONLY the built-in command line.
This is used to work around broken boot loaders.
Beware of programmers who carry screwdrivers.
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Super geil!
Ich lasse den closed source (GPL) Bootloader erst machen und der Kernel macht direkt sein eigenes Ding! Das ist richtig
Werde dann sehen ob die mtdblock Partitionen, die ja nur definierte auf Hardwareadressen Rahmen sind mit in dem Kernel rein kompilieren kann.
Jetzt muss ich nurnoch schaffen von dem Kernel aus irgendwie in das Android OS rein zu bekommen. Dann wird es so richtig toll den kernel das Tablet so nettenSachen wie Swap zukommen zu lassen.
Danke deine Antwort hat mir Motivation gegeben.
Ich lasse den closed source (GPL) Bootloader erst machen und der Kernel macht direkt sein eigenes Ding! Das ist richtig
Werde dann sehen ob die mtdblock Partitionen, die ja nur definierte auf Hardwareadressen Rahmen sind mit in dem Kernel rein kompilieren kann.
Jetzt muss ich nurnoch schaffen von dem Kernel aus irgendwie in das Android OS rein zu bekommen. Dann wird es so richtig toll den kernel das Tablet so nettenSachen wie Swap zukommen zu lassen.
Danke deine Antwort hat mir Motivation gegeben.
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Vielleicht bin ich auf dem Holzweg, aber vielleicht kannst du auch kexec-tools gebrauchen.
Beware of programmers who carry screwdrivers.
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Hallo,
in meiner Kernel Konfig gibt es nur: CONFIG_CMDLINE="" und da habe ich die Befehlszeile mit 1,5 GHz anstatt 800 MHz rein gepackt: CONFIG_CMDLINE="init=/init console=ttyS0,115200n8 hlt no_console_suspend vmalloc=256m mem=1024m logo=osd1,loaded,panel,debug hdmitx=vdacoff,powermode1,unplug_powerdown a9_clk_max=1512000000"
Aber irgendwie lässt sich der Cortex A9 davon nicht beeindrucken und taktet weiterhin nur mit 800 MHz. Es gibt in meiner Kernel Config keine weitere cmd Optionen...
hat jemand eine Idee?
MfG,
Johannes
in meiner Kernel Konfig gibt es nur: CONFIG_CMDLINE="" und da habe ich die Befehlszeile mit 1,5 GHz anstatt 800 MHz rein gepackt: CONFIG_CMDLINE="init=/init console=ttyS0,115200n8 hlt no_console_suspend vmalloc=256m mem=1024m logo=osd1,loaded,panel,debug hdmitx=vdacoff,powermode1,unplug_powerdown a9_clk_max=1512000000"
Aber irgendwie lässt sich der Cortex A9 davon nicht beeindrucken und taktet weiterhin nur mit 800 MHz. Es gibt in meiner Kernel Config keine weitere cmd Optionen...
hat jemand eine Idee?
MfG,
Johannes
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
gefunden google hat geschrieben: On old kernel: a9_clk_max=1512000000 on new: a9_clk_max=1320000000
Code: Alles auswählen
grep . /sys/devices/system/cpu/cpu*/cpufreq/*
Und dann wie gewöhnlich auf den governor einwirken?
-----------------------------------------------------------------
a9_clk_max
findet sich nicht im linux-source (4.14), oder
https://www.kernel.org/doc/Documentatio ... meters.txt
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Stammt die Zeile aus einem extrahierten Android-Image?Joe58 hat geschrieben:26.05.2018 11:27:33Hallo,
in meiner Kernel Konfig gibt es nur: CONFIG_CMDLINE="" und da habe ich die Befehlszeile mit 1,5 GHz anstatt 800 MHz rein gepackt: CONFIG_CMDLINE="init=/init console=ttyS0,115200n8 hlt no_console_suspend vmalloc=256m mem=1024m logo=osd1,loaded,panel,debug hdmitx=vdacoff,powermode1,unplug_powerdown a9_clk_max=1512000000"
Aber irgendwie lässt sich der Cortex A9 davon nicht beeindrucken und taktet weiterhin nur mit 800 MHz. Es gibt in meiner Kernel Config keine weitere cmd Optionen...
hat jemand eine Idee?
MfG,
Johannes
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Nee diese kommt aus dem Bootloader, aber dort ist die Befehlszeile in mehrere Strings unterterilt a9= steht halt für sich. Ich habe die Takt Frequenz genau so übernommen wie die dort im Bootloader Binary zu sehen ist.
Mein U-Boot Bootloader stellt diese wie oben genannte Befehlszeile bereit.
Was mich richtig wundert, das die Kernel Befehlszeile garnicht aktivierbar ist. CMDLINE=y gibt halt nur den string und keine Option um den zu aktivieren.
Mein U-Boot Bootloader stellt diese wie oben genannte Befehlszeile bereit.
Was mich richtig wundert, das die Kernel Befehlszeile garnicht aktivierbar ist. CMDLINE=y gibt halt nur den string und keine Option um den zu aktivieren.
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Hallo,
ich habe einen 3.0.8 er Kernel und in der Kernelkonfigurationsdatei folgendes beigefügt:
Aber leider kommt keine der Kernel Befehlszeile Stings in dem Hexeditor vor.
Wie bekomme ich die Kernel Befehlszeile in das Kernel Image bei 3.0.8?
Vielen Dank,
Johannes
ich habe einen 3.0.8 er Kernel und in der Kernelkonfigurationsdatei folgendes beigefügt:
Code: Alles auswählen
CONFIG_CMDLINE="init=/init console=ttyS0,115200n8 hlt no_console_suspend vmalloc=256m mem=1024m logo=osd1,loaded,panel,debug hdmitx=vdacoff,powermode1,unplug_powerdown a9_clk_max=1512000000"
Wie bekomme ich die Kernel Befehlszeile in das Kernel Image bei 3.0.8?
Vielen Dank,
Johannes
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Ich habe wie hier auf dem Bild alle Optionen an: https://www.dropbox.com/s/pwm0wragvvf03 ... e.png?dl=0
Das Ding ist, dass die Kernelkonfigurationsdatei standardmäßig nur die CONFIG_CMDLINE="meine kernel kommandline" kennt.
Das heißt CMDLINE_BOOL=y hat für den Kernel keinerlei Bedeutung. Die war auch vorher nicht in der Kernelkonfig wie z.B. CONFIG_SWAP is not set
Genau das gleiche mit CMDLINE_OVERRIDE=y die gab es auch nicht, habe ich hinzugefügt, aber die bewirkt nichts.
Die Befehlszeile ist zwar als String in das Image, wird aber nicht verwandt.
Ich hoffe das ist jetzt verständlich von mir erklärt.
Das Ding ist, dass die Kernelkonfigurationsdatei standardmäßig nur die CONFIG_CMDLINE="meine kernel kommandline" kennt.
Das heißt CMDLINE_BOOL=y hat für den Kernel keinerlei Bedeutung. Die war auch vorher nicht in der Kernelkonfig wie z.B. CONFIG_SWAP is not set
Genau das gleiche mit CMDLINE_OVERRIDE=y die gab es auch nicht, habe ich hinzugefügt, aber die bewirkt nichts.
Die Befehlszeile ist zwar als String in das Image, wird aber nicht verwandt.
Ich hoffe das ist jetzt verständlich von mir erklärt.
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Normalerweise besteht das erstellte vmlinuz-* aus komprimiertem Inhalt.Joe58 hat geschrieben: Aber leider kommt keine der Kernel Befehlszeile Stings in dem Hexeditor vor.
Ein direktes 'grep' kannst Du auf das unkomprimierte vmlinux ausführen.
Ein einfaches Dekomprimieren des vmlinuz-* ist nicht möglich,
bislang klappt bei mir sowas
Code: Alles auswählen
...
gcc_export() {
KERNEL=/boot/vmlinuz-"$KERNEL_VERSION"
POSGZ=$(xxd -c1 -l $((0x8000)) "$KERNEL" | grep -A3 ": 1f " | grep -B1 -A2 ": 8b " | grep -B2 -A1 ": 08 " | grep -B3 ": 00 " | awk '$2=="1f" {print $1}')
POSXZ=$(xxd -c1 -l $((0x8000)) "$KERNEL" | grep -A3 ": fd " | grep -B1 -A2 ": 37 " | grep -B2 -A1 ": 7a " | grep -B3 ": 58 " | awk '$2=="fd" {print $1}')
# soweit scheint nur eins davon ungleich non-zero
[ "x$POSGZ" != "x" -a "z$POSXZ" = "z" ] && { POS="$POSGZ"; unzipper=gunzip; }
[ "z$POSXZ" != "z" -a "x$POSGZ" = "x" ] && { POS="$POSXZ"; unzipper=unxz; }
POS=${POS%:}
KERNEL_CC_VERSION=$(dd if="$KERNEL" bs=$((0x$POS)) skip=1 2>/dev/null | $unzipper -c 2>/dev/null | strings | egrep -m1 -o "gcc version ..." | cut -d" " -f3)
export KERNEL_CC="gcc-$KERNEL_CC_VERSION"
...
Weiterhin braucht es evtl. noch CONFIG_CMDLINE_OVERRIDE, damit NUR! die eingebaute cmdline zum Tragen kommt.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
@rendegast
Ja CONFIG_CMDLINE_OVERRIDE=y ist ebenfalls im Einsatz. Aber dennoch funktioniert es nicht.
Ich schaue nicht in vmlinuz nach, sondern in dem U-Boot Kernel Image, welches ich auspacke indem ich oben die 64 Bytes U-Boot Image Header ausschneide und dann das lzma Archiv unlzma, dann sehe ich alle Stings, weil das CPIO Archiv nach einer alten Methode verpackt ist wo man auch alle Stings sieht.
Ja die Befehlzeile befindet sich im Image, schreibe ich in der Kernel Konfigurationsdatei CONFIG_CMDLINE_OVERRIDE="Debian ist eine coole Linux/GNU Distribution", so steht genau der String im U-Boot Image.
Ich verstehe einfach nicht warum CONFIG_CMDLINE_BOOL=y und CONFIG_CMDLINE_OVERRIDE=y keinerlei Funktion zeigen. In einem 3.0.8er sind diese Funktionen doch schon verfügbar??
Das kann nicht sein... hier nochmal das Archiv: http://www.intenso.de/multimedia/treiber/1374477316.zip
Ich nutze die GPL_BOARD_defconfig /customer/yf_configs wie man sehen kann gibt es per Standard nicht CONFIG_CMDLINE_BOOL und CONFIG_CMDLINE_OVERRIDE. Weil beide nicht mit is not set in der Konfig Datei verfügbar sind.
?
Ja CONFIG_CMDLINE_OVERRIDE=y ist ebenfalls im Einsatz. Aber dennoch funktioniert es nicht.
Ich schaue nicht in vmlinuz nach, sondern in dem U-Boot Kernel Image, welches ich auspacke indem ich oben die 64 Bytes U-Boot Image Header ausschneide und dann das lzma Archiv unlzma, dann sehe ich alle Stings, weil das CPIO Archiv nach einer alten Methode verpackt ist wo man auch alle Stings sieht.
Ja die Befehlzeile befindet sich im Image, schreibe ich in der Kernel Konfigurationsdatei CONFIG_CMDLINE_OVERRIDE="Debian ist eine coole Linux/GNU Distribution", so steht genau der String im U-Boot Image.
Ich verstehe einfach nicht warum CONFIG_CMDLINE_BOOL=y und CONFIG_CMDLINE_OVERRIDE=y keinerlei Funktion zeigen. In einem 3.0.8er sind diese Funktionen doch schon verfügbar??
Das kann nicht sein... hier nochmal das Archiv: http://www.intenso.de/multimedia/treiber/1374477316.zip
Ich nutze die GPL_BOARD_defconfig /customer/yf_configs wie man sehen kann gibt es per Standard nicht CONFIG_CMDLINE_BOOL und CONFIG_CMDLINE_OVERRIDE. Weil beide nicht mit is not set in der Konfig Datei verfügbar sind.
?
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Meine Güte schwierige Geburt.
Also grep CMDLINE gemacht und die .config stach mir ins Auge. Das die .config Datei mehr Konfigurationsvielfalt als das Muster GPL_BOARD_defconfig hätte ich nie gedacht!
Die Optionen waren nur in der .config und nichtmal in meiner GPL_BOARD_defconfig Konfigurationsdatei verfügbar:
Hey mein Tablet ist frisiert mit einem custom Kernel!!!! Ihr seid so geil das ihr mir helft. Danke!! Ohne eure Hilfsbereitschaft hätte ich schonlängst den Kopf in den Sand versteckt. )
Also grep CMDLINE gemacht und die .config stach mir ins Auge. Das die .config Datei mehr Konfigurationsvielfalt als das Muster GPL_BOARD_defconfig hätte ich nie gedacht!
Code: Alles auswählen
0.000000@0] Ignoring tag cmdline (using the default kernel command line)
Code: Alles auswählen
Kernel command line type
> 1. Use bootloader kernel arguments if available (CMDLINE_FROM_BOOTLOADER)
2. Extend bootloader kernel arguments (CMDLINE_EXTEND)
3. Always use the default kernel command string (CMDLINE_FORCE) (NEW)
choice[1-3]: 3
Hey mein Tablet ist frisiert mit einem custom Kernel!!!! Ihr seid so geil das ihr mir helft. Danke!! Ohne eure Hilfsbereitschaft hätte ich schonlängst den Kopf in den Sand versteckt. )
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Aua, viel zu spät.
------------------------------------------------------------------------------
Dieses Archiv ist ein ungemein verpatchter 3.0.8.
Nach einem 'ARCH=arm make GPL_BOARD_defconfig',
*CMDLINE* gibt es nur in arch/arm/Kconfig:
CMDLINE_EXTEND [=n]
CMDLINE_FORCE [=n]
CMDLINE [=]
CMDLINE_FROM_BOOTLOADER [=n] (=y ist default)
Kein
CMDLINE_BOOL
CMDLINE_OVERRIDE
somit können diese auch nichts bewirken.
Passabel wäre
CMDLINE="........"
CMDLINE_FORCE=y
Zu setzen zBsp. per 'ARCH=arm make menuconfig'.
Die beiden anderen Optionen werden dann zu "is not set", Bsp.: Ob es mit CMDLINE_EXTEND funktioniert hängt davon ab, wie die Optionen ausgewertet werden.
---------------------------------------------
Hier unter einem stretch mit crossbuild-essential-armel kann ich bei einem Kernel 4.x machen
ARCH=arm make [........._]defconfig',
ARCH=arm make
Bei dem Archiv oder einem vanilla 3.0.8 klappt nur das config, das Kompilieren hängt an einer fehlenden compiler-gcc6.h.
------------------------------------------------------------------------------
Dieses Archiv ist ein ungemein verpatchter 3.0.8.
Nach einem 'ARCH=arm make GPL_BOARD_defconfig',
*CMDLINE* gibt es nur in arch/arm/Kconfig:
CMDLINE_EXTEND [=n]
CMDLINE_FORCE [=n]
CMDLINE [=]
CMDLINE_FROM_BOOTLOADER [=n] (=y ist default)
Kein
CMDLINE_BOOL
CMDLINE_OVERRIDE
somit können diese auch nichts bewirken.
Passabel wäre
CMDLINE="........"
CMDLINE_FORCE=y
Zu setzen zBsp. per 'ARCH=arm make menuconfig'.
Die beiden anderen Optionen werden dann zu "is not set", Bsp.:
Code: Alles auswählen
$ grep CMDLINE .config
CONFIG_CMDLINE="init=/blafoo abcde"
# CONFIG_CMDLINE_FROM_BOOTLOADER is not set
# CONFIG_CMDLINE_EXTEND is not set
CONFIG_CMDLINE_FORCE=y
# CONFIG_MTD_CMDLINE_PARTS is not set
---------------------------------------------
Hier unter einem stretch mit crossbuild-essential-armel kann ich bei einem Kernel 4.x machen
ARCH=arm make [........._]defconfig',
ARCH=arm make
Bei dem Archiv oder einem vanilla 3.0.8 klappt nur das config, das Kompilieren hängt an einer fehlenden compiler-gcc6.h.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Kernelseitige -Befehlszeile? Weniger vom Bootloader?
Okay der Kernel ist also ungünstig. Gut das wir das gelöst bekommen haben. Nebenbei ich habe diese Kconfig Dateien natürlich des öfteren gesehen, aber dessen Zweck habe ich nie hinterfragt.
Momentan habe ich nur noch (endlich bin ich soweit) Probleme mit der Kamera. Diese zeigt nur grün an trotz des richtigen Treibers. Aber da eröffnet ich dann ein neues Thema und hoffe das Beste.
MfG,
Johannes
Momentan habe ich nur noch (endlich bin ich soweit) Probleme mit der Kamera. Diese zeigt nur grün an trotz des richtigen Treibers. Aber da eröffnet ich dann ein neues Thema und hoffe das Beste.
MfG,
Johannes