Ubuntu日本語フォーラム
ログインしていません。
# cat /etc/fstab
UUID=CB1A-E709 /boot/efi vfat defaults,noatime 0 2
UUID=69661b77-aa05-4dbf-8220-f3f261ee255e / btrfs subvol=@,defaults,noatime,space_cache,autodefrag,discard,compress=lzo 0 1
UUID=69661b77-aa05-4dbf-8220-f3f261ee255e /home btrfs subvol=@home,defaults,noatime,space_cache,autodefrag,discard,compress=lzo 0 2
UUID=9e3fed8d-9f31-4fb9-a09a-68b250a63353 swap swap defaults,noatime,discard 0 0
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
# ls -l /dev/disk/by-uuid | grep sda
lrwxrwxrwx 1 root root 10 8月 5 09:15 69661b77-aa05-4dbf-8220-f3f261ee255e -> ../../sda1
lrwxrwxrwx 1 root root 10 8月 5 09:15 9e3fed8d-9f31-4fb9-a09a-68b250a63353 -> ../../sda2
lrwxrwxrwx 1 root root 10 8月 5 09:15 CB1A-E709 -> ../../sda3
もともとずーっとディスクの物理的な順序通り /boot/efi vfat が sda1、/ と /home のあるところ大事なところルートパテ?がsda2、最後にswap がsda3 でした。歴代のubuntu。こんかいdebian11をカルマラスインストーラーでインストールしてゴニョゴニョして、気づいたら/boot/efi の分区がsda3となってしまった!!
(もっと分区の状態がパッと把握できる、もっといいコマンドがあると思うのですがわかりません(^^))
頭が混乱します。直し方を教えてください。
オフライン
使えているのならば そのままでヨシ! です。
/boot/efi は /dev/sda1 であるべきというルールはありません。
PCは混乱せずに動作しており、システムが壊れているのでもなく
何かを直す必要があるわけでもありません。
UUIDで対象が捕捉出来ていればドライブ順やパーテイション番号が変わっても
書き換えなしでOSを動かすことができるようにできています。
それを活かすために fstab や grub.cfgファイルでは
/dev/sdxx
ではなく
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
の形式でパーティションを指定しています。
何が問題かを十分理解しないままいじろうとするのはおすすめしません。
#1 nahoko による投稿:
(もっと分区の状態がパッと把握できる、もっといいコマンドがあると思うのですがわかりません(^^))
lsblk -f /dev/sda
はどうでしょうか?
オフライン
UUIDで対象が捕捉出来ていればドライブ順やパーテイション番号が変わっても
書き換えなしでOSを動かすことができるようにできています。
それを活かすために fstab や grub.cfgファイルでは
$ cat /etc/fstab <<ーーいつも使ってるけど何者ぞ!
UUID=CB1A-E709 /boot/efi vfat defaults,noatime 0 2
UUID=69661b77-aa05-4dbf-8220-f3f261ee255e / btrfs subvol=@,defaults,noatime,space_cache,autodefrag,discard,compress=lzo 0 1
UUID=69661b77-aa05-4dbf-8220-f3f261ee255e /home btrfs subvol=@home,defaults,noatime,space_cache,autodefrag,discard,compress=lzo 0 2
UUID=9e3fed8d-9f31-4fb9-a09a-68b250a63353 swap swap defaults,noatime,discard 0 0
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
$ cat /boot/grub/grub.cfg | grep UUID <<ーーgrubと関係してるなにか!
linux /@/boot/vmlinuz-5.10.0-16-amd64 root=UUID=69661b77-aa05-4dbf-8220-f3f261ee255e ro rootflags=subvol=@ quiet splash resume=UUID=9e3fed8d-9f31-4fb9-a09a-68b250a63353
linux /@/boot/vmlinuz-5.10.0-16-amd64 root=UUID=69661b77-aa05-4dbf-8220-f3f261ee255e ro rootflags=subvol=@ quiet splash resume=UUID=9e3fed8d-9f31-4fb9-a09a-68b250a63353
linux /@/boot/vmlinuz-5.10.0-16-amd64 root=UUID=69661b77-aa05-4dbf-8220-f3f261ee255e ro single rootflags=subvol=@
linux /@/boot/vmlinuz-5.10.0-15-amd64 root=UUID=69661b77-aa05-4dbf-8220-f3f261ee255e ro rootflags=subvol=@ quiet splash resume=UUID=9e3fed8d-9f31-4fb9-a09a-68b250a63353
linux /@/boot/vmlinuz-5.10.0-15-amd64 root=UUID=69661b77-aa05-4dbf-8220-f3f261ee255e ro single rootflags=subvol=@
$ lsblk -f /dev/sda
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT
sda
├─sda1 btrfs 69661b77-aa05-4dbf-8220-f3f261ee255e 211.2G 4% /run/timeshift/backup
├─sda2 swap 1 9e3fed8d-9f31-4fb9-a09a-68b250a63353 [SWAP]
└─sda3 vfat FAT16 NO_LABEL CB1A-E709 96.4M 3% /boot/efi
$
https://wiki.archlinux.jp/index.php/%E6%B0%B8%E7%B6%9A%E7%9A%84%E3%81%AA%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E5%91%BD%E5%90%8D
□永続的なブロックデバイスの命名
使用しているマシンに複数の SATA, SCSI, IDE ディスクコントローラが存在する場合、それぞれのデバイスノードが追加される順番は一定しません。そのため、起動するたびに /dev/sda や /dev/sdb といったデバイス名は入れ替わる可能性があり、
<<ーーたぶんこのことと
/boot/efi は /dev/sda1 であるべきというルールはありません。何が問題かを十分理解しないままいじろうとするのはおすすめしません。
コンピュータにとっては大丈夫なのはわかりましたっ
自分の中で美的に苦しいです。これらを直すことは、難易度高いのでしょうか?作業難易度高かったり
リスクがあるならやめます!elliptic さん、ありがとうございます
オフライン
参考
https://atmarkit.itmedia.co.jp/ait/articles/1803/02/news017.html
【 gdisk 】コマンド――GPT対応のパーティションを作成、削除する
□パーティション情報を表示する
(指定したデバイスの情報を表示する)
# gdisk -l /dev/sda Number Start (sector) End (sector) Size Code Name 1 206848 465580031 221.9 GiB 8300 2 465580032 468860927 1.6 GiB 8200 3 2048 206847 100.0 MiB 0700
□パーティションを作成する、削除する
「-l」オプションを使用しなかった場合、gdiskは対話モードで起動します。
# gdisk /dev/sda Command (? for help):
対話モードの操作では、アルファベット1文字のコマンドを使います。
? コマンドを一覧表示する
p パーティションテーブルを表示する
w パーティションテーブルの変更を保存して終了する
q パーティションテーブルの変更を「保存せずに」終了する
s sort partitions
□パーティション情報を表示
「p」で現在の状況を確認
Command (? for help): p Number Start (sector) End (sector) Size Code Name 1 206848 465580031 221.9 GiB 8300 2 465580032 468860927 1.6 GiB 8200 3 2048 206847 100.0 MiB 0700
オフライン
□「p」でパーティションの順序番号を並べ替える
Command (? for help): s You may need to edit /etc/fstab and/or your boot loader configuration!
現在の /etc/fstab ファイルは以下の通りです。
$ cat /etc/fstab
UUID=CB1A-E709 /boot/efi vfat defaults,noatime 0 2
UUID=69661b77-aa05-4dbf-8220-f3f261ee255e / btrfs subvol=@,defaults,noatime,space_cache,autodefrag,discard,compress=lzo 0 1
UUID=69661b77-aa05-4dbf-8220-f3f261ee255e /home btrfs subvol=@home,defaults,noatime,space_cache,autodefrag,discard,compress=lzo 0 2
UUID=9e3fed8d-9f31-4fb9-a09a-68b250a63353 swap swap defaults,noatime,discard 0 0
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
オフライン
なんでもいいから一言感想ください
それを手がかりに自分で答えを見つけます!
オフライン
elliptic さんがすでにフォローされているように
通常の使い方であれば /boot/efi が /dev/sd*3 であっても問題ありません。
/dev/sd*1 に変更するのは、失敗したときにディスクの内容を失うリスクがあります。
実際に検証していないのですが、
/dev/sd*3 なのは 3番めのパーティションエントリに記述されているためでしょう。
ハードディスクのGUIDパーティションテーブル内の
パーティションエントリの順序を入れ替えれば
/dev/sd*3 を /dev/sd*1 にすることができるかもしれません。
GUIDパーティションテーブル - ウィキペディア
LBA はハードディスクのセクタの番号です。
1セクタはふつう512バイトです。
パーティションエントリは各128バイトのサイズで、
パーティションエントリ1〜4は
セクタ2 (ディスク先頭はセクタ0であることに注意)と
ディスク末尾から33番めのセクタに同じものが書き込まれています。
なのでパーティションエントリを並べ替えて上書き(上述のとおり2箇所)すると
パーティション番号が変わるかもしれません。
OSが動作中のディスクのパーティションエントリを書き換えることはできませんので、
ライブDVDとか、外付けHDDにインストールしたUbuntuなどから起動して作業します。
あらかじめディスクまるごとのバックアップを作成しておくのが最も安全です。
せめてディスク先頭・末尾各1MBのバックアップを取っておくと、
最悪の事態は避けられるでしょう。
# 私は習慣としてインストール後に作成しています。これで時々助かっています。
オフライン
すずめさん、感謝。。いつもつねに親切にしてくれてありがとう
いろいろあって回答を分析するのに何日かかるかわからん。
オフライン
こんばんは、やねのすずめです。少しずつ説明するつもりです。
----------------------------------------
■ パーティションテーブル等のバックアップ
----------------------------------------
MBR や GUIDパーティションテーブル(GPT) や ブートローダ(無いこともある)が
ディスク先頭1MiB(=512*2048バイト)と
ディスク末尾512*33バイト(=16.5KiB)…第2GPT (= GPTのバックアップ)
にある
よってこの領域にパーティションを作ってはいけない(作れない)
→先頭1MiBと末尾16.5kiBをバックアップするとよい(MBRも含まれる)
※ 1 KiB (キビバイト) = 2の10乗バイト = 1024バイト
※ 1 MiB (メビバイト) = 2の20乗バイト = 1048576バイト
…「東芝こうなろう」と覚える(必要ないけど)
※ 1 GiB (ギビバイト) = 2の30乗バイト = 1073741824バイト
…「トナーみな良いやつよ」と覚える(覚えなくていいってば)
★デバイスのディレクトリ(/dev/sda, /dev/sdb など)はその都度確認して修正する
(USBの接続順序などにより変わることがある)
たとえば 田(=SuperKey =WindowsではWindowsキー)、disk[Enter] で
ディスク(disk) を起動して調べる
◆ Ubuntu 22.04 用 256GB 外付けSDD (公称240GB) の例
(1) ディスク末尾コピー位置の計算
田、gparted[Enter] で GParted 起動、
/dev/sdb を選ぶ、表示、デバイス情報
総セクタ 500118192 なので、33 を減じて、
先頭から 500118159 セクタをスキップしてから 33セクタをコピーすればよい
※外付けのため、デバイスは /dev/sdb になっています
※本体内蔵HDD/SSDの場合は /dev/sda になることが多いでしょう
※ディスクの1セクタのサイズはふつう512バイトです
※Gpartedが未インストールの場合は Ubuntu Software からインストールしてください
(ライブDVDには標準でインストールされています)
(2) ファイル(nautilus)を起動して、バックアップ先のディレクトリを開き、
(アドレスバーの右側)3点メニューをクリック、端末で開く をクリック
※バックアップ先はUSBメモリなどが良いと思います
(3) コマンド例
sudo dd if=/dev/sdb of=U2204_first1MB bs=512 count=2048
sudo dd if=/dev/sdb of=U2204_GPT2 bs=512 skip=500118159 count=33
★ if と of を間違えないことが大事です
他もよく確かめてから [Enter] を押しましょう
※dd コマンド … バイナリファイルの変換とコピー
if=入力ファイル
of=出力ファイル
bs=ブロックサイズ[単位:バイト]
skip=先頭からスキップするブロック数
count=コピーするブロック数
(今回は無変換でコピーしています)
(4) リストア(=バックアップからの復元)
… (3) の if と of を逆にするだけです
★当該ディスクを使用中に書き込んではいけない(パーティションが壊れるかも)
・ライブDVDとか、外付けHDDにインストールしたUbuntuなどから起動して作業します
・ リストア先のディスクにあるパーティションは、
あらかじめディスク(disk)か Gparted などでアンマウントしておく
※読み取りは実行中の Ubuntu のあるディスクからでも可能です
★★とにかく if と of を間違えないことが大事です!!!
よーく確かめてから [Enter] を押しましょう。
オフライン
/dev/sd*1 に変更するのは、失敗したときにディスクの内容を失うリスクがあります。
GUIDパーティションテーブル - ウィキペディア
LBA はハードディスクのセクタの番号です。
1セクタはふつう512バイトです。
用語
□セクタ、トラック
https://i.stack.imgur.com/TMPaY.jpg
□LBA
Logical Block Addressing (ロジカルブロックアドレッシング) は、コンピュータの 補助記憶装置内のデータ位置を示す方法の1つ。LBAと略される。
LBAは単純に装置の最初のセクタから何番目かを示す数値である。補助記憶装置内の全セクタに 一意の通し番号が割り当てられており、それを使ってアドレッシングするわけである。
従って、ハードディスクのような同心円上に複数のトラックをもつ装置でも、CD-ROMやテープドライブのように1本のトラックで構成される装置でも同じように扱える利点がある。
https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID_Partition_Table_Scheme.svg/800px-GUID_Partition_Table_Scheme.svg.png
<<画像を見ても、よく理解できません
https://metebalci.com/blog/a-quick-tour-of-guid-partition-table-gpt/
GUID パーティション テーブル (GPT) のクイック ツアー
(機械翻訳)
コンピュータはどのように起動しますか? Linux でログイン プロンプトが表示されるまではどうなりますか?
私を含め、多くの人がすべての手順を知らないと確信しています。
2000 年代以前 (2000 年代) には BIOS (Basic Input/Output System) として知られている、またはそれに準拠していたファームウェアと、現在 (2000 年代以降) の後継である UEFI (Unified Extensible Firmware Interface) は、OS (オペレーティング システム) をロードします。
そのためには、最初の実行可能コードがストレージ メディアのどこにあるかを知る必要があります。
まさにこの時点で、ブート レコードおよび/またはパーティション テーブルが全体像に入ります。これが、GPT (GUID パーティション テーブル) がUEFI 仕様に記載されている理由でもあります。
私のように 30 歳以上であれば、おそらく BIOS と MBR (マスター ブート レコード) の用語を覚えているでしょう。BIOS と MBR が使用されていたときにコンピューターについてすべて学び、その後 UEFI と GPT に置き換えられましたが、長い間何も知りませんでした。あなたが同じ立場かそれより年下で、以前にこれらについて学んだことがない場合は、この記事が役に立ちます。
あまり知られていないかもしれませんが、ストレージ ハードウェアで何かを行うには、それにコマンドを送信すると応答します。したがって、読み取りまたは書き込みコマンドをその場所とともに送信することができ、非常に複雑な方法でそれを実行します。もちろん、読み取りと書き込み以外にも多くのコマンド タイプがあります。
OSをロードするには、OSのシステムファイルの場所を見つけ、アクセスし、読み取り、実行をOSに転送する必要があります。ニワトリと卵のシナリオのようになりつつあります。ファイルをロードする必要がありますが、ファイルはストレージ メディア内のファイル システムにあり、どちらもドライバーをロードする必要があり、ドライバーもファイルです。
解決策は、修正されたものを定義して、ファームウェアが個々のファイルについて考えることなくそれに依存できるようにすることです。固定概念は、ストレージの最初からデータをロードして起動を開始することです。これは、BIOS と UEFI の両方で同じです。
あまり知られていないかもしれませんが、ストレージ ハードウェアで何かを行うには、それにコマンドを送信すると応答します。したがって、読み取りまたは書き込みコマンドをその場所とともに送信することができ、非常に複雑な方法でそれを実行します。もちろん、読み取りと書き込み以外にも多くのコマンド タイプがあります。
ロードするデータのサイズまたは長さを知る必要があります。ここで、ストレージ メディアに関連するハードウェア用語がいくつか登場します。過去(2000年代以前)の倉庫レイアウトはC/H/S(シリンダー/ヘッド/セクター)でした。
基本的に、ストレージから何かを読み書きするには、3 つの数字 (C、H、S) を指定する必要がありました。これらは、最初にストレージの実際の物理構造 (フロッピーやハード ドライブなど) に対応し、次に (80 年代以降) コントローラーをストレージ デバイスに組み込んだ後、それらは論理番号でしたが、実際の作業を行う前にストレージ デバイスによって物理番号に変換されました。
読み取るデータの長さについての質問に戻りますが、それは 1 セクターのサイズです。したがって、BIOS は 0/0/1 (シリンダー = 0、ヘッド = 0、セクター = 1) をロードする必要があり、シリンダーとヘッドの番号は 0 から始まり、セクター番号は 1 から始まります。したがって、それは最初のセクターのアドレスです。セクタの実際のサイズ (バイト単位) はストレージ メディアによって異なり、ハードウェア (ATA コマンド ID デバイスなど) から照会できます。512 バイトのセクター サイズは一般的な値です。
オフライン
今度こそ、こんばんわ(^^) 僕もまさに調べてるところでした
OSが動作中のディスクのパーティションエントリを書き換えることはできませんので、ライブDVDとか、外付けHDDにインストールしたUbuntuなどから起動して作業します。
知りませんでした、というか気が付きませんでした。
オフライン
★デバイスのディレクトリ(/dev/sda, /dev/sdb など)はその都度確認して修正する
(USBの接続順序などにより変わることがある)
これは体験してるからわかる
オフライン
★デバイスのディレクトリ(/dev/sda, /dev/sdb など)はその都度確認して修正する
(USBの接続順序などにより変わることがある)
これは体験してるからわかる
オフライン
パソコンが趣味のひとならぜんいんわかるのではないか?信用できないですね。だからUUIDがあるのかな?
※きょうのforumsはおかしいです。送信しても冒頭の一部しか投稿されません!
しかたがないので、すずめさんの回答をよく読んで自習します
感謝。
オフライン
■ パーティションテーブル等のバックアップ
>これは生まれてからやったことがない
パーティションテーブルがなんなのか まだ飲み込めない
コマンドとかたくさん打って そのレスポンスを受けて、体感で知るしかないと思う
オフライン
★デバイスのディレクトリ(/dev/sda, /dev/sdb など)はその都度確認して修正する
(USBの接続順序などにより変わることがある)
たとえば 田(=SuperKey =WindowsではWindowsキー)、disk[Enter] で
ディスク(disk) を起動して調べる
GParted でも同じですよね?diskはインストールしなくていいですね
オフライン
#16 yaneno-suzume による投稿:
たとえば 田(=SuperKey =WindowsではWindowsキー)、disk[Enter] で
ディスク(disk) を起動して調べる
コマンドファイル: /usr/bin/gnome-disks
英語アイコン名: Disks
日本語アイコン名: ディスク
です。 disk という名ではありません。
#16 yaneno-suzume による投稿:
(3) コマンド例
sudo dd if=/dev/sdb of=U2204_first1MB bs=512 count=2048
sudo dd if=/dev/sdb of=U2204_GPT2 bs=512 skip=500118159 count=33
...
(4) リストア(=バックアップからの復元)
… (3) の if と of を逆にするだけです
実際にリストアまで実行してみましたか?
書き込み開始位置の指定は skip= ではなく seek= です。
GPTを保存/復元するためのコマンドもあります。
sgdisk -b, --backup=file
Save partition data to a backup file. You can back up your current in-memory
partition table to a disk file using this option. The resulting file is a binary
file consisting of the protective MBR, the main GPT header, the backup GPT header,
and one copy of the partition table, in that order.
sgdisk -l, --load-backup=file
Load partition data from a backup file. This option is the reverse of the -b
option.
オフライン
返信が遅くなって申し訳ありません。
迅速にご指摘いただきまして、大変ありがとうございました。
非常に助かりました。
elliptic による投稿:
コマンドファイル: /usr/bin/gnome-disks
英語アイコン名: Disks
日本語アイコン名: ディスク
です。 disk という名ではありません。
確認しました。
Ubuntu Software で GNOME Disks と出ます。
elliptic による投稿:
実際にリストアまで実行してみましたか?
書き込み開始位置の指定は skip= ではなく seek= です。
申し訳ありません、重要なところで確認を飛ばしていました。
※ディスク先頭側は
ディスク先頭からの読み書きですので
こちらは if と of を逆にするだけで可能です。
実際に修復例あり。
# 検査不正問題とか、ひとごとではない気もする
elliptic による投稿:
GPTを保存/復元するためのコマンドもあります。
あるのですね…
考えてみれば、あるのでしょうけれど、
この情報までたどりつけませんでした。
オフライン