From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6917993065941565440 X-Received: by 2002:aca:add7:: with SMTP id w206mr2079439oie.86.1611052656685; Tue, 19 Jan 2021 02:37:36 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a4a:7259:: with SMTP id r25ls1356992ooe.3.gmail; Tue, 19 Jan 2021 02:37:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJzYf/1EQM30gTU9MkhWBdXhW9tSHz3LlAmQhWZq8JX/t4me3AZvgkWLay4sH1763pi+2K0y X-Received: by 2002:a4a:3e42:: with SMTP id t63mr2324708oot.32.1611052656315; Tue, 19 Jan 2021 02:37:36 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1611052656; cv=pass; d=google.com; s=arc-20160816; b=Qzm8rRGcMfNolWlgD45rFwemrC733OmfEMM1BzD51VzH87EPf6asujaoIP4Pyv9Ttb MNjYJnB+Ml9L4jY+2LHAbwGbIKuESmfokndGB0K/wofLjhurHqiVsdpQmEfA0BLTUoyZ bGpqHD+w4C8kNpYqE6zvzvG4F1o26QSW47kttDjRdueOlQ+MRB4OsZcbyxDWdymOV8vy Q0k/o7e5Vz0xF4rrL5iAYplRcYCh7DGi2XeUBe/5ZZdbdPJhvlVcLfd5bpBa2kWtYeY1 2IOT7fm7sUNU8VVfuKYNkaQdExZkUqCS1eSs6GC/z0Y6a7PJvxXg8NueJriRKzEPM9ow l08g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:content-language:content-transfer-encoding:in-reply-to :user-agent:date:message-id:from:references:cc:to:subject :dkim-signature; bh=vESEThBDhArOuI2QfN/uy7/hMxHxz5tLZcc4yhg9AMI=; b=pwMK2RA2l0UxewDcItPkC09/RT+tpUS8iqjtV4B+qRHVjMBhmOYRaGn0xq1kZydZD4 5TXXs5ad9+LyMqDnRnog5/Ltz1FsKbX4w/I0dTLCNmWAmweHEJyPSTuNm5ZW33OeFK29 4QaNZE1E7a2/sShNU9nF4NaajdDG2EU7D3kXDGpPsKAMex+BRV/3lo9iOX8Mo8MJkuck AXjiWrKI/mPHlzkfWNPatqZXL2oC/2DQsmFEn+DGP9dXGKySidI81dAA1uuYYTwljUOt QXCcEDM7HN5WX2c6Bsqxhaj/NKK56TekKSIfKGzxbZ1Kpdjt+LxkBUcM5orKgaY7heb8 2f1A== ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.onmicrosoft.com header.s=selector1-siemens-onmicrosoft-com header.b=Yt3NUA8y; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of silvano.cirujano-cuesta@siemens.com designates 40.107.6.48 as permitted sender) smtp.mailfrom=silvano.cirujano-cuesta@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60048.outbound.protection.outlook.com. [40.107.6.48]) by gmr-mx.google.com with ESMTPS id x20si2311675oot.1.2021.01.19.02.37.35 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 19 Jan 2021 02:37:36 -0800 (PST) Received-SPF: pass (google.com: domain of silvano.cirujano-cuesta@siemens.com designates 40.107.6.48 as permitted sender) client-ip=40.107.6.48; Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.onmicrosoft.com header.s=selector1-siemens-onmicrosoft-com header.b=Yt3NUA8y; arc=pass (i=1 spf=pass spfdomain=siemens.com dkim=pass dkdomain=siemens.com dmarc=pass fromdomain=siemens.com); spf=pass (google.com: domain of silvano.cirujano-cuesta@siemens.com designates 40.107.6.48 as permitted sender) smtp.mailfrom=silvano.cirujano-cuesta@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aMm3gPBu/CxpuF4JbXjJAx6PnaYA1TiWveft6jqo338C9fRPXMuI9X1+nTBnqQs885F2RUrJRyLPhOgSrFm8MzciRoABJOTykGvzBMXgfNqnj+MKyQAujAZNY0Y9bqT0FArQRKRsMsOlhhD60Zq7P1Yk4dbRVT9B2E05NF+fN1bQ7686RQfCzpbUWB0XL20lxbdrF9QQs6chk9Gtrudlu1owCgiP2hz7bDDnZzLMqWbgj9UKP0I0XdblqC4jkTeIwg6ZbNXE+9yy1WdgVoecAGaovVW9f4tRfDRhCPJolyB4ITKkRxZSCrP8xICCBBklkRz7+Qhs3Q3WZxjZlEvNFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vESEThBDhArOuI2QfN/uy7/hMxHxz5tLZcc4yhg9AMI=; b=ePMgp21bsho2CSw23vwAn0mkZjP1+A13jSAYEyWvGgcpw//fCPZO15niHXRnjM3DUO2GhXXJd7Irg22SUIeT/YPP2Mt/1jLjylE70bkRFNmcJh3ENQDR9wzmPIMwURRBL0TXIvR/wnbESZj4n1FO7r3KvPznszTA6k9ZUmDNOqbi/gX2heC+bOOkzMrxYMFFMqN03J1dYV+urpipVABLYB71oOR3UZ8jZL9/QIxMvrhCFO17K/dCEpO8wbuK1UJu0cNf+Kux8lfR3Avi3aEh9GwM7j/Q6B5OCQejAZ9m+2qYj+6Y7ESrREPX6kabdm1Lm+HFcW6/Fuenaf2lLt40GA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=siemens.com; dmarc=pass action=none header.from=siemens.com; dkim=pass header.d=siemens.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=siemens.onmicrosoft.com; s=selector1-siemens-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vESEThBDhArOuI2QfN/uy7/hMxHxz5tLZcc4yhg9AMI=; b=Yt3NUA8yJFAtwpCrjy/we+pF89ebB5ik0vkacR0gfe2CATktjnzG5YVk1K2VK2Vk9bJKRMelOzjXCKpMkg6htOleRLl2w7/lA5b6o8VtIv5dEA+pnXw4MYkjbzCgu99h72MsuN2vi/o7rsxAfTj0QNjDQmTzVZrkv0jeNg2G50g= Authentication-Results: googlegroups.com; dkim=none (message not signed) header.d=none;googlegroups.com; dmarc=none action=none header.from=siemens.com; Received: from AM0PR10MB2708.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:12a::30) by AM8PR10MB4052.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:1ee::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11; Tue, 19 Jan 2021 10:37:31 +0000 Received: from AM0PR10MB2708.EURPRD10.PROD.OUTLOOK.COM ([fe80::c035:62d1:fd79:1bc8]) by AM0PR10MB2708.EURPRD10.PROD.OUTLOOK.COM ([fe80::c035:62d1:fd79:1bc8%5]) with mapi id 15.20.3742.012; Tue, 19 Jan 2021 10:37:31 +0000 Subject: Re: image-postproc-extension.bbclass modifying /etc/os-release To: Henning Schild Cc: Claudius Heine , isar-users@googlegroups.com References: <67e1fac9-5af5-29aa-de57-9a0de0cdd165@siemens.com> <79cdea42-8338-2e7f-33dd-f396db634a14@siemens.com> <20210119092531.2cc80db5@md1za8fc.ad001.siemens.net> <20210119093324.52410271@md1za8fc.ad001.siemens.net> <34c9ad2c-a330-0074-cfd1-bffa1afcbd02@siemens.com> <20210119102246.53791a9c@md1za8fc.ad001.siemens.net> From: Silvano Cirujano Cuesta Message-ID: <12759268-1ad7-168a-dde9-4f2658567af1@siemens.com> Date: Tue, 19 Jan 2021 11:37:00 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 In-Reply-To: <20210119102246.53791a9c@md1za8fc.ad001.siemens.net> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US X-Originating-IP: [2001:a61:3ba9:3102:e458:f9ae:a68a:ac3d] X-ClientProxiedBy: FR2P281CA0013.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a::23) To AM0PR10MB2708.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:208:12a::30) Return-Path: silvano.cirujano-cuesta@siemens.com MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2001:a61:3ba9:3102:e458:f9ae:a68a:ac3d] (2001:a61:3ba9:3102:e458:f9ae:a68a:ac3d) by FR2P281CA0013.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.6 via Frontend Transport; Tue, 19 Jan 2021 10:37:30 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b865d19f-0dd8-4547-11f7-08d8bc66398e X-MS-TrafficTypeDiagnostic: AM8PR10MB4052: X-LD-Processed: 38ae3bcd-9579-4fd4-adda-b42e1495d55a,ExtAddr X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TjzT3M6v4WnIA/MC9lw9t3hqT9RDvROEphnYNcrOnGBFpF0ZzPqQi8TF9xO/ExSBjxtMAwZ5PRRmqSKmcx8Ix+afGA9lFu6WeCVSCtfjXapxVky5/GBUwzv1vb44QGNU9IzKqxlhISQMIpT3EiTE2ndj9vRHttGhn1QpBz8teiCHJmH1ru/pohpyoiI2Gvyry3B3mX1L85Ffi7V6lmbHJYLGCd3Gp7d6ARPr4i+raUaCAH0fzYWU133q6jliCfVGxm9/QeWVVBOde5hY670QuZFe6ShvoV31JaFfPuSk6rVVZj/sGzNLM19YHTMGjxTGHHCirypoOBPF8ev4k19CBLoOxnSA4rEjbJ3cQ8wrcrcrKfEX2xP5aXJIFAa5t3hVg5L7oAbUdC/ajKXWmuMIUc2PUNl5UBPJlAYO7qym45d1UDsUqa6o17n3Y4pTVWyHBmBZqzuA1mpSuLLJI+2NsllSb8p87oyD/j7FsO5CZesfThP8KXc/HGnMhR86XG3Yuti33fDRKWA319oB/nT0IOJ7Ogs1kB4lcneMQmNqV/35gq0JItZqSHKFsGMWEMkc X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR10MB2708.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(39860400002)(346002)(376002)(136003)(2616005)(186003)(16526019)(478600001)(6636002)(45080400002)(4326008)(966005)(8936002)(53546011)(6486002)(2906002)(5660300002)(66556008)(66476007)(66946007)(316002)(37006003)(31686004)(6862004)(36756003)(86362001)(6666004)(83380400001)(8676002)(31696002)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?Z0FBeWhpWmtJUkl4SDdMaTJkVkZJZkNOVXNpYkhpUWVRdktDVEdENUw0UnNM?= =?utf-8?B?ajhhcTlVRy9USjY2SVZJeDMxL0RlamRhWDN0SmZxVVN4YUJWY2JyVDlsSVRS?= =?utf-8?B?YmtxaGxya2Y0c2ZDdXFyWERIdXRrREgwQzZraHR2WlJ4dUhndG5kcXgvamxY?= =?utf-8?B?WkRtUVRUS0haZUV6VTM2WjIrZE5qSW5qR0Yxd082Y3Q5dC9UWUxhVHZyL2Ex?= =?utf-8?B?cE1zNy83WkM5RWdZak56QUV1cHZPamxwTS9QWGhZdUJxYlNiNGxlaFJYblh5?= =?utf-8?B?d294ZmFMVXJJRlZsdEpjUFoydGMrQ0kvNGd2dDF2Y3M0ZlFteTVadzBpVmNk?= =?utf-8?B?Skw3Vko4RTczYmVmWlZwVDBzL1hBU2NUOTF4cDZOT1JUWXFCc2lDanJyc1A2?= =?utf-8?B?TVNqdEQ2ZXp5Qlc1NHVYT0xYZmhSNDdZbytSUEYyakgzUnZXb2xWYmtnMWZz?= =?utf-8?B?K0NtV093TVk3ZXZOVUhSM2NTOGV2ZjN5RVhHeHU3WlNxQ0tnWlU5djF6cGNu?= =?utf-8?B?cGtYNStrazBVZTN4c2kwVU9HRDVlK1hXNkJkaHJ3RE0wK1J3N3pBV0RxZmZz?= =?utf-8?B?dys0bjExU09HazBMNXFITjdRYmZTaE5IN1hXV0sxbUp2dGJwSURRek1XczdG?= =?utf-8?B?eWh4eklvWEtMaUhlWFc1L1RQYWVQRUZKRnE3byt3RVQ3Y1M5WHM1d2xXb3dj?= =?utf-8?B?UFgvbkZCT0NCTDBzSkl2UDlrU2hpSU95a004SGpyMHFoZkk1N0JLSmNwZFJD?= =?utf-8?B?TG0rQ29lUXhtaElqS1k0NGlSOGwyb3VuYTRERGRZOEI3NG5KZnVpQmU5MnJo?= =?utf-8?B?OThmeGtUSGxaQzlaQnIzZmo0cFZKVHppelNCMW4xOHdTM0kwdzcyaTZockRx?= =?utf-8?B?S1RkMjdUTVV4NVN3UXVaOG9IaUtOMjVFQm5ycVZpTUl2VGNsR0JtOGZZN0RP?= =?utf-8?B?Y0p1aU5RK05QWFYzTm8yWUhMUU1NMEVrNWIySEJ1MXF4VWRaZzZLVWZPUUJV?= =?utf-8?B?MDJaLzN1ZTYxSlNxL2xmSmFjYzdoMitOenN5Zm5icVJPQU1yN05kQ0NLL2RK?= =?utf-8?B?RVIzZFdjZVNxR0tQTGhOdXowVy8wWEhzUFZ0VXhKRzJjN1QvRno0OHZhTStG?= =?utf-8?B?TmlhV2wyMlYvaWMxZ3ArdmNsL0RiblV0TzNsTXJWd0hDdjhKcjhCUnYvL29m?= =?utf-8?B?eFVjeGRjQ1F1VzR5NVk5NkRGVkd0U3NGL2ZmeG5xdlVtOXFSY0hpaTJLdXEy?= =?utf-8?B?WU90MWJvbVBGQXc2Ujh2VmkxZkV4Z3RMVHFrSmY5MXlvZDk2WEZ5aHVpUmU1?= =?utf-8?B?TzFDZjVuRXY3MWpRcmtiTWJaWjBSWjNSeGlQTmpPemdVeWNTVko5cWpCSlJK?= =?utf-8?B?NTRScVBSMHcrbEFTY21BaDFHUHcyeWdtYi9UMkcvczZ3MmdRMktXQS96bUZo?= =?utf-8?Q?XH9p8uM8?= X-OriginatorOrg: siemens.com X-MS-Exchange-CrossTenant-Network-Message-Id: b865d19f-0dd8-4547-11f7-08d8bc66398e X-MS-Exchange-CrossTenant-AuthSource: AM0PR10MB2708.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jan 2021 10:37:31.3891 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 38ae3bcd-9579-4fd4-adda-b42e1495d55a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: N7pUGhucoJNv6odSc2io+eSLq86EkaBkFNrXCfhnBKAG46Q7juzm4wjbmfNKDgCmLyCHl7ls65at1ShUd+T52U4kDVIKqWvJhJXCjTKt97YLDjWIRdVr7e4+0LkbPVaA X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR10MB4052 X-TUID: PzOM72er9o9E On 19/01/2021 10:22, Henning Schild wrote: > Am Tue, 19 Jan 2021 09:50:27 +0100 > schrieb Silvano Cirujano Cuesta : > >> On 19/01/2021 09:33, Henning Schild wrote: >>> Am Tue, 19 Jan 2021 09:25:31 +0100 >>> schrieb "[ext] Henning Schild" : >>> >>>> Am Mon, 18 Jan 2021 13:35:53 +0100 >>>> schrieb Claudius Heine : >>>> >>>>> Hi Silvano, >>>>> >>>>> On 2021-01-18 12:35, Silvano Cirujano Cuesta wrote: >>>>>> I might try to provide a fix, if we agree that the current >>>>>> implementation has an issue. >>>>>> >>>>>> @Claudius: you wrote the original code [1]. Do you remember why >>>>>> you implemented it this way? Do you remember if you were aware of >>>>>> the issue I mentioned and you provided a mitigation for the issue >>>>>> that I see (assuming my analysis is right)? >>>>>> >>>>>> [1] >>>>>> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Filbers%2Fisar%2Fcommit%2F13ce96e5bc84b60f2fa7ccfe93dde045461884e6&data=04%7C01%7Csilvano.cirujano-cuesta%40siemens.com%7C7170c79e6ec14d6df1ac08d8bc5bcaf8%7C38ae3bcd95794fd4addab42e1495d55a%7C1%7C0%7C637466449720721035%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ejDae1qkGm4bNOnsk1oRZeGGkJLs7tXVmhHx%2B4pnv2Q%3D&reserved=0 >>>>>> >>>>>>   Silvano >>>>>> >>>>>> On 15/01/2021 15:26, [ext] Silvano Cirujano Cuesta wrote: >>>>>>> Hi, >>>>>>> >>>>>>> I've noticed that '/etc/os-release' is being changed on the >>>>>>> image in meta/classes/image-postproc-extension.bbclass [1]. >>>>>>> What BTW ends up changing '/usr/lib/os-release', since it's >>>>>>> only a symlink. But both '/etc/os-release' and >>>>>>> '/usr/lib/os-release' are owned by 'base-files'... >>>>>>> >>>>>>> An upgrade of 'base-files' would be replacing (silently, since >>>>>>> is not marked as a configuration file) '/usr/lib/os-release' >>>>>>> with the version of the upstream 'base-files' package and >>>>>>> possibly breaking any tools in the system relying on certain >>>>>>> values in that file. >>>>>>> >>>>>>> Is there a reason that I'm missing for doing so instead of the >>>>>>> Debian-way (file diversion with dpkg-divert)? Or any hack that >>>>>>> I've overseen that avoids the mentioned breakage? >>>>> Interesting, I didn't remember that `/etc/os-release` is a >>>>> symlink, could that be something that has changed in more recent >>>>> debian versions? >>>>> >>>>> If so then, of course that needs to be fixed. >>>> the problem seems to be that it is a symlink, otherwise one would >>>> assume that changes in /etc/ are allowed and covered by the config >>>> file exception and will be subject to merging if an updated package >>>> comes around. >>>> >>>> My guess would be that we need to >>>> - make it a copy instead of a symlink >>>> - modify it >>> Alternative would be to create /etc/os-release-isar as that modified >>> copy, and replace the symlink target /etc/os-release -> >>> /etc/os-release-isar >> No, nothing touching /etc/os-release off-band will block "base-files" >> from restoring it. Creating another package touching /etc/os-release >> will create a conflict that will be detected by dpkg. Either upstream >> "base-files" is not there or we create a file diversion for >> /etc/os-release. IMO we are creating a Debian Derivative and as >> therefore I'd consider their re-/de-branding guidelines (see separate >> thread). >>> We can not have the modified file be part of any package, at least >>> not with its final content. The version control command has to >>> happen on every rootfs build and has to come "late", and a package >>> would not have that property. Plus a package would become subject >>> to potential false sharing in the multiconfig case ... The fields >>> we change are mostly image-properties, and not generic >> Image post-processing is deemed to fail. >> >> Sorry, I don't understand what you mean with "a package would become >> subject to potential false sharing in the multiconfig case". A >> package created on build-time can contain those image properties, >> right? I might be missing something... > No a package can not do the job, unfortunately. That is why we violate > the rule that every modification should be part of a package. It is not > because that file is potentially already owned by another package, that > can always be solved with overwriting in a package hook. What do you mean with "package hook"? A package "postinst" script? > > The package would need to have a unique name and version for every new > output of "git describe" and for every image description. In > multiconfig we build multiple images in one tree, sharing isar-apt. We can create a removal file diversion for /usr/lib/os-release (leaving /etc/os-release untouched, that way the Debian manpage for os-release still applies). This approach has following attributes: - /usr/lib/os-release is not managed by any package and that way post-processing it is not an issue and dpkg won't break anything - Debian os-release manpage still applies If going for the other approach (create our own "base-files" package) we can do pretty much the same: - the package doesn't provide /usr/lib/os-release, leaving it package-unmanaged - image post-processing to create the file becomes a requirement   Silvano > > Henning > >>    Silvano >> >>> Henning >>> >>>> In this case an update of the base-files package should leave it >>>> alone or ask for a merge. And i think that would be OK behaviour. >>>> >>>> Henning >>>> >>>>> regards, >>>>> Claudius >>>>> -- Siemens AG, T RDA IOT Corporate Competence Center Embedded Linux