From 95a0bed7b222ae0bb7460152a5913d4ef6f2198a Mon Sep 17 00:00:00 2001 From: Thomas Kuschel Date: Sun, 2 Mar 2025 23:31:57 +0100 Subject: [PATCH] UPD Persistent store support PSTORE --- config-6.13.5.patch | 2 +- documentation/linux_configuration.pdf | 4 +- .../linux_configuration_16_file_systems.tex | 280 ++++++++++++++++++ 3 files changed, 283 insertions(+), 3 deletions(-) diff --git a/config-6.13.5.patch b/config-6.13.5.patch index 3cc95f7..996ec6d 100644 --- a/config-6.13.5.patch +++ b/config-6.13.5.patch @@ -1,5 +1,5 @@ --- ../config 2025-02-28 21:27:05.653538187 +0100 -+++ .config 2025-03-01 10:29:52.526763482 +0100 ++++ .config 2025-03-02 21:05:28.342807341 +0100 @@ -31,7 +31,7 @@ # CONFIG_INIT_ENV_ARG_LIMIT=32 diff --git a/documentation/linux_configuration.pdf b/documentation/linux_configuration.pdf index 1023b63..1051688 100644 --- a/documentation/linux_configuration.pdf +++ b/documentation/linux_configuration.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8eb5fb26a0916055dc20925ce779d75cbcbffcf79850b5c0bc59401a2598f927 -size 434195 +oid sha256:15e42e57761d20241461460807a99c77ce83bf07754326b7e1fdcf28324e86b4 +size 456441 diff --git a/documentation/linux_configuration_16_file_systems.tex b/documentation/linux_configuration_16_file_systems.tex index afd4d0c..212203b 100644 --- a/documentation/linux_configuration_16_file_systems.tex +++ b/documentation/linux_configuration_16_file_systems.tex @@ -2526,4 +2526,284 @@ Wenn Sie unsicher sind, sagen Sie N. Xattrs are name:value pairs associated with inodes by the kernel or by users (see the attr(5) manual page).\\ If unsure, say N.} +\paragraph{Include support for ZLIB compressed file systems}$~$\\ +CONFIG\_SQUASHFS\_ZLIB [=y] \textbf{[Y]}\\ +ZLIB-Komprimierung ist die von Squashfs-Dateisystemen verwendete Standardkomprimierung. +Sie bietet einen guten Kompromiss zwischen der erzielten Komprimierung und der für die Komprimierung und Dekomprimierung +erforderlichen CPU-Zeit und dem Speicherbedarf.\\ +Wenn Sie sich nicht sicher sind, sagen Sie Y. +\english{ZLIB compression is the standard compression used by Squashfs file systems. +It offers a good trade-off between compression achieved and the amount of CPU time and memory necessary to compress and decompress.\\ +If unsure, say Y.} +\paragraph{Include support for LZ4 compressed file systems}$~$\\ +CONFIG\_SQUASHFS\_LZ4 [=y] \textbf{[Y]}\\ +Die Angabe Y beinhaltet die Unterstützung für das Lesen von Squashfs-Dateisystemen, die mit LZ4-Kompression komprimiert wurden. +Die LZ4-Komprimierung ist hauptsächlich für eingebettete Systeme mit langsameren CPUs gedacht, +bei denen der Overhead von zlib zu hoch ist.\\ +LZ4 ist nicht die in Squashfs verwendete Standardkomprimierung, so dass die meisten Dateisysteme auch ohne diese Option lesbar sind.\\ +Wenn Sie unsicher sind, sagen Sie N. +\english{Saying Y here includes support for reading Squashfs file systems compressed with LZ4 compression. +LZ4 compression is mainly aimed at embedded systems with slower CPUs where the overheads of zlib are too high.\\ +LZ4 is not the standard compression used in Squashfs and so most file systems will be readable without selecting this option.\\ +If unsure, say N.} + +\paragraph{Include support for LZO compressed file systems}$~$\\ +CONFIG\_SQUASHFS\_LZO [=y] \textbf{[Y]}\\ +Die Angabe Y beinhaltet die Unterstützung für das Lesen von Squashfs-Dateisystemen, die mit LZO-Kompression komprimiert wurden. +Die LZO-Komprimierung ist hauptsächlich für eingebettete Systeme mit langsameren CPUs gedacht, +bei denen der Overhead von zlib zu hoch ist.\\ +LZO ist nicht die in Squashfs verwendete Standardkomprimierung, so dass die meisten Dateisysteme auch ohne diese Option lesbar sind.\\ +Wenn Sie unsicher sind, sagen Sie N. +\english{Saying Y here includes support for reading Squashfs file systems compressed with LZO compression. +LZO compression is mainly aimed at embedded systems with slower CPUs where the overheads of zlib are too high.\\ +LZO is not the standard compression used in Squashfs and so most file systems will be readable without selecting this option.\\ +If unsure, say N.} + + +\paragraph{Include support for XZ compressed file systems}$~$\\ +CONFIG\_SQUASHFS\_XZ [=y] \textbf{[Y]}\\ +Die Angabe Y beinhaltet die Unterstützung für das Lesen von Squashfs-Dateisystemen, die mit XZ-Kompression komprimiert wurden. +XZ bietet eine bessere Komprimierung als die standardmäßige zlib-Komprimierung, allerdings auf Kosten eines größeren CPU- +und Speicher-Overheads.\\ +XZ ist nicht die in Squashfs verwendete Standardkomprimierung, so dass die meisten Dateisysteme auch ohne Auswahl +dieser Option gelesen werden können.\\ +Wenn Sie unsicher sind, sagen Sie N. +\english{Saying Y here includes support for reading Squashfs file systems compressed with XZ compression. +XZ gives better compression than the default zlib compression, at the expense of greater CPU and memory overhead.\\ +XZ is not the standard compression used in Squashfs and so most file systems will be readable without selecting this option.\\ +If unsure, say N.} + +\paragraph{Include support for ZSTD compressed file systems}$~$\\ +CONFIG\_SQUASHFS\_ZSTD [=y] \textbf{[Y]}\\ +Wenn Sie hier Y sagen, wird das Lesen von Squashfs-Dateisystemen unterstützt, die mit ZSTD-Kom\-pri\-mierung komprimiert wurden. +ZSTD bietet eine bessere Komprimierung als die standardmäßige ZLIB-Kom\-pri\-mierung und verbraucht dabei weniger CPU.\\ +ZSTD ist nicht die Standardkomprimierung, die in Squashfs verwendet wird, so dass die meisten Dateisysteme auch ohne Auswahl +dieser Option gelesen werden können.\\ +Wenn Sie unsicher sind, sagen Sie N. +\english{Saying Y here includes support for reading Squashfs file systems compressed with ZSTD compression. +ZSTD gives better compression than the default ZLIB compression, while using less CPU.\\ +ZSTD is not the standard compression used in Squashfs and so most file systems will be readable without selecting this option.\\ +If unsure, say N.} + +\paragraph{Use 4K device block size?}$~$\\ +CONFIG\_SQUASHFS\_4K\_DEVBLK\_SIZE [=n] \textbf{[N]}\\ +Standardmäßig setzt Squashfs die Dev-Blockgröße (sb\_min\_blocksize) auf 1K oder die kleinste Blockgröße, die vom +vom Blockgerät unterstützt wird (falls größer). +Da die Blöcke in Squashfs zusammengepackt und nicht ausgerichtet sind, sollte dies die Latenz verringern. +Dies führt jedoch zu einer schlechten Leistung auf MTD-NAND-Geräten, bei denen die optimale E/A-Größe 4K beträgt (obwohl die Geräte auch kleinere Blockgrößen unterstützen können). +kleinere Blockgrößen unterstützen).\\ +Die Verwendung einer 4K-Geräteblockgröße kann auch die Gesamt-E/A-Leistung für einige Dateizugriffsmuster verbessern +(z. B. sequentielle Zugriffe auf Dateien in Dateisystemreihenfolge) auf allen Medien verbessern.\\ +Durch Setzen dieser Option wird Squashfs gezwungen, standardmäßig eine 4K-Geräteblockgröße zu verwenden. +Wenn Sie unsicher sind, sagen Sie N. +\english{By default Squashfs sets the dev block size (sb\_min\_blocksize) to 1K or the smallest block size supported +by the block device (if larger). +This, because blocks are packed together and unaligned in Squashfs, should reduce latency.\\ +This, however, gives poor performance on MTD NAND devices where the optimal I/O size is 4K (even though the devices can +support smaller block sizes).\\ +Using a 4K device block size may also improve overall I/O performance for some file access patterns +(e.g. sequential accesses of files in filesystem order) on all media.\\ +Setting this option will force Squashfs to use a 4K device block size by default.\\ +If unsure, say N.} + + +\paragraph{Additional option for memory-constrained systems}$~$\\ +CONFIG\_SQUASHFS\_EMBEDDED [=n] \textbf{[N]}\\ +Wenn Sie hier Y sagen, können Sie die Cachegröße angeben.\\ +Wenn Sie unsicher sind, sagen Sie N. +\english{Saying Y here allows you to specify cache size.\\ +If unsure, say N.} + +\subsubsection{FreeVxFS file system support (VERITAS VxFS(TM) compatible)} +CONFIG\_VXFS\_FS [=n] \textbf{[N]} +FreeVxFS ist ein Dateisystemtreiber, der das VERITAS VxFS(TM) Dateisystemformat unterstützt. +VERITAS VxFS(TM) ist das Standard-Dateisystem von SCO UnixWare (und möglicherweise anderen) und optional verfügbar für Sunsoft Solaris, +HP-UX und viele andere Betriebssysteme. +Diese speziellen Betriebssystemimplementierungen von vxfs können sich jedoch in der Endianness der Daten auf der Festplatte +und/oder im Superblock-Offset unterscheiden. +Das vxfs-Modul wurde mit SCO UnixWare und HP-UX B.10.20 (pa-risc 1.1 arch.) getestet. +Derzeit wird nur Lesezugriff und VxFX Versionen 2, 3 und 4 unterstützt. Die Tests wurden mit HP-UX VxFS Version 3 durchgeführt.\\ +HINWEIS: der Dateisystemtyp, wie er von \texttt{mount(1)}, \texttt{mount(2)} und \texttt{fstab(5)} verwendet wird, +ist \texttt{vxfs}, da er das Dateisystemformat beschreibt, nicht der eigentliche Treiber.\\ +Es gibt ein Userspace-Dienstprogramm für logische HP-UX-Volumes, das das Erstellen von logischen HP-UX-Volumes +aus einer HP-UX-Plattenblock-Gerätedatei oder einer regulären Datei mit einem Image der Platte erleichtert. +Siehe: +\url{https://sourceforge.net/projects/linux-vxfs/}\\ +Um dies als Modul zu kompilieren, wählen Sie hier M: das Modul wird \texttt{freevxfs} heißen. Wenn Sie unsicher sind, sagen Sie N. +\english{FreeVxFS is a file system driver that support the VERITAS VxFS(TM) file system format. +VERITAS VxFS(TM) is the standard file system of SCO UnixWare (and possibly others) and optionally available for Sunsoft Solaris, +HP-UX and many other operating systems. +However these particular OS implementations of vxfs may differ in on-disk data endianness and/or superblock offset. +The vxfs module has been tested with SCO UnixWare and HP-UX B.10.20 (pa-risc 1.1 arch.) +Currently only readonly access is supported and VxFX versions 2, 3 and 4. Tests were performed with HP-UX VxFS version 3.\\ +NOTE: the file system type as used by mount(1), mount(2) and fstab(5) is `vxfs' as it describes the file system format, +not the actual driver.\\ +There is a userspace utility for HP-UX logical volumes which makes creating HP-UX logical volumes easy from HP-UX +disk block device file or regular file with image of the disk. See:\\ +\url{https://sourceforge.net/projects/linux-vxfs/}\\ +To compile this as a module, choose M here: the module will be called \texttt{freevxfs}. If unsure, say N.} + +\subsubsection{Minix file system support} +CONFIG\_MINIX\_FS \colorbox{yellow!80}{[=m] \textbf{[N]}}\\ +Minix ist ein einfaches Betriebssystem, das in vielen Kursen über Betriebssysteme verwendet wird. +Das Minix-Dateisystem (Methode zur Organisation von Dateien auf einer Festplattenpartition oder einer Diskette) +war das ursprüngliche Dateisystem für Linux, wurde aber durch das zweite erweiterte Dateisystem ext2fs ersetzt. +Sie sollten das minix-Dateisystem wegen bestimmter eingebauter Beschränkungen nicht auf Ihrer Festplatte verwenden, aber es ist +manchmal auf älteren Linux-Disketten zu finden. +Mit dieser Option wird Ihr Kernel um etwa \qty{28}{\kilo\byte} vergrößert. Wenn Sie unsicher sind, sagen Sie N.\\ +Um diese Dateisystemunterstützung als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{minix} heißen. +Beachten Sie, dass das Dateisystem Ihrer Root-Partition (die Partition mit dem Verzeichnis \texttt{/}) nicht als Modul +kompiliert werden kann. +\english{Minix is a simple operating system used in many classes about OS's. +The minix file system (method to organize files on a hard disk partition or a floppy disk) was the original file system for Linux, +but has been superseded by the second extended file system ext2fs. +You don't want to use the minix file system on your hard disk because of certain built-in restrictions, but it is +sometimes found on older Linux floppy disks. +This option will enlarge your kernel by about 28 KB. If unsure, say N.\\ +To compile this file system support as a module, choose M here: the module will be called \texttt{minix}. +Note that the file system of your root partition (the one containing the directory \texttt{/}) cannot be compiled as a module.} + +\subsubsection{SonicBlue Optimized MPEG File System support} +CONFIG\_OMFS\_FS \colorbox{yellow!80}{[m] \textbf{[N]}}\\ +Dies ist das proprietäre Dateisystem, das vom Rio Karma Musikplayer und ReplayTV DVR verwendet wird. +Trotz des Namens ist dieses Dateisystem nicht effizienter als ein Standard-FS für MPEG-Dateien, eher das Gegenteil ist der Fall. +Sagen Sie Y, wenn Sie eines dieser Geräte besitzen und dessen Festplatte mounten möchten.\\ +Um diese Dateisystemunterstützung als Modul zu kompilieren, wählen Sie hier M: Das Modul wird \texttt{omfs} heißen. +Wenn Sie unsicher sind, sagen Sie N. +\english{This is the proprietary file system used by the Rio Karma music player and ReplayTV DVR. +Despite the name, this filesystem is not more efficient than a standard FS for MPEG files, in fact likely the opposite is true. +Say Y if you have either of these devices and wish to mount its disk.\\ +To compile this file system support as a module, choose M here: the module will be called \texttt{omfs}. +If unsure, say N.} + + +\subsubsection{OS/2 HPFS file system support} +CONFIG\_OMFS\_FS \colorbox{yellow!80}{[m] \textbf{[N]}}\\ +OS/2 ist IBMs Betriebssystem für PCs, das gleiche wie Warp, und HPFS ist das Dateisystem, das für die Organisation +von Dateien auf OS/2-Festplattenpartitionen verwendet wird. +Sagen Sie Y, wenn Sie in der Lage sein wollen, Dateien von einer OS/2-HPFS-Partition auf Ihrer Festplatte zu lesen +und darauf zu schreiben. +OS/2-Disketten haben jedoch das normale MSDOS-Format, so daß Sie diese Option nicht benötigen, um sie lesen zu können. +Lesen Sie $<$file:Documentation/filesystems/hpfs.rst$>$.\\ +Um diese Dateisystemunterstützung als Modul zu kompilieren, wählen Sie hier M: das Modul wird \texttt{hpfs} heißen. +Wenn Sie unsicher sind, sagen Sie N. +\english{OS/2 is IBM's operating system for PC's, the same as Warp, and HPFS is the file system +used for organizing files on OS/2 hard disk partitions. +Say Y if you want to be able to read files from and write files to an OS/2 HPFS partition on your hard drive. +OS/2 floppies however are in regular MSDOS format, so you don't need this option in order to be able to read them. +Read $<$file:Documentation/filesystems/hpfs.rst$>$.\\ +To compile this file system support as a module, choose M here: the module will be called \texttt{hpfs}. +If unsure, say N.} + +\subsubsection{QNX4 file system support (read only)} +CONFIG\_QNX4FS\_FS [=n] \textbf{[N]}\\ +Dies ist das Dateisystem, das von den Echtzeitbetriebssystemen QNX 4 und QNX 6 verwendet wird (letzteres wird auch QNX RTP genannt). +Weitere Informationen finden Sie unter \url{http://www.qnx.com/}. +Sagen Sie Y, wenn Sie beabsichtigen, QNX Festplatten oder Disketten zu mounten.\\ +Um diese Dateisystemunterstützung als Modul zu kompilieren, wählen Sie hier M: das Modul wird \texttt{qnx4} heißen.\\ +Wenn Sie nicht wissen, ob Sie es brauchen, dann brauchen Sie es nicht: wählen Sie N. +\english{This is the file system used by the real-time operating systems QNX 4 and QNX 6 (the latter is also called QNX RTP). +Further information is available at \url{http://www.qnx.com/}. +Say Y if you intend to mount QNX hard disks or floppies.\\ +To compile this file system support as a module, choose M here: the module will be called \texttt{qnx4}.\\ +If you don't know whether you need it, then you don't need it: answer N.} + + +\subsubsection{ROM file system support} +CONFIG\_ROMFS\_FS \colorbox{yellow!80}{[=m] \textbf{[N]}}\\ +Dies ist ein sehr kleines Nur-Lese-Dateisystem, das hauptsächlich für die ersten Ram-Disketten von Installationsdisketten +gedacht ist, aber es kann auch für andere schreibgeschützte Medien verwendet werden. +Lesen Sie $<$file:Documentation/filesystems/romfs.rst$>$ für Details.\\ +Um diese Dateisystemunterstützung als Modul zu kompilieren, wählen Sie hier M: das Modul wird \texttt{romfs} heißen. +Beachten Sie, dass das Dateisystem Ihrer Root-Partition (dasjenige, das das Verzeichnis \texttt{/} enthält) kein Modul sein kann.\\ +Wenn Sie nicht wissen, ob Sie es brauchen, dann brauchen Sie es nicht: wählen Sie N. +\english{This is a very small read-only file system mainly intended for initial ram disks of installation disks, +but it could be used for other read-only media as well. +Read $<$file:Documentation/filesystems/romfs.rst$>$ for details.\\ +To compile this file system support as a module, choose M here: the module will be called \texttt{romfs}. +Note that the file system of your root partition (the one containing the directory \texttt{/}) cannot be a module.\\ +If you don't know whether you need it, then you don't need it: answer N.} + +\paragraph{RomFS backing stores () \texorpdfstring{$\longrightarrow$}{->}}$~$\\ +Wählen Sie die zu unterstützenden Sicherungsspeicher aus. +\english{Select the backing stores to be supported.} + +\subparagraph{Block device-backed ROM file system support}$~$\\ +CONFIG\_ROMFS\_BACKED\_BY\_BLOCK [=y] \textbf{[Y]}\\ +Dadurch kann ROMFS über den Seiten-Cache gepufferte Blockgeräte als Medium für den Datenabruf verwenden. +Eine direkte Zuordnung des Mediums ist nicht möglich.\\ +Wenn Sie unsicher sind, antworten Sie mit Y. +\english{This permits ROMFS to use block devices buffered through the page cache as the medium from which to retrieve data. +It does not allow direct mapping of the medium.\\ +If unsure, answer Y.} + +\subparagraph{MTD-backed ROM file system support}$~$\\ +CONFIG\_ROMFS\_BACKED\_BY\_MTD [=n] \textbf{[N]}\\ +Dies ermöglicht es ROMFS, MTD-basierte Geräte direkt zu verwenden, ohne dass die Blockschicht +(die möglicherweise deaktiviert wurde) dazwischengeschaltet ist. +Es ermöglicht auch die direkte Zuordnung von MTD-Geräten durch romfs-Dateien unter NOMMU-Bedingungen, +wenn das zugrunde liegende Gerät direkt von der CPU adressierbar ist.\\ +Wenn Sie unsicher sind, antworten Sie mit Y. +\english{This permits ROMFS to use MTD based devices directly, without the intercession of the block layer +(which may have been disabled). +It also allows direct mapping of MTD devices through romfs files under NOMMU conditions if the underlying device +is directly addressable by the CPU.\\ +If unsure, answer Y.} + +\subparagraph{Both the above}$~$\\ +\textit{Die beiden oben genannten}\\ +CONFIG\_ROMFS\_BACKED\_BY\_BOTH [=n] \textbf{[N]}\\ +Für diese Option gibt es keine Hilfe. +\english{There is no help available for this option} + +\subsubsection{Persistent store support} +CONFIG\_PSTORE \colorbox{yellow!80}{[=y] \textbf{[Y]}}\\ +Diese Option ermöglicht den generischen Zugriff auf plattformspezifischen persistenten Speicher über das ``pstore''-Dateisystem, +das als \texttt{/dev/pstore} gemountet werden kann. +Diese Option ist nur dann nützlich, wenn Sie einen Treiber auf Plattformebene haben, der sich bei \texttt{pstore} registriert, +um die Daten bereitzustellen. +Daher sollten Sie wahrscheinlich einfach Y (oder M) zu einem plattformspezifischen Treiber für persistenten Speicher sagen +(z.B. ACPI\_APEI auf X86), der dies für Sie auswählt.\\ +Wenn Sie keinen plattformspezifischen Treiber für persistente Speicher haben, sagen Sie N. +\english{This option enables generic access to platform level persistent storage via ``pstore'' filesystem that can be mounted as \texttt{/dev/pstore}. +Only useful if you have a platform level driver that registers with pstore to provide the data, so you probably should just go say ``Y'' (or ``M'') to a platform specific persistent store driver (e.g. ACPI\_APEI on X86) which will select this for you.\\ +If you don't have a platform persistent store driver, say N.} + +\paragraph{Default kernel log storage space}$~$\\ +CONFIG\_PSTORE\_DEFAULT\_KMSG\_BYTES [=10240] \textbf{[10240]}\\ +Definiert die Standardgröße des \texttt{pstore}-Kernelprotokollspeichers. Kann bei Bedarf vergrößert werden, es wird nicht empfohlen, ihn zu verkleinern. +\english{Defines default size of pstore kernel log storage. Can be enlarged if needed, not recommended to shrink it.} + +\paragraph{Pstore compression (deflate)}$~$\\ +CONFIG\_PSTORE\_COMPRESS [=y] \textbf{[Y]}\\ +Whether pstore records should be compressed before being written to the backing store. +This is implemented using the zlib \texttt{deflate} algorithm, using the library implementation instead of using the +full blown crypto API. +This reduces the risk of secondary oopses or other problems while pstore is recording panic metadata. +\english{Whether pstore records should be compressed before being written to the backing store. +This is implemented using the zlib `deflate' algorithm, using the library implementation instead of using the full blown crypto API. +This reduces the risk of secondary oopses or other problems while pstore is recording panic metadata.} + +\paragraph{Log kernel console messages}$~$\\ +CONFIG\_PSTORE\_CONSOLE [=n] \textbf{[N]}\\ +Wenn die Option aktiviert ist, protokolliert pstore alle Kernel-Meldungen, auch wenn keine Oops oder Panics aufgetreten sind. +\english{When the option is enabled, pstore will log all kernel messages, even if no oops or panic happened.} + +\paragraph{Log user space messages}$~$\\ +CONFIG\_PSTORE\_PMSG [=n] \textbf{[N]}\\ +Wenn die Option aktiviert ist, exportiert pstore eine Zeichenschnittstelle \texttt{/dev/pmsg0} zur Protokollierung von Userspace-Meldungen. +Beim Neustart können die Daten von \texttt{/sys/fs/pstore/pmsg-ramoops-[ID]} abgerufen werden. +\english{When the option is enabled, pstore will export a character interface \texttt{/dev/pmsg0} to log user space messages. +On reboot data can be retrieved from \texttt{/sys/fs/pstore/pmsg-ramoops-[ID]}.} + +\paragraph{Persistent function tracer}$~$\\ +CONFIG\_PSTORE\_FTRACE [=n] \textbf{[N]}\\ +Mit dieser Option zeichnet der Kernel Funktionsaufrufe in einem dauerhaften Ram-Puffer auf, der nach einem Neustart +über das pstore-Dateisystem dekodiert und entladen werden kann. +Er kann verwendet werden, um festzustellen, welche Funktion vor einem Reset oder einer Panik zuletzt aufgerufen wurde.\\ +Wenn Sie unsicher sind, sagen Sie N. +\english{With this option kernel traces function calls into a persistent ram buffer that can be decoded and dumped after reboot +through pstore filesystem. +It can be used to determine what function was last called before a reset or panic.\\ +If unsure, say N.}