【備忘録】Windows PE上のdiskpartでNVMe SSDが表示されずブートローダの修復ができない場合の対処
・きっかけ
プライムデーで買ったkioxia exeria g2 ssd-ck1.0n3g2という1TBのNVMeを手持ちのASUS TUF Dash F15というゲーミングノートに入れようとしたときにトラブった。
クローンディスクを作るところまでは良かったのだが、容量を512GB→1TBに拡張した関係かブートローダーがおかしくなり、BSoDで起動しなくなってしまった。
ここまではよくある話だと思う。問題は次で、ブートローダーを直そうと思い回復メディアを作成し起動する。diskpartを起動するとあるハズのヤツがいない...
そう、SSDがdiskpart上にいないのである。(UEFI上にはいる、セキュアブートのオンオフは試してある、list disk list volume共に認識なし)
そんなこんなでハマったので対処を...
・対症療法
ぶっちゃけ根本的には解決できていない。どうやらkioxiaのNVMe SSDとTigerlake(mobile)のプラットフォームに相性問題があるとかないとかで解決は難しいみたい
Question - NVMe SSD not appearing on Diskpart | Tom's Hardware Forum
そこでたまたまサブ機としてAMD環境があったため、そのマザーにブッ刺して、回復メディアを起動するとあっさりSSDを認識、bootrecじゃ治らなかったのでbcdboot D:¥Windows /l ja-jpをしてブートローダを生成することで解決した
OSが入ってるSSDが他にも入ってるとbootrecも打てないので注意が必要である
以上対症療法
環境:
ASUS TUF DASH F15
CPU:Core i5 11300h
GPU:RTX3060
SSD:KIOXIA EXERIA G2 SSD-CK1.0N3G2
ブッ刺した方
自作機
CPU:Ryzen5 5500
GPU:RX5700
マザー:MSI MAG MORTAR B550
【自作erのタオバオ放浪記】MicroATX最小サイズのケースでつよつよPCを作る Part1
~旅の始まり~
先月、フラッと寄ったパソコン工房で見てしまった。ヤツを...
MSI RTX3070ti Ventus 3x
安かった。いやホントは安くないが、新しいグラボを渇望していた私にとっては些細なことであった...
というわけでRTX3070tiを衝動買いしてしまいました。ボーナス先借り、頑張れ来月の俺!
そんなわけで今あるRadeon RX5700が余ってしまいました(いつかの某仮想通貨の暴落時に拾ったヤツ、マイニング最盛期に売っとけとか言わない)
でも僕は手持ちの物は出来るだけ売りたくない主義の人なのでなんとか利活用しようと思いました
てわけで本題の小型PC作成と自戒を込めた備忘録を綴っていきます
構成編
差し当たって、余りグラボと余りストレージとトチ狂ってポチったメモリに組み合わせるので、そんなに予算がありません(泣)
しかし、つよつよpcを作りたいので妥協はしたくない...
あとついでに頻繫に移動するので持ち運びたい...
結果CPUは
AMD Ryzen™ 5 5500 | AMD (L3キャッシュ削られてるのにとか情弱とか言わない)
に決まりました。ちなみに¥20500くらいでした。今¥19800で買えるやんけ...
いや、Alderlakeと悩んだけどワッパとかほらさ...
Zen3使いたいじゃん...?(実際はLGA1700板の高さにビビっただけ)
さて、こうなってくると半自動的にマザーボードが決まってきます
最安値!!¥5980でした
あとは流用品とOSです(GAMVIO産Windows)
流用品は
PowerColor(ドライバ苦労玄人志向) Radeon RX5700
Sk Hynix KLEVV CARS M.2 SSD
KingFast 240GB SSD(いつかの王族)
Vulcan z 4000MHz
BTOについてたEnhanceの600W電源です
ここで一つの問題が生じます
小さくてMicroATXサイズのケースがない!!
微妙にデカいMicroATXのケースかMiniITXのケースしかありませんでした...
(そりゃそんな中途半端なもんないわな...小ささ求めるのかどっちなんだい...!)
いよいよ本題、タオバオ放浪記です
~タオバオ放浪編~
皆様はタオバオを利用されたことがあるでしょうか?
僕はビビりなもので中華通販というとAliexpressかBanggoodくらいしか使ったことなかったです。
とはいえ国内をどれだけネットサーフィンしようと出てこないプロダクトが国内に転がってるわけもなく...
アリエクさまよってたら見つけました
FlexATXの横に魅せるためではなくスペースのためにグラボを立てるイか(れた)すケース!
しかもMicroATXがちゃんと載る...もうこれしかない!
そこで第一の関門にぶち当たります。アリエクにあるっちゃあるけど微妙に高い上に評価がほぼない!!
アリエクの星5一件とか怖くない??????
画像に写ってる金額に盛りすぎじゃない????
(表示:299元なのに¥7600)
と送料をガン無視した僕は考えました
タオバオに落ちてるんじゃないかと
そこで第二の関門にぶち当たります
タオバオの情報があるようで無い!
どこのサイトもやれ輸入ビジネスだの購入代理サイトへの誘導だので全然役に立たなかったです...(情弱)
断片的に散らばった情報を拾いながらなんとか登録しました。
ちなみに登録の流れはタオバオアプリで登録→電話番号認証まで済ませてからpcサイトのQRコードでログインするスタイルがオススメです(パスワード作ってないのにパスワード要求されて????ってなってたが、QRでログインできると気付いたというか書いてあった)
あとはノリと勢いとGoogle画像翻訳でなんとかなります
この辺は気が向いたら現行版で詳しく書きます
続きはそのうち...
【備忘録】TkinterとPygameで簡素な音楽プレイヤーを作る
初めまして、Zaforiaと申します。
新社会人だったりします
独学&プログラミング歴数か月のガチ初心者です
諸事情で二ヶ月のネット断食を強いられて自分で作ったプログラムを忘れそうだったのでここに残していこうと思います。
ついでにはじめてgithubにも入れたので公開しておきます
Python 3.8環境です
3.8で追加されたformat構文 f'{var}' を使ってるのでこれ以下のバージョンだと動かない可能性があります
今日は書ききれなかったのでブログはぼちぼち更新していきます...
1.使ったライブラリとか
選定理由はGUI入門でTkinterが作りやすそうだったのとPygameは再生と一時停止の関数があるから
pydubは再生時間の取得のために使いました
import os import sys import tkinter as tk import tkinter.filedialog from tkinter import Text import itertools import threading import pickle import glob import pygame from pydub import AudioSegment import random #__line__ import re import tempfile import shutil #/__line__ import subprocess from subprocess import PIPE
2.再生時間の処理とか
結構苦戦しました。Tkinterのroot.afterの機能を使って125ms間隔で関数を無限に実行、別のスレッドで再生状態の監視をやってリセットしたりの処理をやってます。
class clock: def __init__(self, root): self.root = root self.time_start = 0 self.min = 0 self.flag = 0 self.pause_flag = 0 self.zeroflag = 0 def time_counter(self): #self.a = threading.Thread(target=self.update) #self.a.start() if self.zeroflag == 0 and self.pause_flag == 0: self.time_start = 0 self.zeroflag = 1 if self.pause_flag == 0 and self.zeroflag == 1: self.msintimer += 1 if self.pause_flag == 0 and self.zeroflag == 1 and self.msintimer >= 8: self.msintimer = 0 self.time_start += 1 if self.time_start >= 60 and self.pause_flag == 0: self.min += 1 self.time_start = 0 elif self.pause_flag == 1: self.stop() self.pause_flag = 0 if pygame.mixer.get_busy: self.id = self.root.after(125, self.time_counter) self.update() def update(self): if self.flag == 1: sound = AudioSegment.from_file(self.entries[self.boxes]) rate = sound.frame_rate pygame.mixer.init(frequency = rate) z = pygame.mixer.Sound(self.entries[self.boxes]) self.z = z.get_length() #if self.time_start + self.min * 60 > self.z + 1: #if var.get() >= 1 : #self.reset(self.mes, self.listbox, self.entries, self.boxes) #else: #self.root.after_cancel(self.id) #self.reset(self.mes, self.listbox, self.entries, self.boxes) self.mes.configure(text=f'{str(self.min).zfill(2)}:{str(self.time_start).zfill(2)}') def reset(self, mes, listbox, entries, boxes): self.zeroflag = 0 self.time_start = 0 self.min = 0 self.msintimer = 0 self.mes = mes self.listbox = listbox self.entries = entries self.boxes = boxes if self.flag == 0: self.flag = 1 else: self.root.after_cancel(self.id) self.time_counter() def pause(self): self.nowmin = self.min self.nowtime = self.time_start self.nowmsintimer = self.msintimer self.root.after_cancel(self.id) def unpause(self): self.pause_flag = 1 self.min = self.nowmin self.time_start = self.nowtime self.msintimer = self.nowmsintimer self.time_counter() def stop(self): self.root.after_cancel(self.id)