Kernel Compilieren Fragen

N

N3cron

Fortgeschrittenes Mitglied
1
Hallo zusammen. Kennt sich jemand mit dem erstellen eines Kernel aus?
Ich hätte folgende Fragen
Wenn ich die Sourcen habe, und das compilieren funktioniert hat

wie kann ich mir eine config erstellen und veränderungen vornehmen ohne das diese überschrieben werden?
Wenn ich das richtig gesehen habe, kann man die config datei bearbeiten oder das ganze via MenuConfig befehl
Wie gehe ich am besten vor?

Wenn alles erstellt ist. Wie erstelle ich eine x.zip mit Ramdisk, UpdaterScript usw

Ich hoffe es kennt sich jemand damit aus und kann es mir beibringen. Verständnis ist schon einiges vorhanden, nur probleme bei der umsetzung

Kernel compilieren war erfolgreich. Vorhandene zip geöffnet und mit meiner zImage ausgetauscht . Kernel bootet

Danke für Hilfe
 
du kannst dir z.b. eine eigene config in arch/Architektur/config/ anlegen (z.b. arch/arm64/config/meine_config und dann diese mit make meine_config verwenden. Änderungen würde ich mit menuconfig machen

update_zip:
entweder du nimmst sowas GitHub - osm0sis/AnyKernel2: AnyKernel, Evolved (oder erstellst dir sowas)
oder du erstellst alternativ ein boot image (entweder falls du den source code von einer "rom" z.b. aosp drauf hast mit make bootimage oder du nimmst einfach z.b. das vom hersteller, entpackst es und packst es mit deinem zImage und ggf. änderungen an der ramdisk neu)
 
Das mit der config erstellen ist verstanden. Probiere ich am Wochenende mal aus.
Zur updater.zip. Kannst du mir das genauer erklären? Ich habe mal den boeffla kernel genommen, dort die zimage gegen meine ausgetauscht umd es funktionierte. Das selbe hatte ich mal mit dem anykernel 2 ausprobiert, aber es hat nicht gebootet. Denke man muss da noch sachen anpassen, oder wird es automatisch an die richtige stelle gesetzt.
Die sourcen hätte ich auch zur hand, und habe auch mal ein bootimage erstellt, allerdings wusste ich danach auch nicht weiter.

Verstehe das mit ramdisk bootimage usw nicht ganz. Möchte so wie bekannte kernel zb boeffla das ganze als zip haben umd es über twrp flashen zu können.
Vielleicht kannst du mir ja mal deine Vorgehensweise schildern.

Danke für deine Hilfe.
 
schau dir evtl. die zip mal aus dem anhang an, das ist imo weniger kompliziert (sorry ich hab den link vorher nur überflogen)

update-script:
ui_print("");
ui_print("");
ui_print("");
set_progress(1.000000);
mount("ext4", "EMMC", "/dev/block/mmcblk0p21", "/system"); <-- Pfad anpassen!
delete_recursive("/system/lib/modules"); <----- unnötig wenn keine module
package_extract_dir("modules", "/system/lib/modules"); <----- unnötig wenn keine module
package_extract_dir("kernel", "/tmp"); <----- hier der ganze käse aus dem kernel verzeichis nach /tmp
set_perm(0, 0, 0777, "/tmp/mkbootimg.sh");
set_perm(0, 0, 0777, "/tmp/compatibility.sh");
set_perm(0, 0, 0777, "/tmp/mkbootimg");
set_perm(0, 0, 0777, "/tmp/unpackbootimg");
set_perm(0, 0, 0777, "/tmp/busybox"); <----- berechtigungen für skipte und binarys setzen
set_perm(0, 0, 0755, "/system/lib/modules"); <----- unnötig wenn keine module
set_perm_recursive(0, 0, 0755, 0644, "/system/lib/modules"); <----- unnötig wenn keine module
run_program("/tmp/compatibility.sh"); <----- nicht zwingend nötig, benennt eine binary in den orginalen namen um (war damals so ein nexus4 ding), aber ggf. nützlich
run_program("/tmp/busybox", "dd", "if=/dev/block/mmcblk0p6", "of=/tmp/boot.img"); <----- boot.img nach /tmp kopieren (PFAD muss für jeweilige gerät passen!)
run_program("/tmp/unpackbootimg", "-i", "/tmp/boot.img", "-o", "/tmp/"); <--- boot.img in /tmp entpacken
run_program("/tmp/mkbootimg.sh"); <-- boot image neu erstellen (zImage lag im kernel verzeichnis
run_program("/tmp/busybox", "dd", "if=/tmp/newboot.img", "of=/dev/block/mmcblk0p6"); <-- neu erstelltes boot image flashen (! PFAD muss passen sonst wird auf blöd eine wichtige partition überschrieben ! )
unmount("/system");
ui_print("");
ui_print("Done...Reboot");


mkbootimg.sh:
(so nicht zwingend nötig und eigentlich doppelt gemoppelt, aber ich hab das seit ewig zeiten nicht mehr geändert, könnte man ggf. noch benutzen um in der ramdisk etwas zu ändern)

#!/sbin/sh
echo \#!/sbin/sh > /tmp/createnewboot.sh <--- erstellt ein neues skript welches das boot.img erstellt
echo /tmp/mkbootimg --kernel /tmp/zImage --ramdisk /tmp/boot.img-ramdisk.gz --cmdline \"$(cat /tmp/boot.img-cmdline)\" --base 0x$(cat /tmp/boot.img-base) --pagesize 2048 --ramdiskaddr 0x81800000 --output /tmp/newboot.img >> /tmp/createnewboot.sh <--- hier die werte anpassen (pagesize könnte die gleiche sein, ramdiskaddr ist ziemlich sicher eine andere
chmod 777 /tmp/createnewboot.sh <-- datei ausführbar machen
/tmp/createnewboot.sh <-- skript ausführen welches das boot.img erzeugt
return $?

(also das createnewboot.sh könntest du eigentlch sparen und gleich hier das neue image erzeugen)

Oder du sparst dir den ganzen käse und erzeugst einfach ein boot.img welches du dann wie oben z.b. mit dd kopierst

das ganze ist wiegesagt schon ein paar jahre alt, verrichtet aber immer noch seinen dienst
 

Anhänge

  • kernel-example.zip
    4,9 MB · Aufrufe: 133
getprop("ro.build.product") == "OnePlus2" ||
getprop("ro.product.device") == "oneplus2" ||
getprop("ro.build.product") == "oneplus2" ||
abort("This package is for device: OnePlus2 oneplus2 ; this device is " + getprop("ro.product.device") + "."););
ui_print("Flashing Boeffla-Kernel 1.1-beta13-OOS2xx-OnePlus2");
package_extract_file("boot.img", "/dev/block/bootdevice/by-name/boot");
mount("ext4", "EMMC", "/dev/block/bootdevice/by-name/system", "/system");
delete_recursive("/system/lib/modules");
package_extract_dir("system/lib/modules", "/system/lib/modules");
unmount("/system");

was komplett anders aussieht. Ausser das modules verzeichnis, ist das package extract und mount ja verschieden.
Habe aber "mmcblk0p1 - mmcblk0p43". Woher soll ich wissen was zu nehmen ist. Warum nimmt boeffla da nichts von. Er erstellt ein Vezeichnis by-name wo alles drin ist. Man kann es doch nicht einfach hinschmeissen wo man will. Also da komme ich bisher nicht so ganz mit

Trotzdem schon einmal vielen Dank für deine mühe
 
"was komplett anders aussieht. Ausser das modules verzeichnis, ist das package extract und mount ja verschieden,... Warum nimmt boeffla da nichts von"
jeder wie er lustig ist

" Er erstellt ein Vezeichnis by-name wo alles drin ist."
by-name ist normal von haus aus da

"Man kann es doch nicht einfach hinschmeissen wo man will"

Deshalb steht da oben überall (in bold) Pfad anpassen
du musst halt in der fstab oder ähliches schaun, oder du nimmst den entsprechenden symlink(*) aus by-name bzw. hast ja bereits den richtigen pfad


(*) "by-name" z.b.
mako:/dev/block/platform/msm_sdcc.1/by-name # pwd
pwd
/dev/block/platform/msm_sdcc.1/by-name
mako:/dev/block/platform/msm_sdcc.1/by-name # ls -l
ls -l
total 0
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 DDR -> /dev/block/mmcblk0p24
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 aboot -> /dev/block/mmcblk0p12
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 abootb -> /dev/block/mmcblk0p15
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 boot -> /dev/block/mmcblk0p6
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 cache -> /dev/block/mmcblk0p22
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 grow -> /dev/block/mmcblk0p25
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 m9kefs1 -> /dev/block/mmcblk0p8
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 m9kefs2 -> /dev/block/mmcblk0p9
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 m9kefs3 -> /dev/block/mmcblk0p10
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 metadata -> /dev/block/mmcblk0p18
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 misc -> /dev/block/mmcblk0p19
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 modem -> /dev/block/mmcblk0p1
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 persist -> /dev/block/mmcblk0p20
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 recovery -> /dev/block/mmcblk0p7
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 rpm -> /dev/block/mmcblk0p11
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 rpmb -> /dev/block/mmcblk0p16
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 sbl1 -> /dev/block/mmcblk0p2
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 sbl2 -> /dev/block/mmcblk0p3
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 sbl2b -> /dev/block/mmcblk0p13
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 sbl3 -> /dev/block/mmcblk0p4
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 sbl3b -> /dev/block/mmcblk0p14
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 system -> /dev/block/mmcblk0p21
lrwxrwxrwx 1 root root 20 2017-05-12 14:29 tz -> /dev/block/mmcblk0p5
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 tzb -> /dev/block/mmcblk0p17
lrwxrwxrwx 1 root root 21 2017-05-12 14:29 userdata -> /dev/block/mmcblk0p23
 
Danke. Werde mich die Tage mal davor setzen
 

Ähnliche Themen

M
  • Moonblast
Antworten
1
Aufrufe
1.128
swa00
swa00
C
Antworten
0
Aufrufe
1.214
Cortablo
C
F
Antworten
0
Aufrufe
1.255
Fr33l4nc3r
F
Zurück
Oben Unten