RBERRYPI ---------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 87 из 100
 От   : bp                                  3:633/10          20 мар 26 17:00:01
 К    : All                                                   20 мар 26 09:28:02
 Тема : Re: Adding a hardware swap partition
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 3:633/10 85406b19
@REPLY: 3:633/10 709d74e1
@PID: PyGate 1.5.13
@TID: PyGate/Linux 1.5.13
@CHRS: CP1252 2
@TZUTC: 1100
@REPLYADDR: bp@www.zefox.net
@REPLYTO: 3:633/10 UUCP
@RFC-Message-ID: <10pig5v$198or$1@dont-email.me>
No words but "thank you!", that`s an eloquent tutorial.
Clearly my goal was mistaken.

bob prohaska

Richard Kettlewell <invalid@invalid.invalid> wrote:
bp@www.zefox.net writes:
>> Richard Kettlewell <invalid@invalid.invalid> wrote:
>>> You seem to have a misapprehension about /sbin. It?s not some kind of
>>> ?stuff you need to boot? directory. It?s for utilities used for system
>>> administration and other root-only commands.
>>  
>> But those utilities are needed during the partition resize, creastion,
>> copying and mounting processes if I want to "clean out" the duplicated
>> /usr files.  

> Yes. You?d also need things conventionally found in /bin (today,
> /usr/bin) for that.

>>> The way to make a separate-/usr system bootable is to ensure that the
>>> initramfs mounts /usr, as already discussed. You don?t need a separate
>>> device for that.
>>
>> This touches on something I wasnt aware of. I don`t see an initramfs
>> manpage. There apropos references to it, but nothing explaining
>> its purpose. What`s it for? 

> It?s there to bridge the gap between the boot loader and the root
> filesystem.

> A typical Linux boot process looks like this:

> 1) The computer is powered up or reset.

> 2) The computer?s built-in firmware runs. This would be UEFI on a Mac or
>    PC, or the EEPROM on a Pi.

> 3) The device firmware loads a boot loader. This would often be Grub on
>    a PC. Sometimes the boot loader is built into the firmware (e.g. Pi
>    4B and later).

> 4) The boot loader loads a Linux kernel.

> What we want to do next is run the kernel, which should then mount the
> root filesystem and run init. But to do that the kernel may need a
> number of things:

> - device drivers for the physical storage device containing the root
>   file system
> - if root filesystem is across a network, then network drivers and
>   network configuration 
> - if the storage is encrypted, a driver for the encrypted storage, and
>   the passphrase or key that unlocks the storage
> - if the root filesystem is on software RAID or LVM, it needs the kernel
>   components for those and may also need to run user-space components to
>   properly configure access to them
> - the driver for the filesystem used by the root filesystem (ext4, zfs,
>   etc)

> In principle many of these things could be hard-coded into the kernel,
> and many years ago they were - we all rebuilt our kernels manually with
> just the drivers we thought we needed, and put configuration (e.g. root
> device name) on a kernel command line in the boot loader configuration.

> However, a Linux distribution generally wants to support as wide a range
> of possible configurations as possible and adding all possible drivers
> that anyone might need would make the kernel unreasonably large. So the
> drivers are kept in separate files and loaded when needed.

> This creates a chicken-and-egg problem: to mount the root filesystem we
> need device drivers (and maybe a lot more than that), but if all of
> those things are on the root filesystem, the kernel can?t load them yet.

> The solution is an initramfs, which is essentially a filesystem archive
> which contains the kernel modules and user-space executables necessary
> to mount the root filesystem. So booting continues:

> 5) The boot loader loads the initramfs into RAM.

> 6) The boot loader executes the Linux kernel.

> 7) The kernel extracts the initramfs archive into (effectively) a
>    ramdisk.

> 8) The kernel executes the ?init? program found within the ramdisk.
>    This is usually a shell script (though it doesn?t have to be).

> 9) Code within the initramfs loads all kernel modules required and does
>    any other setup needed to mount the (real) root filesystem
>    (e.g. reassemble a RAID, acquire a decryption key, etc).

> 10) When the real root filesystem has been mounted, the initramfs
>     contents are deleted (to save memory) and the real filesystem is
>     moved to its proper location, i.e. the / directory.

> 11) The real init program in the real root filesystem is executed.
>     This is often systemd (but doesn?t have to be).

> There are other ways to achieve this, but the above is more or less how
> it is typically done in Debian-based systems (which includes the
> Raspberry Pi OS).

> If you want to see what?s inside the initramfs, have a look in
> /boot. You?ll see one or more files with initrd in the name (for
> historical reasons). You can unpack them with unmkinitramfs, e.g.:

>     $ mkdir initrd
>     $ unmkinitramfs /boot/initrd.img-6.12.74+deb13+1-amd64 initrd/
>     $ ls -l initrd/main/
>     total 28
>     lrwxrwxrwx 1 richard richard    7 Mar 15 06:16 bin -> usr/bin
>     drwxr-xr-x 3 richard richard 4096 Mar 19 21:50 conf
>     drwxr-xr-x 7 richard richard 4096 Mar 19 21:50 etc
>     -rwxr-xr-x 1 richard richard 6787 May 13  2025 init
>     lrwxrwxrwx 1 richard richard    7 Mar 15 06:16 lib -> usr/lib
>     lrwxrwxrwx 1 richard richard    9 Mar 15 06:16 lib32 -> usr/lib32
>     lrwxrwxrwx 1 richard richard    9 Mar 15 06:16 lib64 -> usr/lib64
>     drwxr-xr-x 2 richard richard 4096 Mar 15 06:16 run
>     lrwxrwxrwx 1 richard richard    8 Mar 15 06:16 sbin -> usr/sbin
>     drwxr-xr-x 8 richard richard 4096 Mar 19 21:50 scripts
>     drwxr-xr-x 7 richard richard 4096 Mar 19 21:50 usr

> The initramfs here has its own private /usr l-)


> The relevance of all this to the separate /usr configuration that I?m
> trying to dissuade you from is that ?the root filesystem? has to include
> /usr (the real one, not the initramfs?s private /usr).

> Typically that is done by having it all be in one big root filesystem
> but as long as /usr is there by step 11, then in at least in theory, you
> should be golden. If it isn?t then quite early in the process you?ll
> find that something assumes it is present and falls over in its absence;
> on a modern Debian-derivce system the specific issue will be that init
> (i.e. systemd) is in /usr, so failure will be immediate.


--- PyGate Linux v1.5.13
 * Origin: Dragon`s Lair, PyGate NNTP<>Fido Gate (3:633/10)
SEEN-BY: 19/10 50/109 153/757 218/840 840 220/70
221/1 6 360 226/17 100
SEEN-BY: 229/426 240/1120 267/800 301/1 113 812
310/31 335/364 341/66 463/68
SEEN-BY: 633/10 280 414 416 418 420 422 509 2744
712/848 770/1 3 100 340 350
SEEN-BY: 772/210 220 230 5019/40 5020/715 848 1042
4441 12000 5030/49 722
SEEN-BY: 5030/1081 1474 5053/55 5061/133 5075/128
@PATH: 633/10 280 770/1 218/840 221/6 301/1
5020/1042 4441



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх