mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 12:52:29 -04:00
doc:it_IT: align Italian documentation in process
This commit updates the Italian translation in `process/` following these changes: commit44abc8fcbf("Documentation: process: Arbitrarily bump kernel major version number") commitba2457109d("Documentation: process: Also mention Sasha Levin as stable tree maintainer") commit5ce70894f6("Doc: correct spelling and wording mistakes") commit4629837547("linux-next: update maintainer info.") commit43e9076a00("docs: Fix conflicting contributor identity info") commitb27f9e8079("docs: remove Documentation/dontdiff") commit9734b3e753("docs: 5.Posting: mentioned Suggested-by: tag") commit4e6b7141d1("docs: clarify rules wrt tagging other people") commit944df7a314("docs: update the guidance for Link: tags") commit0a83293322("doc: development-process: add notice on testing") commita037699da0("docs: Add debugging section to process") commit78d979db6c("docs: add AI Coding Assistants documentation") commita66437c279("Documentation: Provide guidelines for tool-generated content") commita592a36e49("Documentation: use a source-read extension for the index link boilerplate") commit102606402f("Documentation: Project continuity") commita03ef333fb("Documentation: security-bugs: explain what is and is not a security bug") commitd0b343605f("kernel-docs: Add new section for Rust learning materials") commit57937eac1f("kernel-docs: Add book to process/kernel-docs.rst") commitd8c949c577("docs/licensing: Clarify wording about "GPL" and "Proprietary"") commitebf1bafd09("LICENSES: Explicitly allow SPDX-FileCopyrightText") commit9fa7153c31("rust: conclude the Rust experiment") commit47cb33cedf("docs: clarify wording in programming-language.rst") commit45a92c0b91("docs: maintainers: add SPDX license to the file") commit2932ba8d9c("slab: Introduce kmalloc_obj() and family") commite4c8b46b92("slab: Introduce kmalloc_flex() and family") commitd957b4184a("Documentation: deprecated.rst: kmalloc-family: mark argument as optional") commit120a64c802("Documentation: process: fix brackets") commit079a028d63("string: Remove strncpy() from the kernel") commite551bd4109("Documentation: remove :kyb: tags") commit4971ca2007("docs: process: email-client: add Thunderbird "Toggle Line Wrap" extension") commitf44a29784f("Documentation: update maintainer-pgp-guide for latest best practices") commit273aa250f1("Documentation: Improve wording on requirements for a free Nitrokey") commit6c5c07bc85("docs: process: maintainer-pgp-guide: update kernel.org docs link") commit54857c5245("docs: maintainer-pgp-guide.rst: add a reference for kernel.org sign") commita556bd882b("docs: align with scripts/syscall.tbl migration") commite5b1c0fa4f("Documentation: Remove :manpage: from non-existing man pages") commit78a00cac1e("docs: fix 're-use' -> 'reuse' in documentation") commitec6fd28baf("docs: remove unneeded maintainer_handbooks_main label") commit8eae6da5f5("docs: auto-generate maintainer entry profile links") commitbda185c305("docs: maintainers_include: Only show main entry for profiles") commit2783096fb1("docs: submit-checklist: Expand on build tests against different word sizes") commitfb12098d8e("docs: submit-checklist: Allow creating cross-references for ABI README") commit5a63f0369b("docs/.../submit-checklist: Use Documentation/admin-guide/abi.rst for cross-ref of README") commite5880f95a9("docs: process: discourage pointless boilerplate kdoc") commit2c62e2e874("coding-style: fix verb typo") commit197bbebd25("docs: Update documentation to avoid mentioning of kernel.h") commiteba6ffd126("docs: kdoc: move kernel-doc to tools/docs") commit7c6d969d53("Documentation: adopt new coding style of type-aware kmalloc-family") commit323fa4b960("Documentation: Fix syntax of kmalloc_objs example in coding style doc") commitd49172bbd7("Documentation: clarify the expected collaboration with security bugs reporters") commit3a68841d1d("Documentation: smooth the text flow in the security bug reporting process") commitceddb2c001("Documentation: insist on the plain-text requirement for security reports") commitf2b1cbef15("Documentation: minor updates to the security contacts") commita72b832a48("Documentation: explain how to find maintainers addresses for security reports") commit496fa1befb("Documentation: clarify the mandatory and desirable info for security reports") commitf387e2e2b9("Documentation: fix two typos in latest update to the security report howto") commitaed3c33467("Documentation: security-bugs: do not systematically Cc the security team") commit4bf85afb9f("Documentation: security-bugs: clarify requirements for AI-assisted reports") commit561458db0d("docs: security-bugs: add a link to the threat-model documentation") commit5f5e734432("kbuild: generate offset range data for builtin modules") commit41047d53bc("docs:process:changes: fix version command for btrfs-progs") commit82a1978d0f("kheaders: use 'tar' instead of 'cpio' for copying files") commitd2b239099c("docs: changes: update Sphinx minimal version to 3.4.3") commit5e25b972a2("docs: changes: update Python minimal version") commit118c40b7b5("kbuild: require gcc-8 and binutils-2.30") commit28d51df0db("Documentation: update binutils-2.30 version reference") commitfc6edeea53("docs: Remove reiserfsprogs from dependencies.") commitbc20c56e98("docs: changes: better document Python needs") commit20c0989283("kbuild: Bump minimum version of LLVM for building the kernel to 15.0.0") commit903922cfa0("lib/Kconfig.debug: Set the minimum required pahole version to v1.22") commit8913632998("Documentation: Fix typos and grammatical errors") commitc99fcb5850("docs: Fix an erroneous reference to sphinx.rst") commitd8a224f519("docs: changes/ver_linux: fix entries and add several tools") commitece7e57afd("docs: changes.rst and ver_linux: sort the lists") commitf32fb9c58a("rust: bump Rust minimum supported version to 1.85.0 (Debian Trixie)") commitc3a00a3f31("rust: bump `bindgen` minimum supported version to 0.71.1 (Debian Trixie)") commitce3267a39a("kbuild: Bump minimum version of LLVM for building the kernel to 17.0.1") commit2c1ccd9a1d("docs: changes.rst: restore pahole 1.26 minimum (regressed by sort)") commit3f997cbf67("docs: process: submitting-patches: split canonical patch format section") commit6356f18f09("Align git commit ID abbreviation guidelines and checks") commitcd9123eeb2("docs: submitting-patches: clarify Acked-by and introduce "# Suffix"") commit25fb101385("docs: submitting-patches: clarify difference between Acked-by and Reviewed-by") commit08c035da54("docs: submitting-patches: clarify that signers may use their discretion on tags") commit95767a592d("docs: submitting-patches: document the format for affiliation") commitdc896f853e("docs: submitting-patches: adjust Fixes definition slightly") commit22014a2300("Documentation/process: submitting-patches: fix typo in "were do"") commite36a7b1e17("docs: submitting-patches: Clarify that removal of Acks needs explanation too") commit8a12e3fbf2("docs: submitting-patches: suggest adding previous version links") commit6252e5c1c2("docs: add an Assisted-by mention to submitting-patches.rst") commit48c3876a6a("docs: submitting-patches: Clarify that "reviewer" is a person") commit83f71fbc66("docs: submitting-patches: Fix section structure around DCO") Signed-off-by: Federico Vaga <federico.vaga@vaga.pv.it> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Message-ID: <20260816193906.68808-1-federico.vaga@vaga.pv.it>
This commit is contained in:
committed by
Jonathan Corbet
parent
60763c2f83
commit
f7f11bddda
@@ -279,13 +279,13 @@ una versione 3 della licenza GPL nel prossimo futuro.
|
||||
|
||||
È imperativo che tutto il codice che contribuisce al kernel sia legittimamente
|
||||
software libero. Per questa ragione, un codice proveniente da un contributore
|
||||
anonimo (o sotto pseudonimo) non verrà accettato. È richiesto a tutti i
|
||||
contributori di firmare il proprio codice, attestando così che quest'ultimo
|
||||
può essere distribuito insieme al kernel sotto la licenza GPL. Il codice che
|
||||
non è stato licenziato come software libero dal proprio creatore, o che
|
||||
potrebbe creare problemi di copyright per il kernel (come il codice derivante
|
||||
da processi di ingegneria inversa senza le opportune tutele), non può essere
|
||||
diffuso.
|
||||
la cui identità non è nota, o da un contributore anonimo, non verrà accettato.
|
||||
È richiesto a tutti i contributori di firmare il proprio codice, attestando
|
||||
così che quest'ultimo può essere distribuito insieme al kernel sotto la licenza
|
||||
GPL. Il codice che non è stato licenziato come software libero dal proprio
|
||||
creatore, o che potrebbe creare problemi di copyright per il kernel (come il
|
||||
codice derivante da processi di ingegneria inversa senza le opportune tutele),
|
||||
non può essere diffuso.
|
||||
|
||||
Domande relative a questioni legate al copyright sono frequenti nelle liste
|
||||
di discussione dedicate allo sviluppo di Linux. Tali quesiti, normalmente,
|
||||
|
||||
@@ -18,25 +18,22 @@ processo si svolge per poter esserne parte attiva.
|
||||
Il quadro d'insieme
|
||||
-------------------
|
||||
|
||||
Gli sviluppatori kernel utilizzano un calendario di rilascio generico, dove
|
||||
ogni due o tre mesi viene effettuata un rilascio importante del kernel.
|
||||
I rilasci più recenti sono stati:
|
||||
Il kernel Linux utilizza un modello di sviluppo a rilascio continuo,
|
||||
vagamente basato sul tempo. Un nuovo rilascio principale del kernel (che
|
||||
chiameremo, come esempio, 9.x) [1]_ avviene ogni due o tre mesi, e porta
|
||||
con sé nuove funzionalità, modifiche interne alle API e molto altro. Un
|
||||
tipico rilascio può contenere circa 13.000 gruppi di modifiche che toccano
|
||||
diverse centinaia di migliaia di righe di codice. I rilasci più recenti,
|
||||
assieme alle rispettive date, si possono trovare su `Wikipedia
|
||||
<https://en.wikipedia.org/wiki/Linux_kernel_version_history>`_.
|
||||
|
||||
====== =================
|
||||
5.0 3 marzo, 2019
|
||||
5.1 5 maggio, 2019
|
||||
5.2 7 luglio, 2019
|
||||
5.3 15 settembre, 2019
|
||||
5.4 24 novembre, 2019
|
||||
5.5 6 gennaio, 2020
|
||||
====== =================
|
||||
|
||||
Ciascun rilascio 5.x è un importante rilascio del kernel con nuove
|
||||
funzionalità, modifiche interne dell'API, e molto altro. Un tipico
|
||||
rilascio contiene quasi 13,000 gruppi di modifiche con ulteriori
|
||||
modifiche a parecchie migliaia di linee di codice. La 5.x. è pertanto la
|
||||
linea di confine nello sviluppo del kernel Linux; il kernel utilizza un sistema
|
||||
di sviluppo continuo che integra costantemente nuove importanti modifiche.
|
||||
.. [1] A rigor di termini, il kernel Linux non utilizza uno schema di
|
||||
numerazione semantica delle versioni (semantic versioning), bensì
|
||||
la coppia 9.x identifica la versione del rilascio principale come
|
||||
numero intero. Per ogni rilascio, x viene incrementato, mentre
|
||||
9 viene incrementato solo quando x è ritenuto sufficientemente
|
||||
grande (per esempio, Linux 5.0 è stato rilasciato dopo Linux
|
||||
4.20).
|
||||
|
||||
Viene seguita una disciplina abbastanza lineare per l'inclusione delle
|
||||
patch di ogni rilascio. All'inizio di ogni ciclo di sviluppo, la
|
||||
@@ -55,8 +52,8 @@ verrà descritto dettagliatamente più avanti).
|
||||
La finestra di inclusione resta attiva approssimativamente per due settimane.
|
||||
Al termine di questo periodo, Linus Torvald dichiarerà che la finestra è
|
||||
chiusa e rilascerà il primo degli "rc" del kernel.
|
||||
Per il kernel che è destinato ad essere 5.6, per esempio, il rilascio
|
||||
che emerge al termine della finestra d'inclusione si chiamerà 5.6-rc1.
|
||||
Per il kernel che è destinato ad essere 9.x, per esempio, il rilascio
|
||||
che emerge al termine della finestra d'inclusione si chiamerà 9.x-rc1.
|
||||
Questo rilascio indica che il momento di aggiungere nuovi componenti è
|
||||
passato, e che è iniziato il periodo di stabilizzazione del prossimo kernel.
|
||||
|
||||
@@ -109,17 +106,19 @@ tipo di perfezione difficilmente viene raggiunta; esistono troppe variabili
|
||||
in un progetto di questa portata. Arriva un punto dove ritardare il rilascio
|
||||
finale peggiora la situazione; la quantità di modifiche in attesa della
|
||||
prossima finestra di inclusione crescerà enormemente, creando ancor più
|
||||
regressioni al giro successivo. Quindi molti kernel 5.x escono con una
|
||||
regressioni al giro successivo. Quindi molti kernel escono con una
|
||||
manciata di regressioni delle quali, si spera, nessuna è grave.
|
||||
|
||||
Una volta che un rilascio stabile è fatto, il suo costante mantenimento è
|
||||
affidato al "squadra stabilità", attualmente composta da Greg Kroah-Hartman.
|
||||
Questa squadra rilascia occasionalmente degli aggiornamenti relativi al
|
||||
rilascio stabile usando la numerazione 5.x.y. Per essere presa in
|
||||
considerazione per un rilascio d'aggiornamento, una modifica deve:
|
||||
(1) correggere un baco importante (2) essere già inserita nel ramo principale
|
||||
per il prossimo sviluppo del kernel. Solitamente, passato il loro rilascio
|
||||
iniziale, i kernel ricevono aggiornamenti per più di un ciclo di sviluppo.
|
||||
affidato alla "squadra stabilità", attualmente composta da Greg Kroah-Hartman
|
||||
e Sasha Levin. Questa squadra rilascia occasionalmente degli aggiornamenti
|
||||
relativi al rilascio stabile usando la numerazione 9.x.y.
|
||||
|
||||
Per essere presa in considerazione per un rilascio d'aggiornamento, una
|
||||
modifica deve: (1) correggere un baco importante (2) essere già inserita nel
|
||||
ramo principale per il prossimo sviluppo del kernel. Solitamente, passato il
|
||||
loro rilascio iniziale, i kernel ricevono aggiornamenti per più di un ciclo di
|
||||
sviluppo.
|
||||
Quindi, per esempio, la storia del kernel 5.2 appare così (anno 2019):
|
||||
|
||||
============== ===============================
|
||||
@@ -314,7 +313,7 @@ the moment) all'indirizzo:
|
||||
frustrante; ci sono buone probabilità che non compili nemmeno.
|
||||
|
||||
I sorgenti principali per il prossimo ciclo d'integrazione delle patch
|
||||
è linux-next, gestito da Stephen Rothwell. I sorgenti linux-next sono, per
|
||||
è linux-next, gestito da Mark Brown. I sorgenti linux-next sono, per
|
||||
definizione, un'istantanea di come dovrà apparire il ramo principale dopo che
|
||||
la prossima finestra di inclusione si chiuderà. I linux-next sono annunciati
|
||||
sulla lista di discussione linux-kernel e linux-next nel momento in cui
|
||||
|
||||
@@ -48,7 +48,14 @@ l'invio delle patch alla comunità di sviluppo. Queste cose includono:
|
||||
- Verificare il codice fino al massimo che vi è consentito. Usate gli
|
||||
strumenti di debug del kernel, assicuratevi che il kernel compili con
|
||||
tutte le più ragionevoli combinazioni d'opzioni, usate cross-compilatori
|
||||
per compilare il codice per differenti architetture, eccetera.
|
||||
per compilare il codice per differenti architetture, eccetera. Aggiungete
|
||||
dei test, preferibilmente usando un framework di test già esistente come
|
||||
KUnit, e includeteli come un elemento separato della vostra serie (per
|
||||
maggiori informazioni sulle serie di patch, vedere la sezione successiva).
|
||||
Da notare che questo può essere obbligatorio quando si toccano alcuni
|
||||
sottosistemi. Per esempio, le funzioni di libreria (che risiedono in
|
||||
lib/) sono usate estensivamente quasi ovunque, e ci si aspetta che siano
|
||||
testate adeguatamente.
|
||||
|
||||
- Assicuratevi che il vostro codice sia conforme alla linee guida del
|
||||
kernel sullo stile del codice.
|
||||
@@ -224,10 +231,9 @@ implementate dalla patch::
|
||||
|
||||
Link: https://example.com/somewhere.html optional-other-stuff
|
||||
|
||||
Alcuni manutentori aggiungono quest'etichetta alla patch per fare riferimento
|
||||
alla più recente discussione pubblica. A volte questo è fatto automaticamente da
|
||||
alcuni strumenti come b4 or un *hook* git come quello descritto qui
|
||||
'Documentation/translations/it_IT/maintainer/configure-git.rst'
|
||||
Come indicato dal "Chief Penguin" (soprannome di Linus Torvalds), un'etichetta
|
||||
Link: dovrebbe essere aggiunta ad un commit solo se conduce a informazioni
|
||||
utili che non si trovano già nel commit stesso.
|
||||
|
||||
|
||||
Se il collegamento indirizza verso un rapporto su un baco risolto dalla patch,
|
||||
@@ -284,13 +290,23 @@ Le etichette in uso più comuni sono:
|
||||
Se esiste un rapporto disponibile sul web, allora
|
||||
L'etichetta dovrebbe essere seguita da un collegamento al suddetto rapporto.
|
||||
|
||||
- Suggested-by: indica che l'idea della patch è stata suggerita dalla persona
|
||||
menzionata, ed assicura che le venga dato credito per l'idea. Questo, si
|
||||
spera, la inviterà ad aiutarci ancora in futuro.
|
||||
|
||||
- Cc: la persona menzionata ha ricevuto una copia della patch ed ha avuto
|
||||
l'opportunità di commentarla.
|
||||
|
||||
State attenti ad aggiungere queste etichette alla vostra patch: solo "Cc:" può
|
||||
essere aggiunta senza il permesso esplicito della persona menzionata. Il più
|
||||
delle volte anche Reported-by: va bene, ma è sempre meglio chiedere specialmente
|
||||
se il baco è stato riportato in una comunicazione privata.
|
||||
State attenti ad aggiungere le suddette etichette alla vostra patch: tutte,
|
||||
tranne Cc:, Reported-by: e Suggested-by:, richiedono il permesso esplicito
|
||||
della persona menzionata. Per queste tre è sufficiente un permesso implicito,
|
||||
se la persona ha contribuito al kernel Linux usando quel nome e quell'indirizzo
|
||||
email secondo gli archivi di lore o la cronologia dei commit -- e, nel caso di
|
||||
Reported-by: e Suggested-by:, se la segnalazione o il suggerimento sono
|
||||
avvenuti pubblicamente. Da notare che bugzilla.kernel.org è, in questo senso,
|
||||
un luogo pubblico, ma gli indirizzi email usati lì sono privati; quindi non
|
||||
esponeteli nelle etichette, a meno che la persona non li abbia già usati in
|
||||
contributi precedenti.
|
||||
|
||||
Inviare la modifica
|
||||
-------------------
|
||||
|
||||
@@ -60,7 +60,7 @@ Quando sarete in grado di creare rami git che siano guardabili da altri,
|
||||
vi servirà, ovviamente, un server dal quale sia possibile attingere le vostre
|
||||
modifiche. Se avete un server accessibile da Internet, configurarlo per
|
||||
eseguire git-daemon è relativamente semplice . Altrimenti, iniziano a
|
||||
svilupparsi piattaforme che offrono spazi pubblici, e gratuiti (Github,
|
||||
svilupparsi piattaforme che offrono spazi pubblici, e gratuiti (GitHub,
|
||||
per esempio). Gli sviluppatori permanenti possono ottenere un account
|
||||
su kernel.org, ma non è proprio facile da ottenere; per maggiori informazioni
|
||||
consultate la pagina web https://kernel.org/faq/.
|
||||
|
||||
@@ -278,6 +278,56 @@ Per riassumere, vi serve un *commit* che includa:
|
||||
- *stub* di ripiego in ``kernel/sys_ni.c``
|
||||
|
||||
|
||||
.. _it_syscall_generic_6_11:
|
||||
|
||||
Dalla versione 6.11
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
A partire dalla versione 6.11 del kernel, l'implementazione generica delle
|
||||
chiamate di sistema per le seguenti architetture non richiede più modifiche
|
||||
a ``include/uapi/asm-generic/unistd.h``:
|
||||
|
||||
- arc
|
||||
- arm64
|
||||
- csky
|
||||
- hexagon
|
||||
- loongarch
|
||||
- nios2
|
||||
- openrisc
|
||||
- riscv
|
||||
|
||||
Al suo posto, dovete aggiornare ``scripts/syscall.tbl`` e, se necessario,
|
||||
modificare ``arch/*/kernel/Makefile.syscalls``.
|
||||
|
||||
Dato che ``scripts/syscall.tbl`` funge da tabella comune delle chiamate di
|
||||
sistema condivisa fra più architetture, in questa tabella è richiesto un
|
||||
nuovo elemento::
|
||||
|
||||
468 common xyzzy sys_xyzzy
|
||||
|
||||
Da notare che l'aggiunta di un elemento a ``scripts/syscall.tbl`` con l'ABI
|
||||
"common" influisce anche su tutte le architetture che condividono questa
|
||||
tabella. Per modifiche più limitate o specifiche di un'architettura,
|
||||
considerate l'uso di un'ABI specifica per l'architettura, o la definizione
|
||||
di una nuova.
|
||||
|
||||
Se viene introdotta una nuova ABI, per esempio ``xyz``, andranno fatti i
|
||||
corrispondenti aggiornamenti anche in ``arch/*/kernel/Makefile.syscalls``::
|
||||
|
||||
syscall_abis_{32,64} += xyz (...)
|
||||
|
||||
Per riassumere, vi serve un *commit* che includa:
|
||||
|
||||
- un'opzione ``CONFIG`` per la nuova funzione, normalmente in
|
||||
``init/Kconfig``
|
||||
- ``SYSCALL_DEFINEn(xyzzy, ...)`` per il punto d'accesso
|
||||
- il corrispondente prototipo in ``include/linux/syscalls.h``
|
||||
- un nuovo elemento in ``scripts/syscall.tbl``
|
||||
- (se necessario) aggiornamenti al Makefile in
|
||||
``arch/*/kernel/Makefile.syscalls``
|
||||
- *stub* di ripiego in ``kernel/sys_ni.c``
|
||||
|
||||
|
||||
Implementazione delle chiamate di sistema x86
|
||||
---------------------------------------------
|
||||
|
||||
@@ -396,6 +446,47 @@ Riassumendo, vi serve:
|
||||
- una voce ``__SC_COMP``, e non ``__SYSCALL``, in
|
||||
``include/uapi/asm-generic/unistd.h``
|
||||
|
||||
|
||||
Dalla versione 6.11
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Questo si applica a tutte le architetture elencate in
|
||||
:ref:`Dalla versione 6.11<it_syscall_generic_6_11>` sotto "Implementazione
|
||||
di chiamate di sistema generiche", eccetto arm64. Vedere
|
||||
:ref:`Chiamate di sistema compatibili (arm64)<it_compat_arm64>` per maggiori
|
||||
informazioni.
|
||||
|
||||
Dovete estendere la voce in ``scripts/syscall.tbl`` con una colonna
|
||||
aggiuntiva per indicare che un programma in spazio utente a 32-bit in
|
||||
esecuzione su un kernel a 64-bit deve invocare il punto d'accesso
|
||||
*compatibile*::
|
||||
|
||||
468 common xyzzy sys_xyzzy compat_sys_xyzzy
|
||||
|
||||
Riassumendo, vi serve:
|
||||
|
||||
- un ``COMPAT_SYSCALL_DEFINEn(xyzzy, ...)`` per il punto d'accesso
|
||||
*compatibile*
|
||||
- il corrispondente prototipo in ``include/linux/compat.h``
|
||||
- la modifica della voce in ``scripts/syscall.tbl`` per includere una
|
||||
colonna "compat" aggiuntiva
|
||||
- (se necessario) una struttura di mappatura a 32-bit in
|
||||
``include/linux/compat.h``
|
||||
|
||||
|
||||
.. _it_compat_arm64:
|
||||
|
||||
Chiamate di sistema compatibili (arm64)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Su arm64 esiste una tabella delle chiamate di sistema dedicata per le
|
||||
chiamate di sistema compatibili rivolte allo spazio utente a 32-bit
|
||||
(AArch32): ``arch/arm64/tools/syscall_32.tbl``. Dovete aggiungere una riga
|
||||
aggiuntiva a questa tabella specificando il punto d'accesso *compatibile*::
|
||||
|
||||
468 common xyzzy sys_xyzzy compat_sys_xyzzy
|
||||
|
||||
|
||||
Compatibilità delle chiamate di sistema (x86)
|
||||
---------------------------------------------
|
||||
|
||||
@@ -641,3 +732,6 @@ Riferimenti e fonti
|
||||
- Raccomandazioni da Linus Torvalds che le chiamate di sistema x32 dovrebbero
|
||||
favorire la compatibilità con le versioni a 64-bit piuttosto che quelle a 32-bit:
|
||||
https://lore.kernel.org/r/CA+55aFxfmwfB7jbbrXxa=K7VBYPfAvmu3XOkGrLbB1UFjX1+Ew@mail.gmail.com
|
||||
- Serie di patch che revisiona l'infrastruttura della tabella delle chiamate
|
||||
di sistema per usare scripts/syscall.tbl su più architetture:
|
||||
https://lore.kernel.org/lkml/20240704143611.2979589-1-arnd@kernel.org
|
||||
|
||||
@@ -604,8 +604,11 @@ il PERCHÉ.
|
||||
|
||||
Per favore, quando commentate una funzione dell'API del kernel usate il
|
||||
formato kernel-doc. Per maggiori dettagli, leggete i file in
|
||||
:ref::ref:`Documentation/translations/it_IT/doc-guide/ <it_doc_guide>` e in
|
||||
``script/kernel-doc``.
|
||||
:ref:`Documentation/translations/it_IT/doc-guide/ <it_doc_guide>` e in
|
||||
``tools/docs/kernel-doc``. Da notare che il pericolo di commentare troppo
|
||||
si applica anche ai commenti kernel-doc. Non aggiungete kernel-doc
|
||||
superfluo che si limita a ripetere quanto già ovvio dalla firma della
|
||||
funzione.
|
||||
|
||||
Lo stile preferito per i commenti più lunghi (multi-riga) è:
|
||||
|
||||
@@ -935,7 +938,7 @@ racchiusa in #ifdef, potete usare printk(KERN_DEBUG ...).
|
||||
---------------------
|
||||
|
||||
Il kernel fornisce i seguenti assegnatori ad uso generico:
|
||||
kmalloc(), kzalloc(), kmalloc_array(), kcalloc(), vmalloc(), e vzalloc().
|
||||
kmalloc(), kzalloc(), kmalloc_objs(), kzalloc_objs(), vmalloc(), e vzalloc().
|
||||
Per maggiori informazioni, consultate la documentazione dell'API:
|
||||
:ref:`Documentation/translations/it_IT/core-api/memory-allocation.rst <it_memory_allocation>`
|
||||
|
||||
@@ -957,13 +960,13 @@ Il modo preferito per assegnare un vettore è il seguente:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
p = kmalloc_array(n, sizeof(...), ...);
|
||||
p = kmalloc_objs(*p, n, ...);
|
||||
|
||||
Il modo preferito per assegnare un vettore a zero è il seguente:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
p = kcalloc(n, sizeof(...), ...);
|
||||
p = kzalloc_objs(*p, n, ...);
|
||||
|
||||
Entrambe verificano la condizione di overflow per la dimensione
|
||||
d'assegnamento n * sizeof(...), se accade ritorneranno NULL.
|
||||
@@ -1068,15 +1071,17 @@ può migliorare la leggibilità.
|
||||
18) Non reinventate le macro del kernel
|
||||
---------------------------------------
|
||||
|
||||
Il file di intestazione include/linux/kernel.h contiene un certo numero
|
||||
di macro che dovreste usare piuttosto che implementarne una qualche variante.
|
||||
Per esempio, se dovete calcolare la lunghezza di un vettore, sfruttate la
|
||||
macro:
|
||||
Ci sono molti file d'intestazione in include/linux/ che contengono un certo
|
||||
numero di macro che dovreste usare piuttosto che implementarne una qualche
|
||||
variante. Per esempio, se dovete calcolare la lunghezza di un vettore,
|
||||
sfruttate la macro:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
||||
|
||||
che è definita in array_size.h.
|
||||
|
||||
Analogamente, se dovete calcolare la dimensione di un qualche campo di una
|
||||
struttura, usate
|
||||
|
||||
@@ -1084,10 +1089,12 @@ struttura, usate
|
||||
|
||||
#define sizeof_field(t, f) (sizeof(((t*)0)->f))
|
||||
|
||||
Ci sono anche le macro min() e max() che, se vi serve, effettuano un controllo
|
||||
rigido sui tipi. Sentitevi liberi di leggere attentamente questo file
|
||||
d'intestazione per scoprire cos'altro è stato definito che non dovreste
|
||||
reinventare nel vostro codice.
|
||||
che è definita in stddef.h.
|
||||
|
||||
Ci sono anche le macro min() e max(), definite in minmax.h, che, se vi
|
||||
serve, effettuano un controllo rigido sui tipi. Sentitevi liberi di
|
||||
leggere attentamente questi file d'intestazione per scoprire cos'altro è
|
||||
stato definito che non dovreste reinventare nel vostro codice.
|
||||
|
||||
19) Linee di configurazione degli editor e altre schifezze
|
||||
-----------------------------------------------------------
|
||||
|
||||
@@ -141,26 +141,37 @@ ritorno di strcpy(). La funzione strscpy() non ritorna un puntatore
|
||||
alla destinazione, ma un contatore dei byte non NUL copiati (oppure
|
||||
un errno negativo se la stringa è stata troncata).
|
||||
|
||||
strncpy() su stringe terminate con NUL
|
||||
--------------------------------------
|
||||
L'utilizzo di strncpy() non fornisce alcuna garanzia sul fatto che
|
||||
il buffer di destinazione verrà terminato con il carattere NUL. Questo
|
||||
potrebbe portare a diversi overflow di lettura o altri malfunzionamenti
|
||||
causati, appunto, dalla mancanza del terminatore. Questa estende la
|
||||
terminazione nel buffer di destinazione quando la stringa d'origine è più
|
||||
corta; questo potrebbe portare ad una penalizzazione delle prestazioni per
|
||||
chi usa solo stringe terminate. La versione sicura da usare è
|
||||
strscpy(), tuttavia va prestata attenzione a tutti quei casi dove
|
||||
viene usato il valore di ritorno di strncpy(). La funzione strscpy()
|
||||
non ritorna un puntatore alla destinazione, ma un contatore dei byte
|
||||
non NUL copiati (oppure un errno negativo se la stringa è stata
|
||||
troncata). Tutti i casi che necessitano di estendere la
|
||||
terminazione con NUL dovrebbero usare strscpy_pad().
|
||||
strncpy()
|
||||
---------
|
||||
La funzione strncpy() è stata rimossa dal kernel. Tutti i chiamanti che
|
||||
la usavano sono stati migrati verso alternative più sicure.
|
||||
|
||||
Se il chiamate no usa stringhe terminate con NUL, allore strncpy()
|
||||
può continuare ad essere usata, ma i buffer di destinazione devono essere
|
||||
marchiati con l'attributo `__nonstring <https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html>`_
|
||||
per evitare avvisi durante la compilazione.
|
||||
strncpy() non garantiva che il buffer di destinazione venisse terminato
|
||||
con il carattere NUL, causando overflow di lettura lineari e altri
|
||||
malfunzionamenti. Inoltre estendeva incondizionatamente la terminazione
|
||||
NUL nel buffer di destinazione, il che era una penalizzazione delle
|
||||
prestazioni superflua per i chiamanti che usavano solo stringhe
|
||||
terminate con NUL. A causa dei suoi vari comportamenti, si trattava di
|
||||
un'API ambigua per determinare quale fosse la reale intenzione
|
||||
dell'autore per la copia.
|
||||
|
||||
I sostituti di strncpy() sono:
|
||||
|
||||
- strscpy(), quando la destinazione deve essere terminata con NUL.
|
||||
- strscpy_pad(), quando la destinazione deve essere terminata con NUL
|
||||
ed estesa con zeri (per esempio, strutture che attraversano i confini
|
||||
dei privilegi).
|
||||
- memtostr(), per destinazioni terminate con NUL a partire da sorgenti
|
||||
a larghezza fissa non terminate con NUL (con l'attributo
|
||||
`__nonstring` sulla sorgente).
|
||||
- memtostr_pad(), per lo stesso caso, ma con estensione tramite zeri.
|
||||
- strtomem(), per destinazioni a larghezza fissa non terminate con NUL,
|
||||
con l'attributo `__nonstring` sulla destinazione.
|
||||
- strtomem_pad(), per destinazioni non terminate con NUL che
|
||||
necessitano anche di estensione tramite zeri.
|
||||
- memcpy_and_pad(), per copie limitate da sorgenti potenzialmente non
|
||||
terminate, quando la dimensione della destinazione è un valore
|
||||
determinato a runtime.
|
||||
|
||||
strlcpy()
|
||||
---------
|
||||
@@ -407,3 +418,37 @@ La macro di supporto dev'essere usata::
|
||||
DECLARE_FLEX_ARRAY(struct type2, two);
|
||||
};
|
||||
};
|
||||
|
||||
Assegnazioni kmalloc con codice esplicito per oggetti struct
|
||||
--------------------------------------------------------------
|
||||
Eseguire assegnazioni con codice esplicito per le allocazioni della
|
||||
famiglia kmalloc() impedisce al kernel (e al compilatore) di poter
|
||||
esaminare il tipo della variabile a cui viene fatta l'assegnazione, il
|
||||
che limita ogni possibile introspezione utile per l'allineamento, per
|
||||
l'overflow, o per un ulteriore irrobustimento. Le macro della famiglia
|
||||
kmalloc_obj() forniscono questa introspezione, e possono essere usate
|
||||
per i più comuni schemi di codice per l'allocazione di un singolo
|
||||
oggetto, di un vettore di oggetti, o di un oggetto con un array
|
||||
flessibile. Per esempio, queste assegnazioni con codice esplicito::
|
||||
|
||||
ptr = kmalloc(sizeof(*ptr), gfp);
|
||||
ptr = kzalloc(sizeof(*ptr), gfp);
|
||||
ptr = kmalloc_array(count, sizeof(*ptr), gfp);
|
||||
ptr = kcalloc(count, sizeof(*ptr), gfp);
|
||||
ptr = kmalloc(struct_size(ptr, flex_member, count), gfp);
|
||||
ptr = kmalloc(sizeof(struct foo), gfp);
|
||||
|
||||
diventano, rispettivamente::
|
||||
|
||||
ptr = kmalloc_obj(*ptr [, gfp] );
|
||||
ptr = kzalloc_obj(*ptr [, gfp] );
|
||||
ptr = kmalloc_objs(*ptr, count [, gfp] );
|
||||
ptr = kzalloc_objs(*ptr, count [, gfp] );
|
||||
ptr = kmalloc_flex(*ptr, flex_member, count [, gfp] );
|
||||
__auto_type ptr = kmalloc_obj(struct foo [, gfp] );
|
||||
|
||||
L'argomento gfp è opzionale, e il suo valore predefinito è GFP_KERNEL.
|
||||
Se `ptr->flex_member` è annotato con __counted_by(), l'allocazione
|
||||
fallirà automaticamente se `count` è più grande del valore massimo
|
||||
rappresentabile che può essere memorizzato nel membro contatore
|
||||
associato a `flex_member`.
|
||||
|
||||
@@ -335,7 +335,14 @@ Per rendere l'editor interno un po' più sensato, fate così:
|
||||
|
||||
- impostate ``mailnews.send_plaintext_flowed`` a ``false``
|
||||
|
||||
- impostate ``mailnews.wraplength`` da ``72`` a ``0``
|
||||
- impostate ``mailnews.wraplength`` da ``72`` a ``0`` **oppure** installate
|
||||
l'estensione "Toggle Line Wrap"
|
||||
|
||||
https://github.com/jan-kiszka/togglelinewrap
|
||||
|
||||
https://addons.thunderbird.net/thunderbird/addon/toggle-line-wrap
|
||||
|
||||
per controllare questo registro al volo.
|
||||
|
||||
- Non scrivete messaggi HTML! Andate sulla finestra principale ed aprite la
|
||||
schermata :menuselection:`Menu principale-->Impostazioni account-->nome@unserver.ovunque-->Composizioni e indirizzi`.
|
||||
|
||||
@@ -63,6 +63,7 @@ della comunità del kernel (e oltre).
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
license-rules
|
||||
code-of-conduct
|
||||
kernel-enforcement-statement
|
||||
kernel-driver-statement
|
||||
@@ -78,6 +79,11 @@ con riguardo. I documenti che seguono descrivono le nostre politiche riguardo al
|
||||
trattamento di alcune classi particolari di bachi: le regressioni e i problemi
|
||||
di sicurezza.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
security-bugs
|
||||
|
||||
Informazioni per i manutentori
|
||||
------------------------------
|
||||
|
||||
@@ -86,6 +92,7 @@ Come trovare le persone che accetteranno le vostre modifiche.
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
maintainer-handbooks
|
||||
maintainers
|
||||
|
||||
Altri documenti
|
||||
@@ -98,6 +105,7 @@ degli sviluppatori:
|
||||
:maxdepth: 1
|
||||
|
||||
kernel-docs
|
||||
deprecated
|
||||
|
||||
.. only:: subproject and html
|
||||
|
||||
|
||||
@@ -75,7 +75,10 @@ Sintassi degli identificatori di licenza
|
||||
possibile di un file che possa contenere commenti. Per la maggior parte
|
||||
dei file questa è la prima riga, fanno eccezione gli script che richiedono
|
||||
come prima riga '#!PATH_TO_INTERPRETER'. Per questi script l'identificativo
|
||||
SPDX finisce nella seconda riga.
|
||||
di licenza SPDX finisce nella seconda riga.
|
||||
|
||||
Alla riga dell'identificativo di licenza possono seguire, se lo si
|
||||
desidera, una o più righe SPDX-FileCopyrightText.
|
||||
|
||||
|
|
||||
|
||||
@@ -486,10 +489,13 @@ _`MODULE_LICENSE`
|
||||
file sorgenti.
|
||||
|
||||
"Proprietary" Questo modulo è rilasciato con licenza
|
||||
proprietaria. Questa stringa è solo per i
|
||||
moduli proprietari di terze parti e non può
|
||||
essere usata per quelli che risiedono nei
|
||||
sorgenti del kernel. I moduli etichettati in
|
||||
proprietaria. "Proprietary" va inteso
|
||||
unicamente come "la licenza non è compatibile
|
||||
con la GPLv2". Questa stringa è solo per i
|
||||
moduli di terze parti non compatibili con la
|
||||
GPLv2 e non può essere usata per quelli che
|
||||
risiedono nei sorgenti del kernel. I moduli
|
||||
etichettati in
|
||||
questo modo stanno contaminando il kernel e
|
||||
gli viene assegnato un flag 'P'; quando
|
||||
vengono caricati, il caricatore di moduli del
|
||||
|
||||
@@ -5,8 +5,6 @@
|
||||
:Original: Documentation/process/maintainer-handbooks.rst
|
||||
:Translator: Federico Vaga <federico.vaga@vaga.pv.it>
|
||||
|
||||
.. _it_maintainer_handbooks_main:
|
||||
|
||||
Note sul processo di sviluppo dei sottosistemi e dei sorgenti dei manutentori
|
||||
=============================================================================
|
||||
|
||||
@@ -15,10 +13,13 @@ sviluppo dedicate ai sottosistemi che vanno ad integrare quelle più generali
|
||||
descritte in :ref:`Documentation/translations/it_IT/process
|
||||
<it_development_process_main>`.
|
||||
|
||||
Indice:
|
||||
Per gli sviluppatori, qui di seguito sono elencate tutte le guide specifiche
|
||||
per i sottosistemi conosciute. Se il sottosistema al quale state contribuendo
|
||||
non ha una guida elencata qui, è lecito chiedere chiarimenti sulle domande
|
||||
sollevate in Documentation/maintainer/maintainer-entry-profile.rst.
|
||||
|
||||
.. toctree::
|
||||
:numbered:
|
||||
:maxdepth: 2
|
||||
Per i manutentori, si consiglia di documentare ulteriori requisiti ed
|
||||
aspettative se le sottomissioni trascurano sistematicamente specifici criteri
|
||||
di sottomissione. Vedere Documentation/maintainer/maintainer-entry-profile.rst.
|
||||
|
||||
maintainer-tip
|
||||
.. maintainers-profile-toc::
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
.. include:: ../disclaimer-ita.rst
|
||||
|
||||
:Original: :ref:`Documentation/process/maintainer-pgp-guide.rst <pgpguide>`
|
||||
@@ -57,7 +59,7 @@ pratiche di sicurezza messe in atto.
|
||||
|
||||
Il principio sopra indicato è la ragione per la quale è necessaria questa
|
||||
guida. Vogliamo essere sicuri che il riporre la fiducia negli sviluppatori
|
||||
non sia fatto semplicemente per incolpare qualcun'altro per future falle di
|
||||
non sia fatto unicamente per incolpare qualcun'altro per future falle di
|
||||
sicurezza. L'obiettivo è quello di fornire una serie di linee guida che gli
|
||||
sviluppatori possano seguire per creare un ambiente di lavoro sicuro e
|
||||
salvaguardare le chiavi PGP usate nello stabilire l'integrità del kernel Linux
|
||||
@@ -68,7 +70,7 @@ stesso.
|
||||
Strumenti PGP
|
||||
=============
|
||||
|
||||
Usare GnuPG 2.2 o successivo
|
||||
Usare GnuPG 2.4 o successivo
|
||||
----------------------------
|
||||
|
||||
La vostra distribuzione potrebbe avere già installato GnuPG, dovete solo
|
||||
@@ -77,9 +79,10 @@ usate::
|
||||
|
||||
$ gpg --version | head -n1
|
||||
|
||||
Se state utilizzando la version 2.2 o successiva, allora siete pronti a partire.
|
||||
Se invece state usando una versione precedente, allora alcuni comandi elencati
|
||||
in questa guida potrebbero non funzionare.
|
||||
Se state utilizzando la versione 2.4 o successiva, allora siete pronti a
|
||||
partire. Se invece state usando una versione precedente, allora si tratta
|
||||
di una versione di GnuPG non più mantenuta, e alcuni comandi elencati in
|
||||
questa guida potrebbero non funzionare.
|
||||
|
||||
Configurare le opzioni di gpg-agent
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -214,12 +217,6 @@ possano ricevere la vostra nuova sottochiave::
|
||||
|
||||
$ gpg --send-key [fpr]
|
||||
|
||||
.. note:: Supporto ECC in GnuPG
|
||||
|
||||
Tenete presente che se avete intenzione di usare un dispositivo che non
|
||||
supporta chiavi ED25519 ECC, allora dovreste usare "nistp256" al posto di
|
||||
"ed25519". Più avanti ci sono alcune raccomandazioni per i dispositivi.
|
||||
|
||||
Copia di riserva della chiave primaria per gestire il recupero da disastro
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
@@ -227,7 +224,7 @@ Maggiori sono le firme di altri sviluppatori che vengono applicate alla vostra,
|
||||
maggiori saranno i motivi per avere una copia di riserva che non sia digitale,
|
||||
al fine di effettuare un recupero da disastro.
|
||||
|
||||
Il modo migliore per creare una copia fisica della vostra chiave privata è
|
||||
Un buon modo per creare una copia fisica della vostra chiave privata è
|
||||
l'uso del programma ``paperkey``. Consultate ``man paperkey`` per maggiori
|
||||
dettagli sul formato dell'output ed i suoi punti di forza rispetto ad altre
|
||||
soluzioni. Paperkey dovrebbe essere già pacchettizzato per la maggior parte
|
||||
@@ -238,11 +235,11 @@ vostra chiave privata::
|
||||
|
||||
$ gpg --export-secret-key [fpr] | paperkey -o /tmp/key-backup.txt
|
||||
|
||||
Stampate il file (o fate un pipe direttamente verso lpr), poi prendete
|
||||
una penna e scrivete la passphare sul margine del foglio. **Questo è
|
||||
caldamente consigliato** perché la copia cartacea è comunque criptata con
|
||||
la passphrase, e se mai doveste cambiarla non vi ricorderete qual'era al
|
||||
momento della creazione di quella copia -- *garantito*.
|
||||
Stampate il file, poi prendete una penna e scrivete la passphare sul
|
||||
margine del foglio. **Questo è caldamente consigliato** perché la copia
|
||||
cartacea è comunque criptata con la passphrase, e se mai doveste
|
||||
cambiarla non vi ricorderete qual'era al momento della creazione di
|
||||
quella copia -- *garantito*.
|
||||
|
||||
Mettete la copia cartacea e la passphrase scritta a mano in una busta e
|
||||
mettetela in un posto sicuro e ben protetto, preferibilmente fuori casa,
|
||||
@@ -250,10 +247,9 @@ magari in una cassetta di sicurezza in banca.
|
||||
|
||||
.. note::
|
||||
|
||||
Probabilmente la vostra stampante non è più quello stupido dispositivo
|
||||
connesso alla porta parallela, ma dato che il suo output è comunque
|
||||
criptato con la passphrase, eseguire la stampa in un sistema "cloud"
|
||||
moderno dovrebbe essere comunque relativamente sicuro.
|
||||
La chiave è comunque criptata con la vostra passphrase, quindi
|
||||
stampare anche con stampanti moderne "integrate nel cloud" dovrebbe
|
||||
rimanere un'operazione relativamente sicura.
|
||||
|
||||
Copia di riserva di tutta la cartella GnuPG
|
||||
-------------------------------------------
|
||||
@@ -269,17 +265,17 @@ prontezza rispetto al recupero da disastro che abbiamo risolto con
|
||||
vostra chiave Certify -- ovvero quando fate modifiche alle vostre chiavi o
|
||||
firmate le chiavi di altre persone ad una conferenza o ad un gruppo d'incontro.
|
||||
|
||||
Incominciate con una piccola chiavetta di memoria USB (preferibilmente due)
|
||||
che userete per le copie di riserva. Dovrete criptarle usando LUKS -- fate
|
||||
riferimento alla documentazione della vostra distribuzione per capire come
|
||||
fare.
|
||||
Incominciate con un supporto di memoria esterno (preferibilmente due) che
|
||||
userete per le copie di riserva. Dovrete creare su questo dispositivo una
|
||||
partizione criptata usando LUKS -- fate riferimento alla documentazione
|
||||
della vostra distribuzione per capire come fare.
|
||||
|
||||
Per la passphrase di criptazione, potete usare la stessa della vostra chiave
|
||||
primaria.
|
||||
|
||||
Una volta che il processo di criptazione è finito, reinserite il disco USB ed
|
||||
assicurativi che venga montato correttamente. Copiate interamente la cartella
|
||||
``.gnugp`` nel disco criptato::
|
||||
Una volta che il processo di criptazione è finito, reinserite il vostro
|
||||
dispositivo ed assicurativi che venga montato correttamente. Copiate
|
||||
interamente la cartella ``.gnugp`` nel disco criptato::
|
||||
|
||||
$ cp -a ~/.gnupg /media/disk/foo/gnupg-backup
|
||||
|
||||
@@ -288,11 +284,11 @@ Ora dovreste verificare che tutto continui a funzionare::
|
||||
$ gpg --homedir=/media/disk/foo/gnupg-backup --list-key [fpr]
|
||||
|
||||
Se non vedete errori, allora dovreste avere fatto tutto con successo.
|
||||
Smontate il disco USB, etichettatelo per bene di modo da evitare di
|
||||
distruggerne il contenuto non appena vi serve una chiavetta USB a caso, ed
|
||||
infine mettetelo in un posto sicuro -- ma non troppo lontano, perché vi servirà
|
||||
di tanto in tanto per modificare le identità, aggiungere o revocare
|
||||
sottochiavi, o firmare le chiavi di altre persone.
|
||||
Smontate il dispositivo, etichettatelo per bene di modo da evitare di
|
||||
sovrascriverlo per errore, ed infine mettetelo in un posto sicuro -- ma non
|
||||
troppo lontano, perché vi servirà di tanto in tanto per modificare le
|
||||
identità, aggiungere o revocare sottochiavi, o firmare le chiavi di altre
|
||||
persone.
|
||||
|
||||
Togliete la chiave primaria dalla vostra home
|
||||
---------------------------------------------
|
||||
@@ -321,7 +317,7 @@ cartella home e la si archivia su un dispositivo disconnesso.
|
||||
che stiamo per fare renderà la vostra chiave inutile se non avete delle
|
||||
copie di riserva utilizzabili!
|
||||
|
||||
Per prima cosa, identificate il keygrip della vostra chiave primaria::
|
||||
Per prima cosa, identificate il "keygrip" della vostra chiave primaria::
|
||||
|
||||
$ gpg --with-keygrip --list-key [fpr]
|
||||
|
||||
@@ -346,7 +342,7 @@ ad un file nella cartella ``~/.gnupg``::
|
||||
2222000000000000000000000000000000000000.key
|
||||
3333000000000000000000000000000000000000.key
|
||||
|
||||
Quello che dovrete fare è rimuovere il file .key che corrisponde al keygrip
|
||||
È sufficiente rimuovere il file .key che corrisponde al keygrip
|
||||
della chiave primaria::
|
||||
|
||||
$ cd ~/.gnupg/private-keys-v1.d
|
||||
@@ -391,8 +387,9 @@ Inoltre, ogni volta che viene fatta un'operazione con GnuPG, le chiavi vengono
|
||||
caricate nella memoria di sistema e potrebbero essere rubate con l'uso di
|
||||
malware sofisticati (pensate a Meltdown e a Spectre).
|
||||
|
||||
Il miglior modo per proteggere le proprie chiave è di spostarle su un
|
||||
dispositivo specializzato in grado di effettuare operazioni smartcard.
|
||||
Un buon modo per proteggere completamente le vostre chiavi è di spostarle
|
||||
su un dispositivo specializzato in grado di effettuare operazioni
|
||||
smartcard.
|
||||
|
||||
I benefici di una smartcard
|
||||
---------------------------
|
||||
@@ -401,12 +398,13 @@ Una smartcard contiene un chip crittografico che è capace di immagazzinare
|
||||
le chiavi private ed effettuare operazioni crittografiche direttamente sulla
|
||||
carta stessa. Dato che la chiave non lascia mai la smartcard, il sistema
|
||||
operativo usato sul computer non sarà in grado di accedere alle chiavi.
|
||||
Questo è molto diverso dai dischi USB criptati che abbiamo usato allo scopo di
|
||||
avere una copia di riserva sicura -- quando il dispositivo USB è connesso e
|
||||
montato, il sistema operativo potrà accedere al contenuto delle chiavi private.
|
||||
Questo è molto diverso dal dispositivo di memoria criptato che abbiamo usato
|
||||
allo scopo di avere una copia di riserva sicura -- quando quel dispositivo
|
||||
è connesso e montato, il sistema operativo potrà accedere al contenuto
|
||||
delle chiavi private.
|
||||
|
||||
L'uso di un disco USB criptato non può sostituire le funzioni di un dispositivo
|
||||
capace di operazioni di tipo smartcard.
|
||||
L'uso di un dispositivo di memoria esterno criptato non può sostituire le
|
||||
funzioni di un dispositivo capace di operazioni di tipo smartcard.
|
||||
|
||||
Dispositivi smartcard disponibili
|
||||
---------------------------------
|
||||
@@ -417,28 +415,27 @@ implementi le funzionalità delle smartcard. Sul mercato ci sono diverse
|
||||
soluzioni disponibili:
|
||||
|
||||
- `Nitrokey Start`_: è Open hardware e Free Software, è basata sul progetto
|
||||
`GnuK`_ della FSIJ. Questo è uno dei pochi dispositivi a supportare le chiavi
|
||||
ECC ED25519, ma offre meno funzionalità di sicurezza (come la resistenza
|
||||
alla manomissione o alcuni attacchi ad un canale laterale).
|
||||
- `Nitrokey Pro 2`_: è simile alla Nitrokey Start, ma è più resistente alla
|
||||
manomissione e offre più funzionalità di sicurezza. La Pro 2 supporta la
|
||||
crittografia ECC (NISTP).
|
||||
`GnuK`_ della FSIJ. È una delle opzioni più economiche, ma offre meno
|
||||
funzionalità di sicurezza (come la resistenza alla manomissione o alcuni
|
||||
attacchi ad un canale laterale).
|
||||
- `Nitrokey 3`_: è simile alla Nitrokey Start, ma è più resistente alla
|
||||
manomissione, offre più funzionalità di sicurezza e diverse forme USB.
|
||||
Supporta la crittografia ECC (ED25519 e NISTP).
|
||||
- `Yubikey 5`_: l'hardware e il software sono proprietari, ma è più economica
|
||||
della Nitrokey Pro ed è venduta anche con porta USB-C il che è utile con i
|
||||
computer portatili più recenti. In aggiunta, offre altre funzionalità di
|
||||
sicurezza come FIDO, U2F, e ora supporta anche le chiavi ECC (NISTP)
|
||||
della Nitrokey a parità di funzionalità. Supporta la crittografia ECC
|
||||
(ED25519 e NISTP).
|
||||
|
||||
La vostra scelta dipenderà dal costo, la disponibilità nella vostra regione, e
|
||||
sulla scelta fra dispositivi aperti e proprietari.
|
||||
|
||||
.. note::
|
||||
|
||||
Se siete nella lista MAINTAINERS o avete un profilo su kernel.org, allora
|
||||
`potrete avere gratuitamente una Nitrokey Start`_ grazie alla fondazione
|
||||
Linux.
|
||||
Se siete elencati in una voce `M:` nel file MAINTAINERS o avete un
|
||||
profilo su kernel.org, allora `potrete avere gratuitamente una
|
||||
Nitrokey Start`_ grazie alla fondazione Linux.
|
||||
|
||||
.. _`Nitrokey Start`: https://shop.nitrokey.com/shop/product/nitrokey-start-6
|
||||
.. _`Nitrokey Pro 2`: https://shop.nitrokey.com/shop/product/nitrokey-pro-2-3
|
||||
.. _`Nitrokey Start`: https://www.nitrokey.com/products/nitrokeys
|
||||
.. _`Nitrokey 3`: https://www.nitrokey.com/products/nitrokeys
|
||||
.. _`Yubikey 5`: https://www.yubico.com/product/yubikey-5-overview/
|
||||
.. _Gnuk: https://www.fsij.org/doc-gnuk/
|
||||
.. _`potrete avere gratuitamente una Nitrokey Start`: https://www.kernel.org/nitrokey-digital-tokens-for-kernel-developers.html
|
||||
@@ -474,7 +471,7 @@ dell'amministratore viene usato così raramente che è inevitabile dimenticarsel
|
||||
se non lo si annota.
|
||||
|
||||
Tornando al nostro menu, potete impostare anche altri valori (come il nome,
|
||||
il sesso, informazioni d'accesso, eccetera), ma non sono necessari e aggiunge
|
||||
il genere, informazioni d'accesso, eccetera), ma non sono necessari e aggiunge
|
||||
altre informazioni sulla carta che potrebbero trapelare in caso di smarrimento.
|
||||
|
||||
.. note::
|
||||
@@ -636,7 +633,7 @@ eseguite::
|
||||
Se per voi è più facile da memorizzare, potete anche utilizzare una data
|
||||
specifica (per esempio, il vostro compleanno o capodanno)::
|
||||
|
||||
$ gpg --quick-set-expire [fpr] 2025-07-01
|
||||
$ gpg --quick-set-expire [fpr] 2038-07-01
|
||||
|
||||
Ricordatevi di inviare l'aggiornamento ai keyserver::
|
||||
|
||||
@@ -676,8 +673,8 @@ storia completa del progetto, inclusi i suoi tag, i commit ed i rami. Tuttavia,
|
||||
con i centinaia di repositori clonati che ci sono in giro, come si fa a
|
||||
verificare che la loro copia di linux.git non è stata manomessa da qualcuno?
|
||||
|
||||
Oppure, cosa succede se viene scoperta una backdoor nel codice e la riga
|
||||
"Autore" dice che sei stato tu, mentre tu sei abbastanza sicuro di
|
||||
Oppure, cosa succede se viene scoperto del codice malevolo nel kernel e la
|
||||
riga "Autore" dice che sei stato tu, mentre tu sei abbastanza sicuro di
|
||||
`non averci niente a che fare`_?
|
||||
|
||||
Per risolvere entrambi i problemi, Git ha introdotto l'integrazione con PGP.
|
||||
@@ -732,9 +729,9 @@ Il merge conterrà qualcosa di simile::
|
||||
# gpg: Signature made [...]
|
||||
# gpg: Good signature from [...]
|
||||
|
||||
Se state verificando il tag di qualcun altro, allora dovrete importare
|
||||
la loro chiave PGP. Fate riferimento alla sezione ":ref:`it_verify_identities`"
|
||||
che troverete più avanti.
|
||||
Se state verificando il tag di qualcun altro, allora dovrete prima
|
||||
importare la loro chiave PGP. Fate riferimento alla sezione
|
||||
":ref:`it_verify_identities`" che troverete più avanti.
|
||||
|
||||
Configurare git per firmare sempre i tag con annotazione
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@@ -748,16 +745,17 @@ dovete impostare la seguente opzione globale::
|
||||
Come usare commit firmati
|
||||
-------------------------
|
||||
|
||||
Creare dei commit firmati è facile, ma è molto più difficile utilizzarli
|
||||
nello sviluppo del kernel linux per via del fatto che ci si affida alle
|
||||
liste di discussione e questo modo di procedere non mantiene le firme PGP
|
||||
nei commit. In aggiunta, quando si usa *rebase* nel proprio repositorio
|
||||
locale per allinearsi al kernel anche le proprie firme PGP verranno scartate.
|
||||
Per questo motivo, la maggior parte degli sviluppatori del kernel non si
|
||||
preoccupano troppo di firmare i propri commit ed ignoreranno quelli firmati
|
||||
che si trovano in altri repositori usati per il proprio lavoro.
|
||||
È anche possibile creare dei commit firmati, ma la loro utilità nello
|
||||
sviluppo del kernel Linux è limitata. Il flusso di lavoro per contribuire
|
||||
al kernel si basa sull'invio di patch, e la conversione dei commit in
|
||||
patch non preserva le firme PGP dei commit. Inoltre, quando si esegue il
|
||||
*rebase* del proprio repositorio su un ramo principale più recente, le
|
||||
firme PGP dei commit verranno scartate. Per questo motivo, la maggior
|
||||
parte degli sviluppatori del kernel non si preoccupano troppo di firmare
|
||||
i propri commit ed ignoreranno quelli firmati che si trovano in altri
|
||||
repositori usati per il proprio lavoro.
|
||||
|
||||
Tuttavia, se avete il vostro repositorio di lavoro disponibile al pubblico
|
||||
Detto ciò, se avete il vostro repositorio di lavoro disponibile al pubblico
|
||||
su un qualche servizio di hosting git (kernel.org, infradead.org, ozlabs.org,
|
||||
o altri), allora la raccomandazione è di firmare tutti i vostri commit
|
||||
anche se gli sviluppatori non ne beneficeranno direttamente.
|
||||
@@ -769,17 +767,18 @@ Vi raccomandiamo di farlo per i seguenti motivi:
|
||||
esternamente che hanno firme PGP sui commit avranno un certo valore a
|
||||
questo scopo.
|
||||
2. Se dovesse mai capitarvi di clonare il vostro repositorio locale (per
|
||||
esempio dopo un danneggiamento del disco), la firma vi permetterà di
|
||||
verificare l'integrità del repositorio prima di riprendere il lavoro.
|
||||
esempio dopo aver reinstallato il vostro sistema), la firma vi
|
||||
permetterà di verificare l'integrità del repositorio prima di
|
||||
riprendere il lavoro.
|
||||
3. Se qualcuno volesse usare *cherry-pick* sui vostri commit, allora la firma
|
||||
permetterà di verificare l'integrità dei commit prima di applicarli.
|
||||
|
||||
Creare commit firmati
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Per creare un commit firmato, dovete solamente aggiungere l'opzione ``-S``
|
||||
al comando ``git commit`` (si usa la lettera maiuscola per evitare
|
||||
conflitti con un'altra opzione)::
|
||||
Per creare un commit firmato, aggiungete l'opzione ``-S`` al comando
|
||||
``git commit`` (si usa la lettera maiuscola per evitare conflitti con
|
||||
un'altra opzione)::
|
||||
|
||||
$ git commit -S
|
||||
|
||||
@@ -814,6 +813,11 @@ un'attestazione delle firme crittografiche (tipo DKIM):
|
||||
Installare e configurate patatt
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. note::
|
||||
|
||||
Se usate B4 per inviare le vostre patch, patatt è già installato ed
|
||||
integrato nel vostro flusso di lavoro.
|
||||
|
||||
Lo strumento patatt è disponibile per diverse distribuzioni, dunque cercatelo
|
||||
prima lì. Oppure potete installarlo usano pypi "``pip install patatt``"
|
||||
|
||||
@@ -855,7 +859,7 @@ esempio::
|
||||
Come verificare l'identità degli sviluppatori del kernel
|
||||
========================================================
|
||||
|
||||
Firmare i tag e i commit è facile, ma come si fa a verificare che la chiave
|
||||
Firmare tag e commit è semplice, ma come si fa a verificare che la chiave
|
||||
usata per firmare qualcosa appartenga davvero allo sviluppatore e non ad un
|
||||
impostore?
|
||||
|
||||
@@ -892,7 +896,7 @@ Se avete un account kernel.org, al fine di rendere più utile l'uso di WKD
|
||||
da parte di altri sviluppatori del kernel, dovreste `aggiungere alla vostra
|
||||
chiave lo UID di kernel.org`_.
|
||||
|
||||
.. _`aggiungere alla vostra chiave lo UID di kernel.org`: https://korg.wiki.kernel.org/userdoc/mail#adding_a_kernelorg_uid_to_your_pgp_key
|
||||
.. _`aggiungere alla vostra chiave lo UID di kernel.org`: https://korg.docs.kernel.org/mail.html#adding-a-kernel-org-uid-to-your-pgp-key
|
||||
|
||||
Web of Trust (WOT) o Trust on First Use (TOFU)
|
||||
----------------------------------------------
|
||||
@@ -905,7 +909,7 @@ essere le entità di certificazione di cui dovreste fidarvi, PGP lascia
|
||||
la responsabilità ad ogni singolo utente.
|
||||
|
||||
Sfortunatamente, solo poche persone capiscono come funziona la rete di fiducia.
|
||||
Nonostante sia un importante aspetto della specifica OpenPGP, recentemente
|
||||
Nonostante sia tuttora una parte importante della specifica OpenPGP, recentemente
|
||||
le versioni di GnuPG (2.2 e successive) hanno implementato un meccanisco
|
||||
alternativo chiamato "Trust on First Use" (TOFU). Potete pensare a TOFU come
|
||||
"ad un approccio all fidicia simile ad SSH". In SSH, la prima volta che vi
|
||||
@@ -915,8 +919,8 @@ SSH vi avviserà e si rifiuterà di connettersi, obbligandovi a prendere una
|
||||
decisione circa la fiducia che riponete nella nuova chiave. In modo simile,
|
||||
la prima volta che importate la chiave PGP di qualcuno, si assume sia valida.
|
||||
Se ad un certo punto GnuPG trova un'altra chiave con la stessa identità,
|
||||
entrambe, la vecchia e la nuova, verranno segnate come invalide e dovrete
|
||||
verificare manualmente quale tenere.
|
||||
entrambe, la vecchia e la nuova, verranno segnate per la verifica e dovrete
|
||||
controllare manualmente quale tenere.
|
||||
|
||||
Vi raccomandiamo di usare il meccanisco TOFU+PGP (che è la nuova configurazione
|
||||
di base di GnuPG v2). Per farlo, aggiungete (o modificate) l'impostazione
|
||||
@@ -924,6 +928,8 @@ di base di GnuPG v2). Per farlo, aggiungete (o modificate) l'impostazione
|
||||
|
||||
trust-model tofu+pgp
|
||||
|
||||
.. _it_kernel_org_trust_repository:
|
||||
|
||||
Usare il repositorio kernel.org per il web of trust
|
||||
---------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
:Original: Documentation/process/maintainers.rst
|
||||
|
||||
Lista dei manutentori e come inviare modifiche al kernel
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
Linguaggio di programmazione
|
||||
============================
|
||||
|
||||
Il kernel è scritto nel linguaggio di programmazione C [it-c-language]_.
|
||||
Più precisamente, il kernel viene compilato con ``gcc`` [it-gcc]_ usando
|
||||
Il kernel Linux è scritto nel linguaggio di programmazione C [it-c-language]_.
|
||||
Più precisamente, viene compilato con ``gcc`` [it-gcc]_ usando
|
||||
l'opzione ``-std=gnu11`` [it-gcc-c-dialect-options]_: il dialetto GNU
|
||||
dello standard ISO C11.
|
||||
Linux supporta anche ``clang`` [it-clang]_, leggete la documentazione
|
||||
@@ -42,7 +42,7 @@ Per maggiori informazioni consultate il file d'intestazione
|
||||
Rust
|
||||
----
|
||||
|
||||
Il kernel supporta sperimentalmente il linguaggio di programmazione Rust
|
||||
Il kernel supporta il linguaggio di programmazione Rust
|
||||
[it-rust-language]_ abilitando l'opzione di configurazione ``CONFIG_RUST``. Il
|
||||
codice verrà compilato usando ``rustc`` [it-rustc]_ con l'opzione
|
||||
``--edition=2021`` [it-rust-editions]_. Le edizioni Rust sono un modo per
|
||||
|
||||
@@ -98,9 +98,12 @@ Compilare il codice
|
||||
e correggere i problemi
|
||||
|
||||
2) Compilare per diverse architetture di processore usando strumenti per la
|
||||
cross-compilazione o altri. Una buona architettura per la verifica della
|
||||
cross-compilazione è la ppc64 perché tende ad usare ``unsigned long`` per le
|
||||
quantità a 64-bit.
|
||||
cross-compilazione o altri.
|
||||
Da notare che testare su architetture con diverse dimensioni delle parole
|
||||
(32 e 64 bit) e diverso ordinamento dei byte (*big-* e *little-endian*) è
|
||||
efficace nell'individuare vari problemi di portabilità dovuti ad
|
||||
assunzioni errate sull'intervallo di valori rappresentabili, l'allineamento
|
||||
dei dati, o l'ordinamento dei byte, fra le altre cose.
|
||||
|
||||
3) Il nuovo codice è stato compilato con ``gcc -W`` (usate
|
||||
``make KCFLAGS=-W``). Questo genererà molti avvisi, ma è ottimo
|
||||
|
||||
@@ -28,7 +28,7 @@ renderà la vostra vita di sviluppatore del kernel molto più semplice.
|
||||
|
||||
I sorgenti di alcuni sottosistemi e manutentori contengono più informazioni
|
||||
riguardo al loro modo di lavorare ed aspettative. Consultate
|
||||
:ref:`Documentation/translations/it_IT/process/maintainer-handbooks.rst <it_maintainer_handbooks_main>`
|
||||
Documentation/translations/it_IT/process/maintainer-handbooks.rst
|
||||
|
||||
Ottenere i sorgenti attuali
|
||||
---------------------------
|
||||
@@ -162,8 +162,8 @@ proibiti.
|
||||
|
||||
Se la vostra patch corregge un baco in un commit specifico, per esempio avete
|
||||
trovato un problema usando ``git bisect``, per favore usate l'etichetta
|
||||
'Fixes:' indicando i primi 12 caratteri dell'identificativo SHA-1 seguiti
|
||||
dalla riga riassuntiva. Per esempio::
|
||||
'Fixes:' indicando almeno i primi 12 caratteri dell'identificativo SHA-1
|
||||
seguiti dalla riga riassuntiva. Per esempio::
|
||||
|
||||
Fixes: e21d2170f366 ("video: remove unnecessary platform_set_drvdata()")
|
||||
|
||||
@@ -444,12 +444,11 @@ delle patch che vengono inviate per e-mail.
|
||||
La firma è una semplice riga alla fine della descrizione della patch che
|
||||
certifica che l'avete scritta voi o che avete il diritto di pubblicarla
|
||||
come patch open-source. Le regole sono abbastanza semplici: se potete
|
||||
certificare quanto segue:
|
||||
certificare quanto segue::
|
||||
|
||||
Il certificato d'origine dello sviluppatore 1.1
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Il certificato d'origine dello sviluppatore 1.1
|
||||
|
||||
Contribuendo a questo progetto, io certifico che:
|
||||
Contribuendo a questo progetto, io certifico che:
|
||||
|
||||
(a) Il contributo è stato creato interamente, o in parte, da me e che
|
||||
ho il diritto di inviarlo in accordo con la licenza open-source
|
||||
@@ -505,27 +504,48 @@ della patch ma desidera firmare e mettere agli atti la loro approvazione,
|
||||
allora queste persone possono chiedere di aggiungere al changelog della patch
|
||||
una riga Acked-by:.
|
||||
|
||||
Acked-by: viene spesso utilizzato dai manutentori del sottosistema in oggetto
|
||||
quando quello stesso manutentore non ha contribuito né trasmesso la patch.
|
||||
Acked-by: è pensata per essere usata da coloro che sono responsabili, o
|
||||
comunque coinvolti, con il codice interessato in un modo o nell'altro. Più
|
||||
comunemente, dal manutentore, quando quello stesso manutentore non ha
|
||||
contribuito né trasmesso la patch.
|
||||
|
||||
Acked-by: può anche essere usata da altre parti interessate, come persone con
|
||||
conoscenza specifica dell'argomento (per esempio l'autore originale del
|
||||
codice modificato), revisori lato spazio-utente per una patch che tocca la
|
||||
uAPI del kernel, o utenti chiave di una funzionalità. Opzionalmente, in
|
||||
questi casi, può essere utile aggiungere un "# Suffisso" per chiarirne il
|
||||
significato::
|
||||
|
||||
Acked-by: The Stakeholder <stakeholder@example.org> # Come utente primario
|
||||
|
||||
Acked-by: non è formale come Signed-off-by:. Questo indica che la persona ha
|
||||
revisionato la patch e l'ha trovata accettabile. Per cui, a volte, chi
|
||||
integra le patch convertirà un "sì, mi sembra che vada bene" in un Acked-by:
|
||||
(ma tenete presente che solitamente è meglio chiedere esplicitamente).
|
||||
|
||||
Acked-by: è anche meno formale di Reviewed-by:. Per esempio, un manutentore
|
||||
potrebbe usarla per indicare che è d'accordo con l'integrazione della patch,
|
||||
pur non avendola revisionata con lo stesso livello d'approfondimento che
|
||||
avrebbe richiesto un Reviewed-by:. Allo stesso modo, un utente chiave
|
||||
potrebbe non aver effettuato una revisione tecnica della patch, ma potrebbe
|
||||
comunque essere soddisfatto dell'approccio generale, della funzionalità o
|
||||
dell'interfaccia rivolta all'utente.
|
||||
|
||||
Acked-by: non indica l'accettazione di un'intera patch. Per esempio, quando
|
||||
una patch ha effetti su diversi sottosistemi e ha un Acked-by: da un
|
||||
manutentore di uno di questi, significa che il manutentore accetta quella
|
||||
parte di codice relativa al sottosistema che mantiene. Qui dovremmo essere
|
||||
giudiziosi. Quando si hanno dei dubbi si dovrebbe far riferimento alla
|
||||
discussione originale negli archivi della lista di discussione.
|
||||
discussione originale negli archivi della lista di discussione. Anche in
|
||||
questo caso si può usare un "# Suffisso" per chiarire.
|
||||
|
||||
Se una persona ha avuto l'opportunità di commentare la patch, ma non lo ha
|
||||
fatto, potete aggiungere l'etichetta ``Cc:`` alla patch. Questa è l'unica
|
||||
etichetta che può essere aggiunta senza che la persona in questione faccia
|
||||
alcunché - ma dovrebbe indicare che la persona ha ricevuto una copia della
|
||||
patch. Questa etichetta documenta che terzi potenzialmente interessati sono
|
||||
stati inclusi nella discussione.
|
||||
fatto, potete aggiungere l'etichetta ``Cc:`` alla patch. Questa etichetta
|
||||
documenta che terzi potenzialmente interessati sono stati inclusi nella
|
||||
discussione. Da notare che questa è una delle sole tre etichette che
|
||||
potreste poter usare senza il permesso esplicito della persona nominata (per
|
||||
i dettagli, vedere più avanti "Etichettare le persone richiede un
|
||||
permesso").
|
||||
|
||||
Co-developed-by: indica che la patch è stata cosviluppata da diversi
|
||||
sviluppatori; viene usato per assegnare più autori (in aggiunta a quello
|
||||
@@ -569,13 +589,14 @@ Utilizzare Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: e Fixes:
|
||||
|
||||
L'etichetta Reported-by da credito alle persone che trovano e riportano i bachi
|
||||
e si spera che questo possa ispirarli ad aiutarci nuovamente in futuro.
|
||||
Rammentate che se il baco è stato riportato in privato, dovrete chiedere il
|
||||
permesso prima di poter utilizzare l'etichetta Reported-by. Questa etichetta va
|
||||
usata per i bachi, dunque non usatela per richieste di nuove funzionalità.
|
||||
Questa etichetta dovrebbe essere seguita da quella Closes: con un indirizzo al
|
||||
rapporto, a meno che questo non sia disponibile sul web. L'etichetta Link: può
|
||||
essere usata in alternativa a Closes: se la patch corregge solo in parte il
|
||||
problema riportato nel rapporto.
|
||||
Questa etichetta va usata per i bachi, dunque non usatela per richieste di
|
||||
nuove funzionalità. Questa etichetta dovrebbe essere seguita da quella Closes:
|
||||
con un indirizzo al rapporto, a meno che questo non sia disponibile sul web.
|
||||
L'etichetta Link: può essere usata in alternativa a Closes: se la patch
|
||||
corregge solo in parte il problema riportato nel rapporto. Da notare che
|
||||
l'etichetta Reported-by è una delle sole tre etichette che potreste poter
|
||||
usare senza il permesso esplicito della persona nominata (per i dettagli,
|
||||
vedere più avanti "Etichettare le persone richiede un permesso").
|
||||
|
||||
L'etichetta Tested-by: indica che la patch è stata verificata con successo
|
||||
(su un qualche sistema) dalla persona citata. Questa etichetta informa i
|
||||
@@ -584,12 +605,11 @@ persone che possano verificare il codice in futuro, e garantisce che queste
|
||||
stesse persone ricevano credito per il loro lavoro.
|
||||
|
||||
Reviewed-by:, invece, indica che la patch è stata revisionata ed è stata
|
||||
considerata accettabile in accordo con la dichiarazione dei revisori:
|
||||
considerata accettabile in accordo con la dichiarazione dei revisori::
|
||||
|
||||
Dichiarazione di svista dei revisori
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Dichiarazione di svista dei revisori
|
||||
|
||||
Offrendo la mia etichetta Reviewed-by, dichiaro quanto segue:
|
||||
Offrendo la mia etichetta Reviewed-by, dichiaro quanto segue:
|
||||
|
||||
(a) Ho effettuato una revisione tecnica di questa patch per valutarne
|
||||
l'adeguatezza ai fini dell'inclusione nel ramo principale del
|
||||
@@ -611,8 +631,9 @@ Offrendo la mia etichetta Reviewed-by, dichiaro quanto segue:
|
||||
|
||||
L'etichetta Reviewed-by è la dichiarazione di un parere sulla bontà di
|
||||
una modifica che si ritiene appropriata e senza alcun problema tecnico
|
||||
importante. Qualsiasi revisore interessato (quelli che lo hanno fatto)
|
||||
possono offrire il proprio Reviewed-by per la patch. Questa etichetta serve
|
||||
importante. Qualsiasi revisore interessato (che lo abbia fatto e che sia
|
||||
una persona dall'identità nota) può offrire il proprio Reviewed-by per la
|
||||
patch. Questa etichetta serve
|
||||
a dare credito ai revisori e a informare i manutentori sul livello di revisione
|
||||
che è stato fatto sulla patch. L'etichetta Reviewed-by, quando fornita da
|
||||
revisori conosciuti per la loro conoscenza sulla materia in oggetto e per la
|
||||
@@ -623,28 +644,63 @@ Quando si riceve una email sulla lista di discussione da un tester o
|
||||
un revisore, le etichette Tested-by o Reviewed-by devono essere
|
||||
aggiunte dall'autore quando invierà nuovamente la patch. Tuttavia, se
|
||||
la patch è cambiata in modo significativo, queste etichette potrebbero
|
||||
non avere più senso e quindi andrebbero rimosse. Solitamente si tiene traccia
|
||||
della rimozione nel changelog della patch (subito dopo il separatore '---').
|
||||
non avere più senso e quindi andrebbero rimosse. Solitamente si tiene
|
||||
traccia della rimozione di un'etichetta Acked-by, Tested-by o Reviewed-by
|
||||
nel changelog della patch, con una spiegazione, (subito dopo il
|
||||
separatore '---').
|
||||
|
||||
L'etichetta Suggested-by: indica che l'idea della patch è stata suggerita
|
||||
dalla persona nominata e le da credito. Tenete a mente che questa etichetta
|
||||
non dovrebbe essere aggiunta senza un permesso esplicito, specialmente se
|
||||
l'idea non è stata pubblicata in un forum pubblico. Detto ciò, dando credito
|
||||
a chi ci fornisce delle idee, si spera di poterli ispirare ad aiutarci
|
||||
nuovamente in futuro.
|
||||
dalla persona nominata e le da credito: se diamo diligentemente credito a
|
||||
chi ci fornisce delle idee, si spera di poterli ispirare ad aiutarci
|
||||
nuovamente in futuro. Da notare che questa è una delle sole tre etichette
|
||||
che potreste poter usare senza il permesso esplicito della persona
|
||||
nominata (per i dettagli, vedere più avanti "Etichettare le persone
|
||||
richiede un permesso").
|
||||
|
||||
L'etichetta Fixes: indica che la patch corregge un problema in un commit
|
||||
precedente. Serve a chiarire l'origine di un baco, il che aiuta la revisione
|
||||
del baco stesso. Questa etichetta è di aiuto anche per i manutentori dei
|
||||
kernel stabili al fine di capire quale kernel deve ricevere la correzione.
|
||||
Questo è il modo suggerito per indicare che un baco è stato corretto nella
|
||||
patch. Per maggiori dettagli leggete :ref:`it_describe_changes`
|
||||
L'etichetta Fixes: indica che la patch corregge un baco in un commit
|
||||
precedente. Serve a rendere facile determinare dove abbia avuto origine
|
||||
un problema, il che può aiutare la revisione di una correzione. Questa
|
||||
etichetta è di aiuto anche per i manutentori dei kernel stabili al fine
|
||||
di capire quale kernel deve ricevere la correzione. Questo è il modo
|
||||
suggerito per indicare che un baco è stato corretto nella patch. Per
|
||||
maggiori dettagli leggete :ref:`it_describe_changes`
|
||||
|
||||
Da notare che aggiungere un tag "Fixes:" non esime dalle regole
|
||||
previste per i kernel stabili, e nemmeno dalla necessità di aggiungere
|
||||
in copia conoscenza stable@vger.kernel.org su tutte le patch per
|
||||
suddetti kernel.
|
||||
|
||||
Infine, sebbene fornire le etichette sia gradito e generalmente molto
|
||||
apprezzato, tenete presente che i firmatari (cioè chi sottomette e i
|
||||
manutentori) potrebbero usare la propria discrezione nell'applicare le
|
||||
etichette proposte.
|
||||
|
||||
.. _it_tagging_people:
|
||||
|
||||
Etichettare le persone richiede un permesso
|
||||
--------------------------------------------
|
||||
|
||||
State attenti ad aggiungere le suddette etichette alla vostra patch: tutte,
|
||||
tranne Cc:, Reported-by: e Suggested-by:, richiedono il permesso esplicito
|
||||
della persona nominata. Per queste tre è sufficiente un permesso implicito,
|
||||
se la persona ha contribuito al kernel Linux usando quel nome e quell'indirizzo
|
||||
email secondo gli archivi di lore o la cronologia dei commit -- e, nel caso di
|
||||
Reported-by: e Suggested-by:, se la segnalazione o il suggerimento sono
|
||||
avvenuti pubblicamente. Da notare che bugzilla.kernel.org è, in questo senso,
|
||||
un luogo pubblico, ma gli indirizzi email usati lì sono privati; quindi non
|
||||
esponeteli nelle etichette, a meno che la persona non li abbia già usati in
|
||||
contributi precedenti.
|
||||
|
||||
Usare Assisted-by:
|
||||
-------------------
|
||||
|
||||
Se avete usato un qualsiasi tipo di strumento di assistenza avanzata alla
|
||||
scrittura del codice per la creazione della vostra patch, dovete darne atto
|
||||
aggiungendo un'etichetta Assisted-by. Non farlo può ostacolare
|
||||
l'accettazione del vostro lavoro. Fate riferimento a
|
||||
Documentation/process/coding-assistants.rst per i dettagli su come dare
|
||||
atto dell'uso di assistenti alla scrittura del codice.
|
||||
|
||||
.. _it_the_canonical_patch_format:
|
||||
|
||||
Il formato canonico delle patch
|
||||
@@ -656,6 +712,9 @@ potere usare il comando ``git format-patch`` per ottenere patch nel formato
|
||||
appropriato. Lo strumento non crea il testo necessario, per cui, leggete
|
||||
le seguenti istruzioni.
|
||||
|
||||
Oggetto
|
||||
^^^^^^^
|
||||
|
||||
L'oggetto di una patch canonica è la riga::
|
||||
|
||||
Subject: [PATCH 001/123] subsystem: summary phrase
|
||||
@@ -729,6 +788,9 @@ Un paio di esempi di oggetti::
|
||||
Subject: [PATCH v2] sub/sys: Condensed patch summary
|
||||
Subject: [PATCH v2 M/N] sub/sys: Condensed patch summary
|
||||
|
||||
Riga From
|
||||
^^^^^^^^^
|
||||
|
||||
La riga ``from`` dev'essere la prima nel corpo del messaggio ed è nel
|
||||
formato:
|
||||
|
||||
@@ -739,6 +801,15 @@ l'autore della patch. Se la riga ``from`` è mancante, allora per determinare
|
||||
l'autore da inserire nel changelog verrà usata la riga ``From``
|
||||
nell'intestazione dell'email.
|
||||
|
||||
L'autore può indicare la propria affiliazione o lo sponsor del lavoro
|
||||
aggiungendo il nome di un'organizzazione alle righe ``from`` e ``SoB``,
|
||||
per esempio:
|
||||
|
||||
From: Patch Author (Azienda) <author@example.com>
|
||||
|
||||
Corpo della spiegazione
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Il corpo della spiegazione verrà incluso nel changelog permanente, per cui
|
||||
deve aver senso per un lettore esperto che è ha dimenticato i dettagli della
|
||||
discussione che hanno portato alla patch. L'inclusione di informazioni
|
||||
@@ -755,6 +826,33 @@ aggiungete solo quello che è necessario per far si che la vostra patch
|
||||
venga trovata. Come nella ``summary phrase``, è importante essere sia
|
||||
brevi che descrittivi.
|
||||
|
||||
.. _it_backtraces:
|
||||
|
||||
Aggiungere i *backtrace* nei messaggi di commit
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
I *backtrace* aiutano a documentare la sequenza di chiamate a funzione
|
||||
che portano ad un problema. Tuttavia, non tutti i *backtrace* sono
|
||||
davvero utili. Per esempio, le sequenze iniziali di avvio sono uniche
|
||||
e ovvie. Copiare integralmente l'output di ``dmesg`` aggiunge tante
|
||||
informazioni che distraggono dal vero problema (per esempio, i
|
||||
marcatori temporali, la lista dei moduli, la lista dei registri, lo
|
||||
stato dello stack).
|
||||
|
||||
Quindi, per rendere utile un *backtrace* dovreste eliminare le
|
||||
informazioni inutili, cosicché ci si possa focalizzare sul
|
||||
problema. Ecco un esempio di un *backtrace* essenziale::
|
||||
|
||||
unchecked MSR access error: WRMSR to 0xd51 (tried to write 0x0000000000000064)
|
||||
at rIP: 0xffffffffae059994 (native_write_msr+0x4/0x20)
|
||||
Call Trace:
|
||||
mba_wrmsr
|
||||
update_domains
|
||||
rdtgroup_mkdir
|
||||
|
||||
Commento
|
||||
^^^^^^^^
|
||||
|
||||
La linea di demarcazione ``---`` serve essenzialmente a segnare dove finisce
|
||||
il messaggio di changelog.
|
||||
|
||||
@@ -778,7 +876,10 @@ versione di una patch non sono parte del *chagelog* che viene incluso
|
||||
in git. Queste sono informazioni utili solo ai revisori. Se venissero
|
||||
messe sopra la riga, qualcuno dovrà fare del lavoro manuale per
|
||||
rimuoverle; cosa che invece viene fatta automaticamente quando vengono
|
||||
messe correttamente oltre la riga.::
|
||||
messe correttamente oltre la riga. Se disponibili, si consiglia di
|
||||
aggiungere anche i collegamenti alle versioni precedenti della patch
|
||||
(per esempio, un collegamento all'archivio di lore.kernel.org) per
|
||||
aiutare i revisori::
|
||||
|
||||
<commit message>
|
||||
...
|
||||
@@ -787,35 +888,14 @@ messe correttamente oltre la riga.::
|
||||
V2 -> V3: Removed redundant helper function
|
||||
V1 -> V2: Cleaned up coding style and addressed review comments
|
||||
|
||||
v2: https://lore.kernel.org/bar
|
||||
v1: https://lore.kernel.org/foo
|
||||
|
||||
path/to/file | 5+++--
|
||||
...
|
||||
|
||||
Maggiori dettagli sul formato delle patch nei riferimenti qui di seguito.
|
||||
|
||||
.. _it_backtraces:
|
||||
|
||||
Aggiungere i *backtrace* nei messaggi di commit
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
I *backtrace* aiutano a documentare la sequenza di chiamate a funzione
|
||||
che portano ad un problema. Tuttavia, non tutti i *backtrace* sono
|
||||
davvero utili. Per esempio, le sequenze iniziali di avvio sono uniche
|
||||
e ovvie. Copiare integralmente l'output di ``dmesg`` aggiunge tante
|
||||
informazioni che distraggono dal vero problema (per esempio, i
|
||||
marcatori temporali, la lista dei moduli, la lista dei registri, lo
|
||||
stato dello stack).
|
||||
|
||||
Quindi, per rendere utile un *backtrace* dovreste eliminare le
|
||||
informazioni inutili, cosicché ci si possa focalizzare sul
|
||||
problema. Ecco un esempio di un *backtrace* essenziale::
|
||||
|
||||
unchecked MSR access error: WRMSR to 0xd51 (tried to write 0x0000000000000064)
|
||||
at rIP: 0xffffffffae059994 (native_write_msr+0x4/0x20)
|
||||
Call Trace:
|
||||
mba_wrmsr
|
||||
update_domains
|
||||
rdtgroup_mkdir
|
||||
|
||||
.. _it_explicit_in_reply_to:
|
||||
|
||||
Usare esplicitamente In-Reply-To nell'intestazione
|
||||
|
||||
Reference in New Issue
Block a user