From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from list by lists.gnu.org with archive (Exim 4.71) id 1aUHrS-0000mo-KC for mharc-grub-devel@gnu.org; Fri, 12 Feb 2016 12:50:30 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49381) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUHrQ-0000md-Jl for grub-devel@gnu.org; Fri, 12 Feb 2016 12:50:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aUHrP-00015K-GX for grub-devel@gnu.org; Fri, 12 Feb 2016 12:50:28 -0500 Received: from mail-wm0-x235.google.com ([2a00:1450:400c:c09::235]:38548) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUHrP-000150-5n for grub-devel@gnu.org; Fri, 12 Feb 2016 12:50:27 -0500 Received: by mail-wm0-x235.google.com with SMTP id p63so29307330wmp.1 for ; Fri, 12 Feb 2016 09:50:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-type; bh=MVfaQmNCD9Iug9Tj7vP1TqVjfA+zEqpWdiOZPaLjp+w=; b=p6yIv9Z27t6B+h5E51P8jj0EVrFHR570jcxX3xOC6/1x/97OTSY8ZOWLRqEUuxrAay NrXBRz4TqoRfafYwTRhidICZzXwpZX+lO6FyrCWKnDn/Y7Ge9mKcuF3czIWij7VbRtRE lfoqQa9ETJavqVPvj3OIIHinUsb1HRXli337szHhixCoE3zQhno6j7WjdC/cDyRI1oeQ 6nf5bErSrkJXlo4Ku77a1J/9B8mHqS2cwnvsaSxZRRJLqZaPJLVyIWXZLJ5MD3QEIafu 7HcfPjb0mJr8GDlRHuD38b9tJ29OCy6oz8FKLT6qEYW+d+fNAOjL+dMUHnKXqnJjKK/1 YWJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-type; bh=MVfaQmNCD9Iug9Tj7vP1TqVjfA+zEqpWdiOZPaLjp+w=; b=UyqwlSQjKp+diSEZW2R3QJcvzoSXMe0C+X/mJFzbERkh5fcfyIASDoAQIdHXpgnvWg qCLZwEAh1bz4xfR/i2pJDi6pHd+Ap2q+fxjSFg5EltHjSC553iAFsF2zGH+TW6UK76Et LIf7odQ+A+iAxJ43DelfpUbj+We33EDEtMk3NArt+y6Xs/7KwK1zlrMv2lZsASZq/1+b ArU1CB/p3u4KrmM+uCJl4y8OcdHBehm/E9/0r1cBcwi0SveNymohrpfKJLgvDQZCoMp1 WZMIU4yjwAPJE7dudA+sHd28lLRUTLU1achyJThvv3YlU4wDmQ9FUGr0qYr4rNRqVW2e vpog== X-Gm-Message-State: AG10YOSinVRLvjndW4uVmgQgvkYygSszUnB8BuvfeUWrzLULE8o+1jIuBoO4s8Le8Fpw/A== X-Received: by 10.28.68.86 with SMTP id r83mr5958361wma.73.1455299426472; Fri, 12 Feb 2016 09:50:26 -0800 (PST) Received: from ?IPv6:2620:0:105f:fd00:a2a8:cdff:fe64:b3b5? ([2620:0:105f:fd00:a2a8:cdff:fe64:b3b5]) by smtp.gmail.com with ESMTPSA id r62sm3354763wmd.15.2016.02.12.09.50.25 for (version=TLSv1/SSLv3 cipher=OTHER); Fri, 12 Feb 2016 09:50:25 -0800 (PST) Subject: Re: [PATCH v3 2/3] i386: Add support for loading from android bootimg To: grub-devel@gnu.org References: <1454964459-28213-1-git-send-email-shea@shealevy.com> <1454964459-28213-3-git-send-email-shea@shealevy.com> From: =?UTF-8?Q?Vladimir_'=cf=86-coder/phcoder'_Serbinenko?= X-Enigmail-Draft-Status: N1110 Message-ID: <56BE1B60.5060900@gmail.com> Date: Fri, 12 Feb 2016 18:50:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.5.0 MIME-Version: 1.0 In-Reply-To: <1454964459-28213-3-git-send-email-shea@shealevy.com> Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="arUqGOILqud2Au6kcmS8uqF107cMQgDGj" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2a00:1450:400c:c09::235 X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Feb 2016 17:50:29 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --arUqGOILqud2Au6kcmS8uqF107cMQgDGj Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 08.02.2016 21:47, Shea Levy wrote: > --- > grub-core/loader/i386/linux.c | 27 +++++++++++++++++++++------ > 1 file changed, 21 insertions(+), 6 deletions(-) >=20 > diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linu= x.c > index fddcc46..6ab8d3c 100644 > --- a/grub-core/loader/i386/linux.c > +++ b/grub-core/loader/i386/linux.c > @@ -35,6 +35,7 @@ > #include > #include > #include > +#include > =20 > GRUB_MOD_LICENSE ("GPLv3+"); > =20 > @@ -695,7 +696,13 @@ grub_cmd_linux (grub_command_t cmd __attribute__ (= (unused)), > goto fail; > } > =20 > - file =3D grub_file_open (argv[0]); > + char android_cmdline[BOOT_ARGS_SIZE]; > + android_cmdline[0] =3D '\0'; > + if (grub_memcmp (argv[0], "android_bootimg:", sizeof "android_bootim= g:" - 1) =3D=3D 0) > + grub_android_bootimg_load_kernel (argv[0] + sizeof "android_bootim= g:" - 1, > + &file, android_cmdline); > + else > + file =3D grub_file_open (argv[0]); I hoped more for autodetection. This gets a bit hairy and proper separation is better. Sorry for confusion. I think it's simpler with commands like android_bootimg [--no-cmdline] [--no-initrd] IMAGE [EXTRA_ARGUMENTS] by default it will load both IMAGE, with cmdline and initrd. With --no-initrd you can use initrd for custom initrd. > if (! file) > goto fail; > =20 > @@ -1008,12 +1015,20 @@ grub_cmd_linux (grub_command_t cmd __attribute_= _ ((unused)), > linux_cmdline =3D grub_zalloc (maximal_cmdline_size + 1); > if (!linux_cmdline) > goto fail; > - grub_memcpy (linux_cmdline, LINUX_IMAGE, sizeof (LINUX_IMAGE)); > + grub_size_t cmdline_offset =3D 0; > + if (android_cmdline[0]) > + { > + cmdline_offset =3D grub_strlen (android_cmdline) + 1; > + grub_memcpy (linux_cmdline, android_cmdline, cmdline_offset - 1)= ; > + linux_cmdline[cmdline_offset - 1] =3D ' '; > + } > + grub_memcpy (linux_cmdline + cmdline_offset, LINUX_IMAGE, sizeof (LI= NUX_IMAGE)); > + cmdline_offset +=3D sizeof LINUX_IMAGE - 1; LINUX_IMAGE must be at the beginning. don't forget brackets around sizeof= =2E > grub_create_loader_cmdline (argc, argv, > - linux_cmdline > - + sizeof (LINUX_IMAGE) - 1, > - maximal_cmdline_size > - - (sizeof (LINUX_IMAGE) - 1)); > + linux_cmdline > + + cmdline_offset, > + maximal_cmdline_size > + - cmdline_offset); > =20 > len =3D prot_file_size; > if (grub_file_read (file, prot_mode_mem, len) !=3D len && !grub_errn= o) >=20 --arUqGOILqud2Au6kcmS8uqF107cMQgDGj Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iF4EAREKAAYFAla+G2AACgkQmBXlbbo5nOvOCwD+OGWpnz5WLUgs3Tyk4iHN9Apq fcxYhixCkrxeE4un1wkBAIvsGi0hPsJksuiPJXiD1B9tdar+OdhnjyDciy6pNWqc =3HSb -----END PGP SIGNATURE----- --arUqGOILqud2Au6kcmS8uqF107cMQgDGj--