From 6ef3265d2b0f8bc55c5d3fffa253e961ab31b041 Mon Sep 17 00:00:00 2001 From: Brad Bishop Date: Tue, 9 Oct 2018 18:59:25 +0100 Subject: poky: sumo refresh 3b8dc3a88e..36d5cee56b MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update poky to sumo HEAD. Andreas Müller (1): libsdl2: Fix left rotated display for RaspPi/VC4/GLES2 Anuj Mittal (2): qemux86-directdisk: remove mem= parameter initramfs-framework/udev: call settle before kill Armin Kuster (1): libcroco: CVE-2017-7961 Awais Belal (1): bitbake: toaster: Fix bitbake flexible path error from Bugzilla #12891 Chong Yi Chai (1): mkefidisk: fix installation of kernel image Paulo Neves (1): bitbake: fetcher: Fixed remote removal not throwing exception. Richard Purdie (1): bitbake: main: Fix environment handling for UI module imports Ross Burton (2): security_flags: disable static PIE in glibc cmake: put cmake.m4 and toolchain file in PN Sinan Kaya (1): gnupg: CVE-2018-9234 Change-Id: Ia9ff256122334cf5f1fb8d377ac3f295605ac68b Signed-off-by: Brad Bishop --- poky/bitbake/lib/bb/fetch2/git.py | 7 +- poky/bitbake/lib/bb/main.py | 7 +- poky/meta/conf/distro/include/security_flags.inc | 2 +- .../initrdscripts/initramfs-framework/udev | 1 + poky/meta/recipes-devtools/cmake/cmake_3.10.3.bb | 3 +- ...01-GLES2-Get-sin-cos-out-of-vertex-shader.patch | 141 +++++++++++++++++++++ .../meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb | 1 + .../gnupg/gnupg/CVE-2018-9234.patch | 28 ++++ poky/meta/recipes-support/gnupg/gnupg_2.2.4.bb | 1 + .../libcroco/libcroco/CVE-2017-7961.patch | 46 +++++++ .../recipes-support/libcroco/libcroco_0.6.12.bb | 3 +- poky/scripts/contrib/mkefidisk.sh | 12 +- .../lib/wic/canned-wks/qemux86-directdisk.wks | 2 +- 13 files changed, 241 insertions(+), 13 deletions(-) create mode 100644 poky/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch create mode 100644 poky/meta/recipes-support/gnupg/gnupg/CVE-2018-9234.patch create mode 100644 poky/meta/recipes-support/libcroco/libcroco/CVE-2017-7961.patch (limited to 'poky') diff --git a/poky/bitbake/lib/bb/fetch2/git.py b/poky/bitbake/lib/bb/fetch2/git.py index 3de83bed1..7b618c6fb 100644 --- a/poky/bitbake/lib/bb/fetch2/git.py +++ b/poky/bitbake/lib/bb/fetch2/git.py @@ -354,10 +354,9 @@ class Git(FetchMethod): if not self._contains_ref(ud, d, name, ud.clonedir): needupdate = True if needupdate: - try: - runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir) - except bb.fetch2.FetchError: - logger.debug(1, "No Origin") + output = runfetchcmd("%s remote" % ud.basecmd, d, quiet=True, workdir=ud.clonedir) + if "origin" in output: + runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir) runfetchcmd("%s remote add --mirror=fetch origin %s" % (ud.basecmd, repourl), d, workdir=ud.clonedir) fetch_cmd = "LANG=C %s fetch -f --prune --progress %s refs/*:refs/*" % (ud.basecmd, repourl) diff --git a/poky/bitbake/lib/bb/main.py b/poky/bitbake/lib/bb/main.py index f4474e410..732a31540 100755 --- a/poky/bitbake/lib/bb/main.py +++ b/poky/bitbake/lib/bb/main.py @@ -405,9 +405,6 @@ def setup_bitbake(configParams, configuration, extrafeatures=None): # In status only mode there are no logs and no UI logger.addHandler(handler) - # Clear away any spurious environment variables while we stoke up the cooker - cleanedvars = bb.utils.clean_environment() - if configParams.server_only: featureset = [] ui_module = None @@ -423,6 +420,10 @@ def setup_bitbake(configParams, configuration, extrafeatures=None): server_connection = None + # Clear away any spurious environment variables while we stoke up the cooker + # (done after import_extension_module() above since for example import gi triggers env var usage) + cleanedvars = bb.utils.clean_environment() + if configParams.remote_server: # Connect to a remote XMLRPC server server_connection = bb.server.xmlrpcclient.connectXMLRPC(configParams.remote_server, featureset, diff --git a/poky/meta/conf/distro/include/security_flags.inc b/poky/meta/conf/distro/include/security_flags.inc index d66dd5764..aaeca6991 100644 --- a/poky/meta/conf/distro/include/security_flags.inc +++ b/poky/meta/conf/distro/include/security_flags.inc @@ -6,7 +6,7 @@ # in the DISTRO="poky-lsb" configuration. GCCPIE ?= "--enable-default-pie" -GLIBCPIE ?= "--enable-static-pie" +# If static PIE is known to work well, GLIBCPIE="--enable-static-pie" can be set # _FORTIFY_SOURCE requires -O1 or higher, so disable in debug builds as they use # -O0 which then results in a compiler warning. diff --git a/poky/meta/recipes-core/initrdscripts/initramfs-framework/udev b/poky/meta/recipes-core/initrdscripts/initramfs-framework/udev index 79c886782..87551ff4a 100644 --- a/poky/meta/recipes-core/initrdscripts/initramfs-framework/udev +++ b/poky/meta/recipes-core/initrdscripts/initramfs-framework/udev @@ -6,6 +6,7 @@ udev_shutdown_hook_handler() { status=$1 module=$2 if [ "$status" = "pre" ] && [ "$module" = "finish" ]; then + udevadm settle killall `basename $_UDEV_DAEMON` 2>/dev/null fi } diff --git a/poky/meta/recipes-devtools/cmake/cmake_3.10.3.bb b/poky/meta/recipes-devtools/cmake/cmake_3.10.3.bb index 3f8fd7a99..7d81edc60 100644 --- a/poky/meta/recipes-devtools/cmake/cmake_3.10.3.bb +++ b/poky/meta/recipes-devtools/cmake/cmake_3.10.3.bb @@ -44,7 +44,8 @@ do_install_append_class-nativesdk() { FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}" -FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}" +FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION} ${datadir}/cmake ${datadir}/aclocal" FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}" +FILES_${PN}-dev = "" BBCLASSEXTEND = "nativesdk" diff --git a/poky/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch b/poky/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch new file mode 100644 index 000000000..9b32b3788 --- /dev/null +++ b/poky/meta/recipes-graphics/libsdl2/libsdl2/0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch @@ -0,0 +1,141 @@ +From c215ba1d52a3d4ef03af3ab1a5baa1863f812aed Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= +Date: Fri, 24 Aug 2018 23:10:25 +0200 +Subject: [PATCH] GLES2: Get sin/cos out of vertex shader +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +The only place angle is activated and causes effect is RenderCopyEx. All other +methods which use vertex shader, leave angle disabled and cause useless sin/cos +calculation in shader. + +To get around shader's interface is changed to a vector that contains results +of sin and cos. To behave properly when disabled, cos value is set with offset +-1.0 making 0.0 default when deactivated. + +As nice side effect it simplifies GLES2_UpdateVertexBuffer: All attributes are +vectors now. + +Additional background: + +* On RaspberryPi it gives a performace win for operations. Tested with + [1] numbers go down for 5-10% (not easy to estimate due to huge variation). +* SDL_RenderCopyEx was tested with [2] +* It works around left rotated display caused by low accuracy sin implemetation + in RaspberryPi/VC4 [3] + +Upstream-Status: Accepted [4] + +[1] https://github.com/schnitzeltony/sdl2box +[2] https://github.com/schnitzeltony/sdl2rendercopyex +[3] https://github.com/anholt/mesa/issues/110 +[4] https://hg.libsdl.org/SDL/rev/e5a666405750 + +Signed-off-by: Andreas Müller +--- + src/render/opengles2/SDL_render_gles2.c | 17 ++++++++++++----- + src/render/opengles2/SDL_shaders_gles2.c | 14 +++++++++----- + 2 files changed, 21 insertions(+), 10 deletions(-) + +diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c +index 14671f7c8..7c54a7333 100644 +--- a/src/render/opengles2/SDL_render_gles2.c ++++ b/src/render/opengles2/SDL_render_gles2.c +@@ -1530,7 +1530,7 @@ GLES2_UpdateVertexBuffer(SDL_Renderer *renderer, GLES2_Attribute attr, + GLES2_DriverContext *data = (GLES2_DriverContext *)renderer->driverdata; + + #if !SDL_GLES2_USE_VBOS +- data->glVertexAttribPointer(attr, attr == GLES2_ATTRIBUTE_ANGLE ? 1 : 2, GL_FLOAT, GL_FALSE, 0, vertexData); ++ data->glVertexAttribPointer(attr, 2, GL_FLOAT, GL_FALSE, 0, vertexData); + #else + if (!data->vertex_buffers[attr]) { + data->glGenBuffers(1, &data->vertex_buffers[attr]); +@@ -1545,7 +1545,7 @@ GLES2_UpdateVertexBuffer(SDL_Renderer *renderer, GLES2_Attribute attr, + data->glBufferSubData(GL_ARRAY_BUFFER, 0, dataSizeInBytes, vertexData); + } + +- data->glVertexAttribPointer(attr, attr == GLES2_ATTRIBUTE_ANGLE ? 1 : 2, GL_FLOAT, GL_FALSE, 0, 0); ++ data->glVertexAttribPointer(attr, 2, GL_FLOAT, GL_FALSE, 0, 0); + #endif + + return 0; +@@ -1853,6 +1853,8 @@ GLES2_RenderCopy(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *s + return GL_CheckError("", renderer); + } + ++#define PI 3.14159265f ++ + static int + GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect *srcrect, + const SDL_FRect *dstrect, const double angle, const SDL_FPoint *center, const SDL_RendererFlip flip) +@@ -1861,8 +1863,9 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect + GLfloat vertices[8]; + GLfloat texCoords[8]; + GLfloat translate[8]; +- GLfloat fAngle[4]; ++ GLfloat fAngle[8]; + GLfloat tmp; ++ float radian_angle; + + GLES2_ActivateRenderer(renderer); + +@@ -1872,7 +1875,11 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect + + data->glEnableVertexAttribArray(GLES2_ATTRIBUTE_CENTER); + data->glEnableVertexAttribArray(GLES2_ATTRIBUTE_ANGLE); +- fAngle[0] = fAngle[1] = fAngle[2] = fAngle[3] = (GLfloat)(360.0f - angle); ++ ++ radian_angle = PI * (360.0f - angle) / 180.f; ++ fAngle[0] = fAngle[2] = fAngle[4] = fAngle[6] = (GLfloat)sin(radian_angle); ++ /* render expects cos value - 1 (see GLES2_VertexSrc_Default_) */ ++ fAngle[1] = fAngle[3] = fAngle[5] = fAngle[7] = (GLfloat)cos(radian_angle) - 1.0f; + /* Calculate the center of rotation */ + translate[0] = translate[2] = translate[4] = translate[6] = (center->x + dstrect->x); + translate[1] = translate[3] = translate[5] = translate[7] = (center->y + dstrect->y); +@@ -1901,7 +1908,7 @@ GLES2_RenderCopyEx(SDL_Renderer *renderer, SDL_Texture *texture, const SDL_Rect + data->glVertexAttribPointer(GLES2_ATTRIBUTE_CENTER, 2, GL_FLOAT, GL_FALSE, 0, translate); + data->glVertexAttribPointer(GLES2_ATTRIBUTE_POSITION, 2, GL_FLOAT, GL_FALSE, 0, vertices);*/ + +- GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_ANGLE, fAngle, 4 * sizeof(GLfloat)); ++ GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_ANGLE, fAngle, 8 * sizeof(GLfloat)); + GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_CENTER, translate, 8 * sizeof(GLfloat)); + GLES2_UpdateVertexBuffer(renderer, GLES2_ATTRIBUTE_POSITION, vertices, 8 * sizeof(GLfloat)); + +diff --git a/src/render/opengles2/SDL_shaders_gles2.c b/src/render/opengles2/SDL_shaders_gles2.c +index b0bcdff25..f428a4945 100644 +--- a/src/render/opengles2/SDL_shaders_gles2.c ++++ b/src/render/opengles2/SDL_shaders_gles2.c +@@ -30,20 +30,24 @@ + /************************************************************************************************* + * Vertex/fragment shader source * + *************************************************************************************************/ +- ++/* Notes on a_angle: ++ * It is a vector containing sin and cos for rotation matrix ++ * To get correct rotation for most cases when a_angle is disabled cos ++ value is decremented by 1.0 to get proper output with 0.0 which is ++ default value ++*/ + static const Uint8 GLES2_VertexSrc_Default_[] = " \ + uniform mat4 u_projection; \ + attribute vec2 a_position; \ + attribute vec2 a_texCoord; \ +- attribute float a_angle; \ ++ attribute vec2 a_angle; \ + attribute vec2 a_center; \ + varying vec2 v_texCoord; \ + \ + void main() \ + { \ +- float angle = radians(a_angle); \ +- float c = cos(angle); \ +- float s = sin(angle); \ ++ float s = a_angle[0]; \ ++ float c = a_angle[1] + 1.0; \ + mat2 rotationMatrix = mat2(c, -s, s, c); \ + vec2 position = rotationMatrix * (a_position - a_center) + a_center; \ + v_texCoord = a_texCoord; \ +-- +2.14.4 + diff --git a/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb b/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb index c0cf70d7f..8092fad11 100644 --- a/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb +++ b/poky/meta/recipes-graphics/libsdl2/libsdl2_2.0.8.bb @@ -16,6 +16,7 @@ DEPENDS_class-nativesdk = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'virtu SRC_URI = " \ http://www.libsdl.org/release/SDL2-${PV}.tar.gz \ + file://0001-GLES2-Get-sin-cos-out-of-vertex-shader.patch \ " S = "${WORKDIR}/SDL2-${PV}" diff --git a/poky/meta/recipes-support/gnupg/gnupg/CVE-2018-9234.patch b/poky/meta/recipes-support/gnupg/gnupg/CVE-2018-9234.patch new file mode 100644 index 000000000..d4ba1d863 --- /dev/null +++ b/poky/meta/recipes-support/gnupg/gnupg/CVE-2018-9234.patch @@ -0,0 +1,28 @@ +From ce055269c80f6e7c1393c0deec7bc5f0d37895ea Mon Sep 17 00:00:00 2001 +From: Sinan Kaya +Date: Sun, 23 Sep 2018 04:05:47 +0000 +Subject: [PATCH] g10: Fix filtering by PK->REQ_USAGE + +Upstream-Status: Backport [https://dev.gnupg.org/rGa17d2d1f690ebe5d005b4589a5fe378b6487c657] +CVE: CVE-2018-9234 +Signed-off-by: Sinan Kaya +--- + g10/getkey.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/g10/getkey.c b/g10/getkey.c +index e31e023..ca2500c 100644 +--- a/g10/getkey.c ++++ b/g10/getkey.c +@@ -1810,6 +1810,8 @@ get_pubkey_byfprint (ctrl_t ctrl, PKT_public_key *pk, kbnode_t *r_keyblock, + ctx.items[0].mode = fprint_len == 16 ? KEYDB_SEARCH_MODE_FPR16 + : KEYDB_SEARCH_MODE_FPR20; + memcpy (ctx.items[0].u.fpr, fprint, fprint_len); ++ if (pk) ++ ctx.req_usage = pk->req_usage; + rc = lookup (ctrl, &ctx, 0, &kb, &found_key); + if (!rc && pk) + pk_from_block (pk, kb, found_key); +-- +2.19.0 + diff --git a/poky/meta/recipes-support/gnupg/gnupg_2.2.4.bb b/poky/meta/recipes-support/gnupg/gnupg_2.2.4.bb index d6bfaff37..d777fcb12 100644 --- a/poky/meta/recipes-support/gnupg/gnupg_2.2.4.bb +++ b/poky/meta/recipes-support/gnupg/gnupg_2.2.4.bb @@ -15,6 +15,7 @@ SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \ file://0003-dirmngr-uses-libgpg-error.patch \ file://0004-autogen.sh-fix-find-version-for-beta-checking.patch \ file://CVE-2018-12020.patch \ + file://CVE-2018-9234.patch \ " SRC_URI_append_class-native = " file://0001-configure.ac-use-a-custom-value-for-the-location-of-.patch" diff --git a/poky/meta/recipes-support/libcroco/libcroco/CVE-2017-7961.patch b/poky/meta/recipes-support/libcroco/libcroco/CVE-2017-7961.patch new file mode 100644 index 000000000..8ac11ec49 --- /dev/null +++ b/poky/meta/recipes-support/libcroco/libcroco/CVE-2017-7961.patch @@ -0,0 +1,46 @@ +From 5fa3165613b77b516e2b0dc128f73b673bd3ec8b Mon Sep 17 00:00:00 2001 +From: Ignacio Casal Quinteiro +Date: Sun, 16 Apr 2017 13:56:09 +0200 +Subject: [PATCH] tknzr: support only max long rgb values + +This fixes a possible out of bound when reading rgbs which +are longer than the support MAXLONG + +Upstream-Status: Backport [https://git.gnome.org/browse/libcroco/patch/?id=9ad72875e9f08e4c519ef63d44cdbd94aa9504f7] +CVE: CVE-2017-7961 +Signed-off-by: Sinan Kaya +--- + src/cr-tknzr.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/cr-tknzr.c b/src/cr-tknzr.c +index e3af0ee..76886ec 100644 +--- a/src/cr-tknzr.c ++++ b/src/cr-tknzr.c +@@ -1280,6 +1280,11 @@ cr_tknzr_parse_rgb (CRTknzr * a_this, CRRgb ** a_rgb) + status = cr_tknzr_parse_num (a_this, &num); + ENSURE_PARSING_COND ((status == CR_OK) && (num != NULL)); + ++ if (num->val > G_MAXLONG) { ++ status = CR_PARSING_ERROR; ++ goto error; ++ } ++ + red = num->val; + cr_num_destroy (num); + num = NULL; +@@ -1299,6 +1304,11 @@ cr_tknzr_parse_rgb (CRTknzr * a_this, CRRgb ** a_rgb) + status = cr_tknzr_parse_num (a_this, &num); + ENSURE_PARSING_COND ((status == CR_OK) && (num != NULL)); + ++ if (num->val > G_MAXLONG) { ++ status = CR_PARSING_ERROR; ++ goto error; ++ } ++ + PEEK_BYTE (a_this, 1, &next_bytes[0]); + if (next_bytes[0] == '%') { + SKIP_CHARS (a_this, 1); +-- +2.19.0 + diff --git a/poky/meta/recipes-support/libcroco/libcroco_0.6.12.bb b/poky/meta/recipes-support/libcroco/libcroco_0.6.12.bb index 5b962ee73..c7507e0d5 100644 --- a/poky/meta/recipes-support/libcroco/libcroco_0.6.12.bb +++ b/poky/meta/recipes-support/libcroco/libcroco_0.6.12.bb @@ -16,7 +16,8 @@ BINCONFIG = "${bindir}/croco-0.6-config" inherit gnomebase gtk-doc binconfig-disabled -SRC_URI += "file://CVE-2017-7960.patch" +SRC_URI += "file://CVE-2017-7960.patch \ + file://CVE-2017-7961.patch " SRC_URI[archive.md5sum] = "bc0984fce078ba2ce29f9500c6b9ddce" SRC_URI[archive.sha256sum] = "ddc4b5546c9fb4280a5017e2707fbd4839034ed1aba5b7d4372212f34f84f860" diff --git a/poky/scripts/contrib/mkefidisk.sh b/poky/scripts/contrib/mkefidisk.sh index ac4ec9c7f..39e4bcf08 100755 --- a/poky/scripts/contrib/mkefidisk.sh +++ b/poky/scripts/contrib/mkefidisk.sh @@ -381,7 +381,15 @@ mount $BOOTFS $BOOTFS_MNT >$OUT 2>&1 || error "Failed to mount $BOOTFS on $BOOTF info "Preparing boot partition" EFIDIR="$BOOTFS_MNT/EFI/BOOT" -cp $HDDIMG_MNT/vmlinuz $BOOTFS_MNT >$OUT 2>&1 || error "Failed to copy vmlinuz" +# Get kernel image name +if [ -e "$HDDIMG_MNT/vmlinuz" ]; then + kernel_image="vmlinuz" +elif [ "$HDDIMG_MNT/bzImage" ]; then + kernel_image="bzImage" +else + die "No kernel image found" +fi +cp $HDDIMG_MNT/${kernel_image} $BOOTFS_MNT >$OUT 2>&1 || error "Failed to copy ${kernel_image}" # Copy the efi loader and configs (booti*.efi and grub.cfg if it exists) cp -r $HDDIMG_MNT/EFI $BOOTFS_MNT >$OUT 2>&1 || error "Failed to copy EFI dir" # Silently ignore a missing systemd-boot loader dir (we might just be a GRUB image) @@ -407,7 +415,7 @@ if [ -e "$GRUB_CFG" ]; then sed -i "s/ LABEL=[^ ]*/ /" $GRUB_CFG sed -i "s@ root=[^ ]*@ @" $GRUB_CFG - sed -i "s@vmlinuz @vmlinuz root=$TARGET_ROOTFS ro rootwait console=ttyS0 console=tty0 @" $GRUB_CFG + sed -i "s@${kernel_image} @${kernel_image} root=$TARGET_ROOTFS ro rootwait console=ttyS0 console=tty0 @" $GRUB_CFG fi # Look for a systemd-boot installation diff --git a/poky/scripts/lib/wic/canned-wks/qemux86-directdisk.wks b/poky/scripts/lib/wic/canned-wks/qemux86-directdisk.wks index be51c4eb5..c8d9f121b 100644 --- a/poky/scripts/lib/wic/canned-wks/qemux86-directdisk.wks +++ b/poky/scripts/lib/wic/canned-wks/qemux86-directdisk.wks @@ -4,5 +4,5 @@ include common.wks.inc -bootloader --timeout=0 --append="vga=0 rw mem=256M oprofile.timer=1 rootfstype=ext4 " +bootloader --timeout=0 --append="vga=0 rw oprofile.timer=1 rootfstype=ext4 " -- cgit v1.2.1