<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://so.v2.cs.unibo.it/wiki/index.php?action=history&amp;feed=atom&amp;title=Compilazione_kernel%2C_busybox_e_macchine_virtuali</id>
	<title>Compilazione kernel, busybox e macchine virtuali - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://so.v2.cs.unibo.it/wiki/index.php?action=history&amp;feed=atom&amp;title=Compilazione_kernel%2C_busybox_e_macchine_virtuali"/>
	<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Compilazione_kernel,_busybox_e_macchine_virtuali&amp;action=history"/>
	<updated>2026-05-05T22:15:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Compilazione_kernel,_busybox_e_macchine_virtuali&amp;diff=3100&amp;oldid=prev</id>
		<title>Renzo at 18:27, 20 February 2026</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Compilazione_kernel,_busybox_e_macchine_virtuali&amp;diff=3100&amp;oldid=prev"/>
		<updated>2026-02-20T18:27:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:27, 20 February 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot; &gt;Line 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Scarichiao e decomprimiamo l'immagine&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Scarichiao e decomprimiamo l'immagine&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;wget http&lt;/del&gt;://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;fs&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;devloop&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;org&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;uk&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;filesystems&lt;/del&gt;/BusyBox-1.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;13&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2/BusyBox-&lt;/del&gt;1&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;.13.2&lt;/del&gt;-amd64-root_fs.bz2&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Wget https&lt;/ins&gt;://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;www&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;cs&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;unibo&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;it&lt;/ins&gt;/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;~renzo/virtualsquare/tutorial_resources&lt;/ins&gt;/BusyBox-1.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;21&lt;/ins&gt;.1-amd64-root_fs.bz2&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   bzip2 -d BusyBox-1.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;13&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2&lt;/del&gt;-amd64-root_fs.bz2&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   bzip2 -d BusyBox-1.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;21&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1&lt;/ins&gt;-amd64-root_fs.bz2&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lanciamo la macchina virtuale, ed ora il sistema sara' attivo:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lanciamo la macchina virtuale, ed ora il sistema sara' attivo:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   qemu-system-x86_64 -hda BusyBox-1.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;13&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;2&lt;/del&gt;-amd64-root_fs -kernel /tmp/bzImage -append root=/dev/sda -monitor stdio -k en-us -m 1G&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   qemu-system-x86_64 -hda BusyBox-1.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;21&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;1&lt;/ins&gt;-amd64-root_fs -kernel /tmp/bzImage -append root=/dev/sda -monitor stdio -k en-us -m 1G&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dentro la macchina virtuale potete &amp;quot;gironzolare&amp;quot; a guardare cosa c'e'.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Dentro la macchina virtuale potete &amp;quot;gironzolare&amp;quot; a guardare cosa c'e'.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Renzo</name></author>
	</entry>
	<entry>
		<id>https://so.v2.cs.unibo.it/wiki/index.php?title=Compilazione_kernel,_busybox_e_macchine_virtuali&amp;diff=2296&amp;oldid=prev</id>
		<title>Renzo: Created page with &quot;questa è una versione commentata dei comandi digitati nella lezione del 27 febbario 2019  in una directory vuota di una partizione con spazio sufficiente (1G per stare dalla ...&quot;</title>
		<link rel="alternate" type="text/html" href="https://so.v2.cs.unibo.it/wiki/index.php?title=Compilazione_kernel,_busybox_e_macchine_virtuali&amp;diff=2296&amp;oldid=prev"/>
		<updated>2019-03-02T15:10:07Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;questa è una versione commentata dei comandi digitati nella lezione del 27 febbario 2019  in una directory vuota di una partizione con spazio sufficiente (1G per stare dalla ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;questa è una versione commentata dei comandi digitati nella lezione del 27 febbario 2019&lt;br /&gt;
&lt;br /&gt;
in una directory vuota di una partizione con spazio sufficiente (1G per stare dalla parte dei bottoni) si fa download dei sorgenti del kernel.&lt;br /&gt;
oggi l'ultima versione e' 5.0-rc8 (sul web www.kernel.org si decide quale versione scaricare) &lt;br /&gt;
  wget https://git.kernel.org/torvalds/t/linux-5.0-rc8.tar.gz&lt;br /&gt;
si scompattano i sorgenti e si entra nella dir scompattata&lt;br /&gt;
  tar xf linux-5.0-rc8.tar.gz &lt;br /&gt;
  cd linux-5.0-rc8&lt;br /&gt;
&lt;br /&gt;
Ho preparato un file di configurazione minimale per qemu, potete prenderlo via web. Lo scarico in /tmp:&lt;br /&gt;
  (cd /tmp; wget http://www.cs.unibo.it/~renzo/vsd/linux-config)&lt;br /&gt;
e lo copio come .config nella dir base dei sorgenti del kernel&lt;br /&gt;
  cp /tmp/linux-config .config&lt;br /&gt;
chiamo menuconfig per configurare il kernel&lt;br /&gt;
  make menuconfig&lt;br /&gt;
potete configurare il kernel (o lasciare tutto invariato, e' stata caricata la cofigurazione minimale)&lt;br /&gt;
alla fine uscite salvando. A questo punto si puo' compilare il kernel.&lt;br /&gt;
  make -j 5&lt;br /&gt;
A seconda di quante opzioni avete abilitato e quanto potente e' la macchina usata potete prendere un caffe'&lt;br /&gt;
o andare a dormire. Dopo un congruo tempo il kernel sara' pronto)&lt;br /&gt;
&lt;br /&gt;
Spostiamolo il /tmp/vmlinuz&lt;br /&gt;
  cp arch/x86_64/boot/bzImage /tmp/vmlinuz&lt;br /&gt;
  cd ..&lt;br /&gt;
A questo punto possiamo attivare il kernel che partira' regolarmente...&lt;br /&gt;
  qemu-system-x86_64 -kernel /tmp/vmlinuz -monitor stdio&lt;br /&gt;
Ma si blocchera' perche' una volta attivo non sa cosa fare, manca un init da lanciare.&lt;br /&gt;
Possiamo prendere una immagine minimale di file system che contenga init.&lt;br /&gt;
Per esempio una simie immagine puo' essere creata usando busybox (che fara' da solo init, shell e tool&lt;br /&gt;
di utilita')&lt;br /&gt;
&lt;br /&gt;
Scarichiao e decomprimiamo l'immagine&lt;br /&gt;
  wget http://fs.devloop.org.uk/filesystems/BusyBox-1.13.2/BusyBox-1.13.2-amd64-root_fs.bz2&lt;br /&gt;
  bzip2 -d BusyBox-1.13.2-amd64-root_fs.bz2&lt;br /&gt;
&lt;br /&gt;
Lanciamo la macchina virtuale, ed ora il sistema sara' attivo:&lt;br /&gt;
  qemu-system-x86_64 -hda BusyBox-1.13.2-amd64-root_fs -kernel /tmp/bzImage -append root=/dev/sda -monitor stdio -k en-us -m 1G&lt;br /&gt;
&lt;br /&gt;
Dentro la macchina virtuale potete &amp;quot;gironzolare&amp;quot; a guardare cosa c'e'.&lt;br /&gt;
Da notare : &lt;br /&gt;
  ls -l /bin &lt;br /&gt;
mostra come tutti i comandi siano realizati come link simbolici a busybox.&lt;br /&gt;
  uname -a &lt;br /&gt;
mostra la cersione e la data di compilazione del kernel, potete verificare che e' proprio&lt;br /&gt;
il kernel appena compilato che sta coordinando le attivita; del sistema.&lt;br /&gt;
  poweroff&lt;br /&gt;
spegne la macchina virtuale.&lt;br /&gt;
&lt;br /&gt;
Le macchine virtuali possono operare anche a livello di processo. Qemu per esempio ha comandi distinti per operare come VM di sistema&lt;br /&gt;
(qemu-system-...) e di processo (qemu-...).&lt;br /&gt;
Per fare questa prova facciamo download dei  binari di busybox per diverse architetture:&lt;br /&gt;
  wget https://busybox.net/downloads/binaries/1.21.1/busybox-binaries.tar.bz2&lt;br /&gt;
e decomprimiamo l'archivio&lt;br /&gt;
  tar xf busybox-binaries.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Nella dir busybox ci sono gli eseguibili.&lt;br /&gt;
  cd busybox/&lt;br /&gt;
Quello per la architettura corrente (x86_64 nella macchina usata in aula) funziona&lt;br /&gt;
  ./busybox-x86_64 ls&lt;br /&gt;
Gli altri dorebbero fallire (se non falliscono e' perche' c'e' un automatisco attivo che chiama qemu)&lt;br /&gt;
  ./busybox-mips ls&lt;br /&gt;
Possiamo comunque vedere qemu richiamato in modo esplicito che e' in grado di eseguire il binario busybox-mips (virtualizzando la CPU) ma&lt;br /&gt;
richiama le system call del sistema host.&lt;br /&gt;
  qemu-mips busybox-mips ls&lt;/div&gt;</summary>
		<author><name>Renzo</name></author>
	</entry>
</feed>