Если ваша rootfs не слишком велика, вы можете использовать файл initd. Используйте опцию -initrd
для qemu и предоставьте (сжатый )cpio-файл с rootfs. Поэтому, если у вас есть tar-файл, вы должны распаковать его и вместо этого создать cpio. Вы должны использовать формат -H newc
для cpio. Пример;
mkdir /tmp/rootfs
cd /tmp/rootfs
tar xf /path/to/rootfs.tar
find | cpio --quiet -o -H newc | bzip2 -c > /tmp/rootfs.cpio
Хорошо, что для этого вам не нужен root или sudo.
Значение после косой черты, то есть 24
в вашем примере 192.168.1.0/24
, использует нотацию CIDR для указывают количество битов, доступных для сетевой адресации, в отличие от адресации хоста. Для IPv4 каждый IP-адрес имеет длину 32 бита, поэтому адресация узла для сети /24
будет 32 -24 = 8 бит.
Давайте посмотрим на это повнимательнее.
Возьмем пример адреса 192.168.1.0/24
. Это говорит о том, что 24 бита из 32 предназначены для сетевого адреса. Каждый октет состоит из 8 бит, поэтому становится тривиально легко увидеть, что это означает, что 192.168.1
— это сетевой адрес, а оставшаяся часть — для хоста. Восемь бит дают 2 8 адресов, то есть 256. Младший недоступен, а старший зарезервирован для широковещательной рассылки по локальной сети, поэтому остается место для 254 адресов хостов, все начинаются с 192.168.1
.
Теперь возьмем пример адреса 192.168.0.0/16
. Здесь у нас есть 16 бит из 32 для сетевой адресации, оставив 16 бит для хостов в сети. У нас есть 2 16 = 65536 адресов хостов, но, как и прежде, два предварительно выделены -, поэтому у вас есть 65534 доступных адреса для хостов в этой сети, все начиная с 192.168
.
Это все очень просто; интересно, когда поле подсети не кратно восьми. Например, у вас может быть сеть 192.168.1.128/26
. Однако применяются те же правила; у вас есть 26 бит для сетевого адреса и 6 бит для хостов в этой сети. 2 6 равно 64, а два зарезервированы, поэтому в такой сети может быть 62 хоста.Используя инструмент ipcalc
, вы можете увидеть, что действительные IP-адреса в этой сети будут от 192.168.1.129
до 192.168.1.190
:
ipcalc 192.168.1.128/26
Address: 192.168.1.128 11000000.10101000.00000001.10 000000
Netmask: 255.255.255.192 = 26 11111111.11111111.11111111.11 000000
Wildcard: 0.0.0.63 00000000.00000000.00000000.00 111111
=>
Network: 192.168.1.128/26 11000000.10101000.00000001.10 000000
HostMin: 192.168.1.129 11000000.10101000.00000001.10 000001
HostMax: 192.168.1.190 11000000.10101000.00000001.10 111110
Broadcast: 192.168.1.191 11000000.10101000.00000001.10 111111
Hosts/Net: 62 Class C, Private Internet
/16
обычно используется для указания количества фиксированных битов (, которые не изменятся )в диапазоне адресов сети. Это более простой синтаксис для выражения CIDR .
Наличие IP-номера 1.2.255.1/16 означает, что любой адрес от 1.2.0.0 до 1.2.255.255 является частью этого диапазона адресов или сети.
Однако IP-номер, начинающийся с 255, аналогичный тому, который вы написали 255.255.255.1/16, обычно используется только для сетевой маски и означает что первые 16 бит фиксированы, а остальные могут изменяться.
Маска 255.255.0.0 и a.b.c.d/16 имеют точно такие же маскирующие биты (или используемые биты ).
IP-адрес 255.255.255.255 зарезервирован IANA для будущего использования и также называется адресом назначения «ограниченного широковещания» для сети 0.0.0.0.. Или, говоря простым языком, Широковещательный адрес .
Полное объяснение немного длиннее, но в этом его суть.
Сокращение, следующее за IP-адресом, является аббревиатурой маски подсети.... Количество единиц в масках подсети равно диапазону аббревиатуры. Например, маска подсети /16, о которой вы спрашивали, будет состоять из шестнадцати единиц подряд, а релаксация чисел будет равна нулю. 11111111.11111111. 00000000.00000000.