J'ai essayé de créer une nouvelle image Raspbian avec un noyau différent (avec support CAN) et avec Python 3.3 installé. Plutôt que de faire tout cela sur le Raspberry Pi, j'ai pensé qu'il serait intéressant de le faire sur l'ordinateur à la place (en suivant ces instructions ). Cependant, une fois l'image montée et prête à l'emploi, j'ai rapidement manqué d'espace disque. Je suppose que cela est dû au fait que l'image est dimensionnée pour être juste juste assez grande avec l'espoir que l'utilisateur redimensionnera le système de fichiers une fois qu'il aura été écrit sur une carte SD.
Est-il possible de redimensionner l'image et le système de fichiers avant de les écrire sur la carte SD afin que je puisse faire plus de personnalisation sans manquer d'espace?
Réponses:
Voici comment redimensionner un fichier image brut. Je sais que cela semble stupidement simpliste, mais cela fonctionnera.
Créez une image vierge, de la taille que vous souhaitez développer l'original (dans mon exemple, j'utilise 5 Go);
Ajoutez ceci à l'image originale:
Redimensionnez le système de fichiers qui vit à la fin du disque (en général, c'est celui que vous souhaitez agrandir):
Terminé! Votre disque devrait maintenant être plus gros de 5 Go!
la source
fdisk -l file.img
(c'était 122880), puislosetup --offset $((122880 * 512)) /dev/loop0 file.img
. Je pourrais alors utiliserresize2fs
sur/dev/loop0
et bien rangé aveclosetup -d /dev/loop0
. Si vous mettez à jour votre réponse pour l'inclure, je la marquerai comme la réponse acceptée. Merci de m'avoir indiqué dans la bonne direction.resize2fs
on/dev/loop0
mais j'ai une panique du noyau au démarrage disant que la taille du superbloc et la taille de la partition ne correspondent pas:The filesystem size (according to the superblock) is 483840 blocks The physical size of the device is 458240 blocks
avez-vous rencontré quelque chose comme ça?Ceci est une synthèse des réponses ci-dessus et ailleurs qui ont fonctionné pour moi - sauvegardez votre image en cas d'erreur:
Tout d'abord, agrandissez le fichier image (ici, nous ajoutons 1 Go à la fin):
Mappez ensuite l'image entière en tant que périphérique de boucle afin que nous puissions pousser la table de partition
Pour référence future, nous pouvons le vider:
La sortie ressemble à:
Nous allons maintenant refaire la dernière partition en la supprimant, puis en la recréant au même emplacement de départ, même type mais à un emplacement de fin différent. Notez donc la colonne "Démarrer" pour loop0p2 (partition 2 - la partition Linux) - nous l'utiliserons plus tard - son 122880 ici.
Entrez ce qui suit - ils sont sûrs d'entrer - rien de permanent ne se produit jusqu'à ce que vous ayez lu mon explication qui suit:
p
d
2
n
p
2
122880
p
Étape 1 - imprimer le tableau actuel. Étapes 2-3 - supprimer la partition 2, étapes 4-8 - recréer la partition 2 avec un nouveau point de fin (la valeur par défaut est la fin de l'image), Étape 9 - imprimer le nouveau tableau.
En supposant que votre table nouvellement imprimée est identique à la table d'origine, à l'exception de la valeur Fin et de la valeur Blocs (c'est-à-dire que la taille a changé), vous êtes prêt à valider.
Entrez
w
pour valider votre modification, puis entrezq
pour quitter.Vous pouvez supprimer ce périphérique de bouclage, nous en ferons un autre pour la deuxième partition. Rappelez-vous le décalage de départ que vous avez noté et utilisé ci-dessus - nous l'utiliserons à nouveau:
Cela créera un nouveau mappage en
/dev/loop0
pointant juste sur la partition 2 - pour la référence 512 est la taille de secteur que vous pouvez voir dans la premièrefdisk
sortie.Redimensionnez maintenant la partition pour remplir l'espace disponible:
Terminé - maintenant nettoyer:
la source
Pour ceux qui utilisent Oracle VM VirtualBox, c'est assez simple.
Sur une machine Windows, les choses se passent comme suit:
input.img
est ici l'image dont la taille doit être réduite etoutput.img
est l'image finale - dans cet exemple défini comme étant de 7000 Mo de large.J'espère que ça aide un peu.
la source
Kernel panic - not syncing: VFS: Unable to mount rootfs on unknown-block(179,2)
Voici comment redimensionner un fichier image brut. Je sais que cela semble stupidement simpliste, mais cela fonctionnera.
Créez une image vierge, de la taille que vous souhaitez développer l'original (dans mon exemple, j'utilise 5 Go);
Ajoutez ceci à l'image originale:
Ensuite, le redimensionnement de la partition et du système de fichiers. Tout d'abord, obtenez le décalage de la partition;
Résultats dans un tableau comme celui-ci:
Notez le décalage de démarrage de la deuxième partition
Enfin démonter / dev / loop
Terminé! Votre disque devrait maintenant être plus gros de 5 Go!
la source